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 |