Decodifica dei dati in busta
Le attività generali necessarie per decodificare un messaggio busto vengono illustrate nella figura seguente e descritte nell'elenco che segue.
La sequenza di eventi per la decodifica dei dati in busta tramite la gestione delle chiavi di trasporto chiave, come illustrato nella figura precedente, è la seguente:
- Viene recuperato un puntatore al messaggio in busto digitale .
- Viene aperto un archivio certificati .
- Dal messaggio viene recuperato l'ID destinatario (ID personale).
- L'ID destinatario viene usato per recuperare il certificato.
- La chiave privata associata a tale certificato viene recuperata.
- La chiave privata viene usata per decrittografare la chiave simmetrica (sessione).
- L'algoritmo di crittografia viene recuperato dal messaggio.
- Usando la chiave privata e l'algoritmo di crittografia, i dati vengono decrittografati.
La procedura seguente usa funzioni di messaggio di basso livello per eseguire le attività appena elencate.
Per decodificare un messaggio busto
- Ottenere un puntatore al BLOB codificato.
- Chiamare CryptMsgOpenToDecode, passando gli argomenti necessari.
- Chiamare CryptMsgUpdate una volta, passando l'handle recuperato nel passaggio 2 e un puntatore ai dati da decodificare. In questo modo, le azioni appropriate devono essere eseguite sul messaggio, a seconda del tipo di messaggio.
- Chiamare CryptMsgGetParam, passando l'handle recuperato nel passaggio 2 e CMSG_TYPE_PARAM per verificare che il messaggio sia del tipo di dati busto.
- Chiamare di nuovo CryptMsgGetParam, passando CMSG_INNER_CONTENT_TYPE_PARAM per ottenere il tipo di dati del contenuto interno.
- Se il tipo di dati del contenuto interno è dati, procedere alla decrittografia e decodificare il contenuto. In caso contrario, eseguire una procedura di decodifica appropriata per il tipo di dati del contenuto.
- Supponendo che il tipo di contenuto interno sia "dati", inizializzare la struttura dei dati CMSG_CTRL_DECRYPT_PARA e chiamare CryptMsgControl, passando CMSG_CTRL_DECRYPT e l'indirizzo della struttura. Il contenuto verrà decrittografato.
- Chiamare CryptMsgGetParam, passando CMSG_CONTENT_PARAM per ottenere un puntatore al BLOB dei dati del contenuto decodificato (stringa BYTE ).
- Chiamare CryptMsgClose per chiudere il messaggio.
Il risultato di questa procedura è che il messaggio viene decodificato e decrittografato e un puntatore viene recuperato nel BLOB dei dati del contenuto.
Argomenti correlati