structure CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)
La structure CRYPT_SIGN_MESSAGE_PARA contient des informations pour la signature de messages à l’aide d’un contexte de certificat de signature spécifié.
Syntaxe
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;
Membres
cbSize
Taille de cette structure en octets.
dwMsgEncodingType
Type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
Les types d’encodage actuellement définis sont les suivants :
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
pSigningCert
Pointeur vers le CERT_CONTEXT à utiliser dans la signature.
La propriété CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID doit être définie pour le contexte afin de fournir l’accès à la clé de signature privée.
HashAlgorithm
CRYPT_ALGORITHM_IDENTIFIER contenant l’algorithme de hachage utilisé pour hacher les données à signer.
pvHashAuxInfo
Non utilisé actuellement, et doit être défini sur NULL.
cMsgCert
Nombre d’éléments dans le tableau rgpMsgCert de structures CERT_CONTEXT . Si la valeur est zéro, aucun certificat n’est inclus dans le message signé.
rgpMsgCert
Tableau de pointeurs vers CERT_CONTEXT structures à inclure dans le message signé. Si le pSigningCert doit être inclus, un pointeur vers celui-ci doit se trouver dans le tableau rgpMsgCert .
cMsgCrl
Nombre d’éléments dans le tableau rgpMsgCrl de pointeurs vers CRL_CONTEXT structures. Si la valeur est égale à zéro, aucune structure CRL_CONTEXT n’est incluse dans le message signé.
rgpMsgCrl
Tableau de pointeurs vers CRL_CONTEXT structures à inclure dans le message signé.
cAuthAttr
Nombre d’éléments dans le tableau rgAuthAttr . Si aucun attribut authentifié n’est présent dans rgAuthAttr, ce membre est défini sur zéro.
rgAuthAttr
Tableau de pointeurs vers CRYPT_ATTRIBUTE structures, chacun contenant des informations d’attribut authentifiées. Si des attributs authentifiés sont présents, la norme PKCS #9 indique qu’au moins deux attributs doivent être présents, l’identificateur d’objet de type de contenu (OID) et le hachage du message lui-même. Ces attributs sont automatiquement ajoutés par le système.
cUnauthAttr
Nombre d’éléments dans le tableau rgUnauthAttr . Si aucun attribut non authentifié n’est présent dans rgUnauthAttr, ce membre est égal à zéro.
rgUnauthAttr
Tableau de pointeurs vers CRYPT_ATTRIBUTE structures contenant chacune des informations d’attribut non authentifiées. Les attributs non authentifiés peuvent être utilisés pour contenir des contre-signatures, entre autres utilisations.
dwFlags
Normalement zéro. Si la sortie encodée doit être un CMSG_SIGNED contenu interne d’un message de chiffrement externe tel qu’un message CMSG_ENVELOPED, le CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG doit être défini. S’il n’est pas défini, le message est encodé en tant que type de contenu interne de CMSG_DATA.
CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG peut être défini pour encapsuler du contenu interne non-data dans une chaîne OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG peut être défini pour identifier les signataires par leur identificateur de clé et non par leur émetteur et leur numéro de série.
CRYPT_MESSAGE_SILENT_KEYSET_FLAG peut être défini pour supprimer n’importe quelle interface utilisateur par le fournisseur de solutions cloud. Pour plus d’informations sur l’indicateur CRYPT_SILENT, consultez CryptAcquireContext.
dwInnerContentType
Normalement zéro. Définissez le type d’encodage du message d’entrée si cette entrée à signer est la sortie encodée d’un autre message de chiffrement.
HashEncryptionAlgorithm
Une CRYPT_ALGORITHM_IDENTIFIER. S’il est présent et non NULL, il est utilisé à la place du membre PublicKeyInfo.Algorithm du certificat du signataire. Notez que pour RSA, l’algorithme de chiffrement de hachage est normalement le même que l’algorithme de clé publique. Pour DSA, l’algorithme de chiffrement de hachage est normalement un algorithme de signature DSS. Ce membre ne peut être utilisé que si CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS est défini.
pvHashEncryptionAuxInfo
Actuellement non utilisé et doit être défini sur NULL. Ce membre ne peut être utilisé que si CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS est défini.
Remarques
Les membres HashEncryptionAlgorithm et pvHashEncryptionAuxInfo ne peuvent être utilisés que si CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS est défini.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
En-tête | wincrypt.h |