Procedura per la firma dei dati
Una singola funzione , CryptSignMessage, esegue tutte le attività elencate in Creazione di un messaggio firmato. Tuttavia, l'inizializzazione di strutture e altri dati è ancora necessaria. Nella figura seguente viene illustrata la relazione tra i parametri di funzione che puntano a strutture o matrici e ai relativi dati inizializzati. La figura mostra solo i parametri della funzione e i membri della struttura derivati da altre strutture o funzioni. Il resto dei parametri sono inizializzazioni semplici.
Per firmare i dati con CryptSignMessage
- Ottenere un puntatore ai dati da firmare.
- Assegnare il puntatore ai dati per indicizzare zero di una matrice "dati da firmare".
- Ottenere un handle per il provider di crittografia.
- Aprire un archivio certificati contenente il certificato del firmatario.
- Ottenere un indirizzo al certificato del firmatario.
- Assegnare l'indirizzo del certificato all'indice zero della matrice MsgCert .
- Assegnare gli indirizzi di qualsiasi altro certificato da includere con il messaggio alla matrice MsgCert .
- Inizializzare la struttura CRYPT_ALGORITHM_IDENTIFIER , inizializzando il membro pszObjId nell'algoritmo hash desiderato e gli altri membri in base alle esigenze.
- Inizializzare la struttura CRYPT_SIGN_MESSAGE_PARA , inizializzando il membro pSigningCert all'indirizzo del certificato del firmatario, il membro della matrice MsgCert all'indirizzo del firmatario e degli altri certificati, il membro HashAlgorithm all'indirizzo della struttura CRYPT_ALGORITHM_IDENTIFIER e gli altri membri in base alle esigenze.
- Chiamare la funzione CryptSignMessage , passando la struttura CRYPT_SIGN_MESSAGE_PARA per il parametro pSignPara , l'indirizzo della matrice "dati da firmare" per il parametro rgpbToBeSigned , un indirizzo per il parametro di output pbSignedBlob e i valori per gli altri parametri in base alle esigenze.