estructura de CMSG_CONTENT_ENCRYPT_INFO (wincrypt.h)
La estructura de CMSG_CONTENT_ENCRYPT_INFO contiene información compartida entre las funciones de PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE y PFN_CMSG_EXPORT_MAIL_LIST usadas para el cifrado y exportación de una clave de cifrado de contenido, que se puede instalar mediante una API de criptografía: identificador de objeto de próxima generación (CNG).
Sintaxis
typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
DWORD cbSize;
HCRYPTPROV_LEGACY hCryptProv;
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
void *pvEncryptionAuxInfo;
DWORD cRecipients;
PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
PFN_CMSG_ALLOC pfnAlloc;
PFN_CMSG_FREE pfnFree;
DWORD dwEncryptFlags;
union {
HCRYPTKEY hContentEncryptKey;
BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
} DUMMYUNIONNAME;
DWORD dwFlags;
BOOL fCNG;
BYTE *pbCNGContentEncryptKeyObject;
BYTE *pbContentEncryptKey;
DWORD cbContentEncryptKey;
} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;
Miembros
cbSize
Tamaño, en bytes, de esta estructura.
hCryptProv
Identificador de un proveedor de servicios criptográficos (CSP). Si el miembro fCNG es FALSE y el miembro hCryptProv es NULL tras la entrada, la función de devolución de llamada debe actualizar hCryptProv . Si se adquiere un proveedor que debe liberarse, el CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG debe establecerse en el miembro dwFlags .
ContentEncryptionAlgorithm
Estructura de CRYPT_ALGORITHM_IDENTIFIER que especifica el algoritmo utilizado para cifrar la clave. Si la función de devolución de llamada actualiza el miembro pszObjId o el miembro Parameters de la estructura CRYPT_ALGORITHM_IDENTIFIER , establezca el valor adecuado en el miembro dwFlags . Debe asignar y liberar memoria para estos valores mediante los miembros pfnAlloc y pfnFree .
pvEncryptionAuxInfo
Puntero a una estructura que depende del algoritmo de cifrado. En la tabla siguiente se enumeran los posibles identificadores de algoritmo y el contenido del miembro correspondiente.
Valor | Significado |
---|---|
|
|
|
Para todos los demás algoritmos de cifrado, este valor es NULL.
cRecipients
Valor que especifica el número de destinatarios de un mensaje.
rgCmsRecipients
Puntero a una matriz de estructuras de CMSG_RECIPIENT_ENCODE_INFO que contienen la información del destinatario del mensaje.
pfnAlloc
Puntero a una función instalable que se usa para asignar memoria para un miembro actualizado.
pfnFree
Puntero a una función instalable usada para liberar memoria asignada por pfnAlloc.
dwEncryptFlags
Valor que indica si la salida codificada debe rellenarse con ceros para obtener una longitud máxima coherente necesaria para el streaming de longitud definitiva en las funciones CryptMsgCalculateEncodedLength o CryptMsgOpenToEncode .
CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)
DUMMYUNIONNAME
DUMMYUNIONNAME.hContentEncryptKey
Identificador de la clave de cifrado de contenido cuando el miembro fCNG es FALSE.
DUMMYUNIONNAME.hCNGContentEncryptKey
Identificador de la clave de cifrado de contenido cuando el miembro fCNG es TRUE.
dwFlags
Valor que indica si la memoria debe liberarse para los miembros hCryptProv o ContentEncryptionAlgorithm .
Valor | Significado |
---|---|
|
Establezca si la función de devolución de llamada actualiza el miembro Parameters de la estructura CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm . |
|
Establezca si la función de devolución de llamada actualiza el miembro pszObjId de la estructura de CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm . |
|
Establezca si la función de devolución de llamada adquiere un miembro hCryptProv que se debe liberar. |
fCNG
Valor que indica si se va a usar un proveedor cryptography API: Next Generation (CNG) para generar la clave de cifrado de contenido.
Si el miembro fCNG es FALSE, se llama a la función CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC para actualizar el miembro hContentEncryptKey .
Si el miembro fCNG es TRUE, se llama a la función CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC para actualizar los miembros hCNGContentEncryptKey y cbContentEncryptKey , y los miembros pbCNGContentEncryptKeyObject y pbContentEncryptKey deben estar asignados por el miembro pfnAlloc . Libere y libere la clave de cifrado de contenido mediante una llamada a la función CryptMsgClose .
pbCNGContentEncryptKeyObject
Puntero al búfer que contiene la clave de cifrado de contenido CNG.
pbContentEncryptKey
Puntero al búfer que contiene una clave de cifrado de contenido CAPI1.
cbContentEncryptKey
Tamaño, en bytes, del miembro pbCNGContentEncryptKeyObject o pbContentEncryptKey según el valor del miembro fCNG .
Comentarios
Cuando se llama con el parámetro dwMsgType establecido en CMSG_ENVELOPED, la función CryptMsgOpenToEncode inicializa la estructura CMSG_CONTENT_ENCRYPT_INFO de la estructura CMSG_ENVELOPED_ENCODE_INFO .
Si la estructura de CMSG_ENVELOPED_ENCODE_INFO usa el miembro rgpRecipients en lugar del miembro rgCmsRecipients , la función CryptMsgOpenToEncode convierte las estructuras miembro rgpRecipients en estructuras CMSG_RECIPIENT_ENCODE_INFO para el miembro rgCmsRecipients de la estructura CMSG_CONTENT_ENCRYPT_INFO .
Cuando el miembro fCNG es FALSE, los siguientes miembros se pueden cambiar en la estructura CMSG_CONTENT_ENCRYPT_INFO :
- hContentEncryptKey
- hCryptProv
- Miembro pszObjId de la estructura CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm
- Miembro Parameters de la estructura CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm
- dwFlags
Cuando el miembro fCNG es TRUE, los siguientes miembros se pueden cambiar en la estructura de CMSG_CONTENT_ENCRYPT_INFO :
- hCNGContentEncryptKey
- pbCNGContentEncryptKeyObject
- pbContentEncryptKey
- cbContentEncryptKey
- Miembro pszObjId de la estructura CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm
- Miembro Parameters de la estructura CRYPT_ALGORITHM_IDENTIFIER a la que hace referencia el miembro ContentEncryptionAlgorithm
- dwFlags
Los miembros siguientes son de solo lectura:
- cbSize
- pvEncryptionAuxInfo
- cRecipients
- rgCmsRecipients
- pfnAlloc
- pfnFree
- dwEncryptFlags
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 |