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.
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 |