Compartir a través de


estructura CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)

La estructura CRYPT_SIGN_MESSAGE_PARA contiene información para firmar mensajes mediante un contexto de certificado de firma especificado.

Sintaxis

typedef struct _CRYPT_SIGN_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  PCCERT_CONTEXT             pSigningCert;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cMsgCert;
  PCCERT_CONTEXT             *rgpMsgCert;
  DWORD                      cMsgCrl;
  PCCRL_CONTEXT              *rgpMsgCrl;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

Miembros

cbSize

Tamaño de esta estructura en bytes.

dwMsgEncodingType

Tipo de codificación usada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes mediante su combinación 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

pSigningCert

Puntero al CERT_CONTEXT que se va a usar en la firma.

La propiedad CERT_KEY_PROV_INFO_PROP_ID o CERT_KEY_CONTEXT_PROP_ID debe establecerse para que el contexto proporcione acceso a la clave de firma privada.

HashAlgorithm

CRYPT_ALGORITHM_IDENTIFIER que contiene el algoritmo hash utilizado para aplicar un algoritmo hash a los datos que se van a firmar.

pvHashAuxInfo

No se usa actualmente y se debe establecer en NULL.

cMsgCert

Número de elementos de la matriz rgpMsgCert de estructuras de CERT_CONTEXT . Si se establece en cero, no se incluyen certificados en el mensaje firmado.

rgpMsgCert

Matriz de punteros a CERT_CONTEXT estructuras que se incluirán en el mensaje firmado. Si se va a incluir pSigningCert , un puntero a él debe estar en la matriz rgpMsgCert .

cMsgCrl

Número de elementos de la matriz rgpMsgCrl de punteros a CRL_CONTEXT estructuras. Si se establece en cero, no se incluye ninguna estructura CRL_CONTEXT en el mensaje firmado.

rgpMsgCrl

Matriz de punteros a CRL_CONTEXT estructuras que se van a incluir en el mensaje firmado.

cAuthAttr

Número de elementos de la matriz rgAuthAttr . Si no hay atributos autenticados en rgAuthAttr, este miembro se establece en cero.

rgAuthAttr

Matriz de punteros a CRYPT_ATTRIBUTE estructuras, cada una de las cuales contiene información de atributo autenticada. Si hay atributos autenticados presentes, el estándar PKCS #9 determina que debe haber al menos dos atributos presentes, el identificador de objeto de tipo de contenido (OID) y el hash del propio mensaje. El sistema agrega automáticamente estos atributos.

cUnauthAttr

Número de elementos de la matriz rgUnauthAttr . Si no hay atributos no autenticados presentes en rgUnauthAttr, este miembro es cero.

rgUnauthAttr

Matriz de punteros a CRYPT_ATTRIBUTE estructuras que contienen información de atributos no autenticados. Los atributos no autenticados se pueden usar para contener contrafirmas, entre otros usos.

dwFlags

Normalmente cero. Si la salida codificada es ser un CMSG_SIGNED contenido interno de un mensaje criptográfico externo, como un mensaje de CMSG_ENVELOPED, se debe establecer el CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG. Si no se establece, el mensaje 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 en una CADENA OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG se puede establecer para identificar a los firmantes por su identificador de clave y no por su emisor y número de serie.

CRYPT_MESSAGE_SILENT_KEYSET_FLAG se puede establecer para suprimir cualquier interfaz de usuario por parte del CSP. Para obtener más información sobre la marca CRYPT_SILENT, vea CryptAcquireContext.

dwInnerContentType

Normalmente cero. Se establece en el tipo de codificación del mensaje de entrada si esa entrada que se va a firmar es la salida codificada de otro mensaje criptográfico.

HashEncryptionAlgorithm

Un CRYPT_ALGORITHM_IDENTIFIER. Si está presente y no es NULL, se usa en lugar del miembro PublicKeyInfo.Algorithm del certificado del firmante. Tenga en cuenta que 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 suele ser un algoritmo de firma DSS. Este miembro solo se puede usar si se define CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.

pvHashEncryptionAuxInfo

Actualmente no se usa y se debe establecer en NULL. Este miembro solo se puede usar si se define CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.

Comentarios

Los miembros HashEncryptionAlgorithm y pvHashEncryptionAuxInfo solo se pueden usar si se define CRYPT_SIGN_MESSAGE_PARA_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_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage