Procedimiento para firmar datos
Una sola función, CryptSignMessage, realiza todas las tareas enumeradas en Crear un mensaje firmado. Sin embargo, la inicialización de estructuras y otros datos sigue siendo necesaria. En la ilustración siguiente se muestra la relación entre esos parámetros de función que apuntan a estructuras o matrices y sus datos inicializados. En la ilustración solo se muestran los parámetros de función y los miembros de estructura derivados de otras estructuras o funciones. El resto de los parámetros son inicializaciones sencillas.
Para firmar datos mediante CryptSignMessage
- Obtenga un puntero a los datos que se van a firmar.
- Asigne el puntero a los datos para indexar cero de una matriz de "datos que se van a firmar".
- Obtenga un identificador para el proveedor criptográfico.
- Abra un almacén de certificados que contenga el certificado del firmante.
- Obtenga una dirección al certificado del firmante.
- Asigne la dirección del certificado al índice cero de la matriz MsgCert .
- Asigne las direcciones de cualquier otro certificado que se incluya con el mensaje a la matriz MsgCert .
- Inicialice la estructura CRYPT_ALGORITHM_IDENTIFIER , inicializando el miembro pszObjId en el algoritmo hash deseado y los demás miembros según corresponda.
- Inicialice la estructura de CRYPT_SIGN_MESSAGE_PARA , inicializando el miembro pSigningCert en la dirección del certificado del firmante, el miembro de matriz MsgCert a la dirección de los certificados del firmante y otros certificados, el miembro HashAlgorithm a la dirección de la estructura de CRYPT_ALGORITHM_IDENTIFIER y los demás miembros según corresponda.
- Llame a la función CryptSignMessage , pasando la estructura de CRYPT_SIGN_MESSAGE_PARA para el parámetro pSignPara , la dirección de la matriz "data to be signed" para el parámetro rgpbToBeSigned , una dirección para el parámetro de salida pbSignedBlob y los valores de los demás parámetros según corresponda.