Procédure de signature des données
Une seule fonction, CryptSignMessage, effectue toutes les tâches répertoriées dans Création d’un message signé. Toutefois, l’initialisation des structures et d’autres données est toujours nécessaire. L’illustration suivante montre la relation entre les paramètres de fonction qui pointent vers des structures ou des tableaux et leurs données initialisées. L’illustration montre uniquement les paramètres de fonction et les membres de structure dérivés d’autres structures ou fonctions. Le reste des paramètres sont des initialisations simples.
Pour signer des données à l’aide de CryptSignMessage
- Obtenez un pointeur vers les données à signer.
- Affectez le pointeur aux données pour indexer zéro d’un tableau « données à signer ».
- Obtenez un handle au fournisseur de chiffrement.
- Ouvrez un magasin de certificats qui contient le certificat du signataire.
- Obtenez une adresse du certificat du signataire.
- Affectez l’adresse du certificat à l’index zéro du tableau MsgCert .
- Affectez les adresses de tous les autres certificats à inclure avec le message au tableau MsgCert .
- Initialisez la structure CRYPT_ALGORITHM_IDENTIFIER , en initialisant le membre pszObjId sur l’algorithme de hachage souhaité et les autres membres, le cas échéant.
- Initialisez la structure CRYPT_SIGN_MESSAGE_PARA , en initialisant le membre pSigningCert à l’adresse du certificat du signataire, le membre du tableau MsgCert à l’adresse des certificats du signataire et des autres certificats, le membre HashAlgorithm à l’adresse de la structure CRYPT_ALGORITHM_IDENTIFIER et les autres membres, selon le cas.
- Appelez la fonction CryptSignMessage , en passant la structure CRYPT_SIGN_MESSAGE_PARA pour le paramètre pSignPara , l’adresse du tableau « données à signer » pour le paramètre rgpbToBeSigned , une adresse pour le paramètre de sortie pbSignedBlob et les valeurs appropriées pour les autres paramètres.