estructura CMSG_SIGNER_ENCODE_INFO (wincrypt.h)
La estructura CMSG_SIGNER_ENCODE_INFO contiene información del firmante. Se pasa a CryptMsgCountersign, CryptMsgCountersignEncoded y, opcionalmente, a CryptMsgOpenToEncode como miembro de la estructura CMSG_SIGNED_ENCODE_INFO , si el parámetro dwMsgType es CMSG_SIGNED.
Sintaxis
typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize;
PCERT_INFO pCertInfo;
union {
HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey;
BCRYPT_KEY_HANDLE hBCryptKey;
} DUMMYUNIONNAME;
DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
CERT_ID SignerId;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
Miembros
cbSize
Tamaño, en bytes, de esta estructura.
pCertInfo
Puntero a una estructura de CERT_INFO que contiene
Miembros Issuer, SerialNumber y SubjectPublicKeyInfo .
Los miembros pbData de las estructuras Issuer y SerialNumber combinadas identifican de forma única un certificado. El miembro Algorithm de la estructura SubjectPublicKeyInfo especifica el algoritmo de cifrado hash utilizado.
DUMMYUNIONNAME
DUMMYUNIONNAME.hCryptProv
Identificador del proveedor de servicios criptográficos (CSP). Si HashEncryptionAlgorithm está establecido en szOID_PKIX_NO_SIGNATURE, este identificador puede ser el identificador de un CSP adquirido mediante el parámetro dwFlags establecido en CRYPT_VERIFYCONTEXT. Se llama a la función NCryptIsKeyHandle de CNG para determinar la elección de unión.
DUMMYUNIONNAME.hNCryptKey
Identificador del CSP de CNG. Se llama a la función NCryptIsKeyHandle de CNG para determinar la elección de unión. Los nuevos algoritmos de cifrado solo se admiten en las funciones de CNG. Se llamará a la función NCryptTranslateHandle de CNG para convertir la opción CryptoAPI hCryptProv cuando sea necesario. Se recomienda que las aplicaciones pasen, al miembro hNCryptKey , el identificador de CSP de CNG que se devuelve de la función NCryptOpenKey .
DUMMYUNIONNAME.hBCryptKey
dwKeySpec
Especifica la clave privada que se va a usar. Este miembro no se usa cuando se usa el miembro hNCryptKey .
Si dwKeySpec es cero, se usa el valor de AT_KEYEXCHANGE predeterminado.
Los siguientes valores dwKeySpec se definen para el proveedor predeterminado.
Valor | Significado |
---|---|
|
Claves usadas para cifrar o descifrar claves de sesión. |
|
Claves usadas para crear y comprobar firmas digitales. |
HashAlgorithm
Estructura CRYPT_ALGORITHM_IDENTIFIER que especifica el algoritmo hash.
pvHashAuxInfo
No se usa. Este miembro debe establecerse en NULL.
cAuthAttr
Número de elementos de la matriz rgAuthAttr . Si no hay atributos autenticados en rgAuthAttr, cAuthAttr es cero.
rgAuthAttr
Matriz de punteros a CRYPT_ATTRIBUTE estructuras, cada una de las cuales contiene información de atributo autenticada.
El estándar PKCS #9 dicta que, si hay algún atributo, debe haber al menos dos: el identificador de objeto de tipo de contenido (OID) y el hash del mensaje. El sistema agrega automáticamente estos atributos.
cUnauthAttr
Número de elementos de la matriz rgUnauthAttr . Si no hay atributos no autenticados, cUnauthAttr es cero.
rgUnauthAttr
Matriz de punteros a CRYPT_ATTRIBUTE estructuras, cada una de las cuales contiene información de atributo no autenticada. Los atributos no autenticados pueden contener contrafirmas, entre otros usos.
SignerId
Estructura CERT_ID que contiene un identificador único del certificado del firmante. Este miembro se puede usar opcionalmente con PKCS #7 con sintaxis de mensajes criptográficos (CMS). Si este miembro no es NULL y su miembro dwIdChoice no es cero, se usa para identificar el certificado en lugar de los miembros Issuer y SerialNumber de la estructura CERT_INFO a la que apunta pCertInfo. CMS admite las estructuras de KEY_IDENTIFIER y ISSUER_SERIAL_NUMBER CERT_ID. PKCS versión 1.5 solo admite la opción ISSUER_SERIAL_NUMBER CERT_ID. Este miembro se usa con CMS para el procesamiento de PKCS #7 y solo se puede usar si se define CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
HashEncryptionAlgorithm
Una estructura de CRYPT_ALGORITHM_IDENTIFIER se usa opcionalmente con PKCS #7 con CMS. Si este miembro no es NULL, se usa el algoritmo identificado en lugar del algoritmo SubjectPublicKeyInfo.Algorithm. Si este miembro se establece en szOID_PKIX_NO_SIGNATURE, el valor de firma solo contiene los octetos hash.
Para RSA, el algoritmo de cifrado hash suele ser el mismo que el algoritmo de clave pública. Para DSA, el algoritmo de cifrado hash es normalmente un algoritmo de firma DSS.
Este miembro se usa con CMS para el procesamiento de PKCS #7 y solo se puede usar si se define CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
pvHashEncryptionAuxInfo
Este miembro no se usa. Este miembro debe establecerse en NULL si está presente en la estructura de datos. Este miembro solo está presente si se define CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
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 |