Chiavi RSA/Schannel
Generazione e recupero di chiavi RSA/Schannel
RSA/ Le chiavi Schannel possono essere generate chiamando la funzione CryptGenKey. La chiamata a CryptGenKey richiede un identificatore di algoritmo AT_KEYEXCHANGE passato nel parametro Algid .
Per generare una coppia di chiavi pubblica/Schannel pubblica/privata RSA
- Chiamare la funzione CryptAcquireContext per ottenere un handle al provider di crittografia Microsoft RSA/Schannel.
- Chiamare la funzione CryptGenKey per generare le chiavi. AT_KEYEXCHANGE deve essere passato per il parametro Algid e i 16 bit superiori del parametro dwFlags devono essere impostati sulla dimensione della chiave desiderata (512 bit). Un handle di struttura HCRYPTKEY viene restituito nel parametro hKey .
Per recuperare un puntatore alle chiavi utente RSA/Schannel generate in precedenza
- Chiamare la funzione CryptAcquireContext per ottenere un handle al provider di crittografia Microsoft RSA/Schannel.
- Chiamare la funzione CryptGetUserKey con il parametro dwKeySpec impostato su AT_KEYEXCHANGE.
Esportazione di chiavi RSA/Schannel
Le chiavi master possono essere esportate in strutture BLOB chiave semplici. Questa operazione deve essere implementata allo stesso modo dell'esportazione delle normali chiavi di crittografiaRC4 o Data Encryption Standard (DES), come descritto in Simple Key BLOB. Il membro aiKeyAlg della struttura PUBLICKEYSTRUC è impostato sull'identificatore dell'algoritmo della chiave master (CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_SSL3_MASTER o CALG_TLS1_MASTER).
Se la funzione CPExportKey esporta una chiave master SSL2 e il flag di CRYPT_SSL2_FALLBACK è impostato, per impedire attacchi di rollback della versione, impostare i primi otto byte del riempimento del blocco di crittografia su 0x03 anziché su dati casuali.
Se la costante CRYPT_DESTROYKEY viene specificata nel parametro dwFlags della funzione CPExportKey , il CSP elimina la chiave o l'handle della chiave dopo l'esportazione della chiave. Questo flag è destinato all'uso solo con BLOB opachi.