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

Confira também

CERT_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage