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.

mapping di inizializzazione per una chiamata a cryptsignmessage

Per firmare i dati con CryptSignMessage

  1. Ottenere un puntatore ai dati da firmare.
  2. Assegnare il puntatore ai dati per indicizzare zero di una matrice "dati da firmare".
  3. Ottenere un handle per il provider di crittografia.
  4. Aprire un archivio certificati contenente il certificato del firmatario.
  5. Ottenere un indirizzo al certificato del firmatario.
  6. Assegnare l'indirizzo del certificato all'indice zero della matrice MsgCert .
  7. Assegnare gli indirizzi di qualsiasi altro certificato da includere con il messaggio alla matrice MsgCert .
  8. Inizializzare la struttura CRYPT_ALGORITHM_IDENTIFIER , inizializzando il membro pszObjId nell'algoritmo hash desiderato e gli altri membri in base alle esigenze.
  9. 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.
  10. 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.