estructura CRYPT_ENCRYPT_MESSAGE_PARA (wincrypt.h)

La estructura de CRYPT_ENCRYPT_MESSAGE_PARA contiene información utilizada para cifrar los mensajes.

Sintaxis

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;

Miembros

cbSize

Tamaño, en bytes, de esta estructura.

dwMsgEncodingType

Tipo de codificación usada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes al combinarlos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Los tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

hCryptProv

Este miembro no se usa y debe establecerse en NULL.

Windows Server 2003 y Windows XP: Identificador del proveedor de servicios criptográficos (CSP) que se va a usar para el cifrado. El CSP identificado por hCryptProv se usa para realizar el cifrado de contenido, el cifrado de clave de destinatario y la exportación de claves de destinatario. No se usa su clave privada.

A menos que haya un motivo seguro para pasar un proveedor criptográfico específico en hCryptProv, pase cero para usar el proveedor RSA o DSS predeterminado.

El tipo de datos de este miembro es HCRYPTPROV.

ContentEncryptionAlgorithm

Estructura CRYPT_ALGORITHM_IDENTIFIER que contiene el identificador de objeto (OID) del algoritmo de cifrado que se va a usar. El CSP especificado por hCryptProv debe admitir este algoritmo de cifrado.

Los algoritmos de cifrado de szOID_OIWSEC_desCBC (CALG_DES) y szOID_RSA_DES_EDE3_CBC (CALG_3DES) requieren que el miembro Parameters de esta estructura contenga un vector de inicialización de ocho bytes codificado (IV). Si el miembro cbData del miembro Parameters es cero, se genera una cadena OCTET codificada con CryptGenRandom con notación abstracta de sintaxis uno (ASN.1). Para obtener más información sobre el parámetro KP_IV, vea CryptSetKeyParam.

Los algoritmos de cifrado de szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM, 128 bits), szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM, 192 bits) y szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM, 256 bits) requieren que el miembro Parameters de esta estructura contenga un vector de inicialización de dieciséis bytes codificado (IV). Si el miembro cbData del miembro Parameters es cero, se genera una cadena OCTET codificada con la sintaxis abstracta Uno (ASN.1) que contiene el IV.

El algoritmo szOID_RSA_RC2CBC (CALG_RC2) requiere que el miembro pbData del miembro Parameters de esta estructura sea una estructura de CRYPT_RC2_CBC_PARAMETERS . Si el miembro cbData del miembro Parameters es cero, se genera una estructura de CRYPT_RC2_CBC_PARAMETERS codificada por ASN.1 que contiene el IV como miembro pbData . Este pbData generado usa el dwVersion predeterminado que corresponde a la longitud de la clave de 40 bits. Para invalidar la longitud predeterminada de la clave de 40 bits, pvEncryptionAuxInfo se puede establecer para que apunte a una estructura de CMSG_RC2_AUX_INFO que contenga una longitud de bits de clave.

Nota Cuando se descifra un mensaje, si tiene un parámetro de vector de inicialización , las funciones de mensaje criptográfico llaman a CryptSetKeyParam con el vector de inicialización antes de descifrarlo.
 

pvEncryptionAuxInfo

Puntero a una estructura de CMSG_RC2_AUX_INFO para el cifrado RC2 o una estructura de CMSG_SP3_COMPATIBLE_AUX_INFO para el cifrado compatible con SP3. Para el cifrado compatible con RC2 o SP3, este miembro debe establecerse en NULL.

Si el miembro ContentEncryptionAlgorithm contiene szOID_RSA_RC4, este miembro apunta a una estructura CMSG_RC4_AUX_INFO que especifica el número de bytes de sal que se van a incluir.

dwFlags

Normalmente se establece en cero. Sin embargo, si la salida codificada debe ser un CMSG_ENVELOPED contenido interno de un mensaje criptográfico externo, como un mensaje de CMSG_SIGNED, se debe establecer el CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG. Si no se establece, el contenido se codificará como un tipo de contenido interno de CMSG_DATA.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG se puede establecer para encapsular contenido interno que no sea de datos dentro de una CADENA OCTET antes de cifrar.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG se puede establecer para identificar a los destinatarios por su identificador de clave y no por su emisor y su número de serie.

dwInnerContentType

Normalmente se establece en cero. El miembro dwInnerContentType debe establecerse para establecer los tipos de mensaje criptográfico si la entrada que se va a cifrar es la salida codificada de otro mensaje criptográfico, como CMSG_SIGNED.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado wincrypt.h

Consulte también

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage