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
AT_KEYEXCHANGE
Claves usadas para cifrar o descifrar claves de sesión.
AT_SIGNATURE
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

Consulte también

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign