estructura CMSG_ENVELOPED_ENCODE_INFO (wincrypt.h)

La estructura CMSG_ENVELOPED_ENCODE_INFO contiene información necesaria para codificar un mensaje sobre. Se pasa a CryptMsgOpenToEncode si el parámetro dwMsgType es CMSG_ENVELOPED.

Sintaxis

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCERT_INFO                  *rgpRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  DWORD                       cCertEncoded;
  PCERT_BLOB                  rgCertEncoded;
  DWORD                       cCrlEncoded;
  PCRL_BLOB                   rgCrlEncoded;
  DWORD                       cAttrCertEncoded;
  PCERT_BLOB                  rgAttrCertEncoded;
  DWORD                       cUnprotectedAttr;
  PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

Miembros

cbSize

Tamaño, en bytes, de esta estructura.

hCryptProv

Este miembro no se usa y debe establecerse en NULL.

Windows Server 2003 y Windows XP: Especifica un identificador para el proveedor de servicios criptográficos (CSP) que se usa para realizar el cifrado de contenido, el cifrado de clave de destinatario y la exportación. No se usan las claves privadas de hCryptProv .

El tipo de datos de este miembro es HCRYPTPROV.

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.

ContentEncryptionAlgorithm

Estructura CRYPT_ALGORITHM_IDENTIFIER que contiene el tipo de algoritmo de firma y los parámetros adicionales asociados en formato codificado.

El miembro pszObjId de la estructura especifica el algoritmo utilizado para cifrar el contenido del mensaje.

Los siguientes algoritmos de cifrado requieren un vector de inicialización de ocho bytes codificado (IV) en el miembro Parameters de la estructura. Para más información, consulte CryptSetKeyParam.

Valor Significado
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Si el miembro cbData del miembro Parameters es cero, se genera una cadena OCTET codificada con notación de sintaxis abstracta ( ASN.1) que contiene el IV mediante CryptGenRandom.

El algoritmo de szOID_RSA_RC2CBC (CALG_RC2) requiere que el miembro pbData de Parameters sea una estructura de CRYPT_RC2_CBC_PARAMETERS codificada. Si el miembro cbData del miembro Parameters es cero, se genera un CRYPT_RC2_CBC_PARAMETERS codificado ASN.1 con un valor predeterminado de 40 para el miembro dwVersion . Esto establece la longitud de clave predeterminada en 40 bits. Esta longitud de clave predeterminada se puede invalidar con pvEncryptionAuxInfo que apunta a una estructura de CMSG_RC2_AUX_INFO que contiene la longitud de clave deseada.

Nota En el descifrado, si existe un IV, se llama a CryptSetKeyParam con el IV antes de que comience el descifrado.
 

pvEncryptionAuxInfo

Puntero a una estructura en función del algoritmo de cifrado.

Valor Significado
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 o compatible

CMSG_SP3_COMPATIBLE_AUX_INFO

Todos los demás algoritmos de cifrado
NULL

cRecipients

Número de elementos de la matriz rgpRecipients o rgCmsRecipients .

rgpRecipients

Matriz de punteros para CERT_INFO estructuras, cada una que contiene el emisor de certificados de un destinatario, SerialNumber y SubjectPublicKeyInfo. Esta matriz solo se puede usar para los destinatarios identificados por el emisor y el número de serie. Si rgpRecipients no es NULL, rgCmsRecipients debe ser NULL.

rgCmsRecipients

Opcional. Matriz de punteros a CMSG_RECIPIENT_ENCODE_INFO estructuras que contienen información del destinatario. Si rgCmsRecipients no es NULL, rgpRecipients debe ser NULL. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

cCertEncoded

Opcional. Valor DWORD que indica el número de certificados codificados en la matriz rgCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

rgCertEncoded

Opcional. Matriz de estructuras de CERT_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

cCrlEncoded

Opcional. Valor DWORD que indica el número de listas de revocación de certificados codificadas (CRL) en la matriz rgCRLEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

rgCrlEncoded

Opcional. Matriz de estructuras de CRL_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

cAttrCertEncoded

Opcional. Valor DWORD que indica el número de atributos de certificado codificados en la matriz rgAttrCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

rgAttrCertEncoded

Opcional. Matriz de estructuras de CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este miembro.

cUnprotectedAttr

Opcional. Valor DWORD que indica el número de atributos no protegidos en la matriz rgUnprotectedAttr . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

rgUnprotectedAttr

Opcional. Matriz de estructuras de CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS debe definirse para hacer referencia a este campo.

Requisitos

   
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

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER