Compartilhar via


estrutura CRYPT_ENCRYPT_MESSAGE_PARA (wincrypt.h)

A estrutura CRYPT_ENCRYPT_MESSAGE_PARA contém informações usadas para criptografar mensagens.

Sintaxe

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  HCRYPTPROV_LEGACY          hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  void                       *pvEncryptionAuxInfo;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

Membros

cbSize

O tamanho, em bytes, dessa estrutura.

dwMsgEncodingType

O tipo de codificação usado. É 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

hCryptProv

Esse membro não é usado e deve ser definido como NULL.

Windows Server 2003 e Windows XP: O identificador para o provedor de serviços criptográficos (CSP) a ser usado para criptografia. O CSP identificado por hCryptProv é usado para fazer criptografia de conteúdo, criptografia de chave de destinatário e exportação de chave de destinatário. Sua chave privada não é usada.

A menos que haja um motivo forte para passar um provedor criptográfico específico no hCryptProv, passe zero para usar o provedor RSA ou DSS padrão.

O tipo de dados desse membro é HCRYPTPROV.

ContentEncryptionAlgorithm

Uma estrutura CRYPT_ALGORITHM_IDENTIFIER que contém o OID ( identificador de objeto ) do algoritmo de criptografia a ser usado. O CSP especificado pelo hCryptProv deve dar suporte a esse algoritmo de criptografia.

Os algoritmos de criptografia szOID_OIWSEC_desCBC (CALG_DES) e szOID_RSA_DES_EDE3_CBC (CALG_3DES) exigem que o membro Parameters dessa estrutura contenha um IV (vetor de inicialização de oito bytes) codificado. Se o membro cbData do membro Parameters for zero, uma CADEIA DE CARACTERES OCTET codificada em ASN.1 ( Sintaxe Abstrata Um ) que contém o IV será gerada usando CryptGenRandom. Para obter mais informações sobre o parâmetro KP_IV, consulte CryptSetKeyParam.

Os algoritmos de criptografia szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM, 128 bits), szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM, 192 bits) e szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM, 256 bits) exigem que o membro Parameters dessa estrutura contenha um IV (vetor de inicialização de dezesseis bytes) codificado. Se o membro cbData do membro Parameters for zero, será gerado um OCTET STRING codificado em ASN.1 (Abstract Syntax Notation One ) que contém o IV.

O algoritmo szOID_RSA_RC2CBC (CALG_RC2) requer que o membro pbData do membro Parameters dessa estrutura seja uma estrutura CRYPT_RC2_CBC_PARAMETERS . Se o membro cbData do membro Parameters for zero, uma estrutura de CRYPT_RC2_CBC_PARAMETERS codificada em ASN.1 que contém o IV será gerada como o membro pbData . Esse pbData gerado usa o dwVersion padrão que corresponde ao comprimento da chave de 40 bits. Para substituir o comprimento padrão da chave de 40 bits, pvEncryptionAuxInfo pode ser definido para apontar para uma estrutura de CMSG_RC2_AUX_INFO que contém um comprimento de bit de chave.

Nota Quando uma mensagem é descriptografada, se ela tiver um parâmetro de vetor de inicialização , as funções de mensagem criptográfica chamam CryptSetKeyParam com o vetor de inicialização antes de descriptografar.
 

pvEncryptionAuxInfo

Um ponteiro para uma estrutura de CMSG_RC2_AUX_INFO para criptografia RC2 ou uma estrutura CMSG_SP3_COMPATIBLE_AUX_INFO para criptografia compatível com SP3. Para outra criptografia compatível com RC2 ou SP3, esse membro deve ser definido como NULL.

Se o membro ContentEncryptionAlgorithm contiver szOID_RSA_RC4, esse membro apontará para uma estrutura CMSG_RC4_AUX_INFO que especifica o número de bytes de sal a serem incluídos.

dwFlags

Normalmente definido como zero. No entanto, se a saída codificada for um CMSG_ENVELOPED conteúdo interno de uma mensagem criptográfica externa, como uma mensagem CMSG_SIGNED, o CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG deverá ser definido. Se não estiver definido, o conteúdo será codificado 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 antes de criptografar.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG pode ser definido para identificar os destinatários pelo Identificador de Chave e não pelo Emissor e pelo Número de Série.

dwInnerContentType

Normalmente definido como zero. O membro dwInnerContentType deve ser definido para definir os tipos de mensagem criptográfica se a entrada a ser criptografada for a saída codificada de outra mensagem criptográfica, como CMSG_SIGNED.

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

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage