estrutura CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)
A estrutura CRYPT_SIGN_MESSAGE_PARA contém informações para assinar mensagens usando um contexto de certificado de autenticação especificado.
Sintaxe
typedef struct _CRYPT_SIGN_MESSAGE_PARA {
DWORD cbSize;
DWORD dwMsgEncodingType;
PCCERT_CONTEXT pSigningCert;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cMsgCert;
PCCERT_CONTEXT *rgpMsgCert;
DWORD cMsgCrl;
PCCRL_CONTEXT *rgpMsgCrl;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
DWORD dwFlags;
DWORD dwInnerContentType;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
Membros
cbSize
Tamanho dessa estrutura em bytes.
dwMsgEncodingType
Tipo de codificação usada. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
Os tipos de codificação definidos no momento são:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
pSigningCert
Um ponteiro para o CERT_CONTEXT a ser usado na assinatura.
A propriedade CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID deve ser definida para que o contexto forneça acesso à chave de assinatura privada.
HashAlgorithm
CRYPT_ALGORITHM_IDENTIFIER que contém o algoritmo de hash usado para fazer hash dos dados a serem assinados.
pvHashAuxInfo
Não usado no momento e deve ser definido como NULL.
cMsgCert
Número de elementos na matriz rgpMsgCert de estruturas CERT_CONTEXT . Se definido como zero, nenhum certificado será incluído na mensagem assinada.
rgpMsgCert
Matriz de ponteiros para CERT_CONTEXT estruturas a serem incluídas na mensagem assinada. Se o pSigningCert deve ser incluído, um ponteiro para ele deve estar na matriz rgpMsgCert .
cMsgCrl
Número de elementos na matriz rgpMsgCrl de ponteiros para CRL_CONTEXT estruturas. Se definido como zero, nenhuma estrutura de CRL_CONTEXT será incluída na mensagem assinada.
rgpMsgCrl
Matriz de ponteiros para CRL_CONTEXT estruturas a serem incluídas na mensagem assinada.
cAuthAttr
Número de elementos na matriz rgAuthAttr . Se nenhum atributo autenticado estiver presente em rgAuthAttr, esse membro será definido como zero.
rgAuthAttr
Matriz de ponteiros para estruturas de CRYPT_ATTRIBUTE , cada uma contendo informações de atributo autenticado. Se houver atributos autenticados presentes, o padrão PKCS nº 9 determina que deve haver pelo menos dois atributos presentes, o OID ( identificador de objeto de tipo de conteúdo) e o hash da própria mensagem. Esses atributos são adicionados automaticamente pelo sistema.
cUnauthAttr
Número de elementos na matriz rgUnauthAttr . Se nenhum atributo não autenticado estiver presente em rgUnauthAttr, esse membro será zero.
rgUnauthAttr
Matriz de ponteiros para estruturas CRYPT_ATTRIBUTE cada uma contendo informações de atributo não autenticadas. Atributos não autenticados podem ser usados para conter contra-atribuições, entre outros usos.
dwFlags
Normalmente zero. Se a saída codificada for um CMSG_SIGNED conteúdo interno de uma mensagem criptográfica externa, como uma mensagem de CMSG_ENVELOPED, o CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG deverá ser definido. Se não estiver definido, a mensagem será codificada como um tipo de conteúdo interno de CMSG_DATA.
CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG pode ser definido para encapsular conteúdo interno que não seja de dados em uma CADEIA DE CARACTERES OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG pode ser definido para identificar os signatários pelo Identificador de Chave e não pelo Emissor e pelo Número de Série.
CRYPT_MESSAGE_SILENT_KEYSET_FLAG pode ser definido para suprimir qualquer interface do usuário pelo CSP. Para obter mais informações sobre o sinalizador CRYPT_SILENT, consulte CryptAcquireContext.
dwInnerContentType
Normalmente zero. Defina como o tipo de codificação da mensagem de entrada se essa entrada a ser assinada for a saída codificada de outra mensagem criptográfica.
HashEncryptionAlgorithm
Um CRYPT_ALGORITHM_IDENTIFIER. Se estiver presente e não FOR NULL, ele será usado em vez do certificado do signatário membro PublicKeyInfo.Algorithm . Observe que, para a RSA, o algoritmo de criptografia de hash normalmente é o mesmo que o algoritmo de chave pública. Para DSA, o algoritmo de criptografia de hash normalmente é um algoritmo de assinatura DSS. Esse membro só poderá ser usado se CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS estiver definido.
pvHashEncryptionAuxInfo
Atualmente, não é usado e deve ser definido como NULL. Esse membro só poderá ser usado se CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS estiver definido.
Comentários
Os membros HashEncryptionAlgorithm e pvHashEncryptionAuxInfo só poderão ser usados se CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS estiver definido.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | wincrypt.h |