Clés RSA/Schannel

Génération et récupération des clés RSA/Schannel

RSA / Les clés Schannel peuvent être générées en appelant la fonction CryptGenKey . L’appel à CryptGenKey nécessite un _ identificateur d’algorithme at KeyExchange passé dans le paramètre algid .

Pour générer une paire de clés publique/privée RSA/Schannel

  1. Appelez la fonction CryptAcquireContext pour obtenir un descripteur du fournisseur de services de chiffrement Microsoft RSA/SChannel.
  2. Appelez la fonction CryptGenKey pour générer les clés. La _ valeur de KeyExchange doit être transmise pour le paramètre algid , et les 16 bits supérieurs du paramètre dwFlags doivent avoir la taille de clé souhaitée (512 bits). Un handle de structure HCRYPTKEY est retourné dans le paramètre HKEY .

Pour récupérer un pointeur vers des clés d’utilisateur RSA/SChannel générées précédemment

  1. Appelez la fonction CryptAcquireContext pour obtenir un descripteur du fournisseur de services de chiffrement Microsoft RSA/SChannel.
  2. Appelez la fonction CryptGetUserKey , avec le paramètre dwKeySpec défini sur _ KeyExchange.

Exportation des clés RSA/Schannel

Les clés principales peuvent être exportées dans des structures blob de clé simple. Cela doit être implémenté de la même façon que l’exportation de clés de chiffrement en bloc RC4 ou Data Encryption Standard (des) normales, comme décrit dans simple blob de clé. Le membre aiKeyAlg de la structure PUBLICKEYSTRUC est défini sur l’identificateur d’algorithme de la clé principale (CALG _ PCT1 _ maître, CALG _ SSL2 _ Master, CALG _ SSL3 _ maître ou CALG _ TLS1 _ Master).

Si la fonction CPExportKey exporte une clé principale SSL2 et que l' _ indicateur de secours crypt SSL2 _ est défini, afin d’éviter les attaques par restauration de version, définissez les huit premiers octets du remplissage du bloc de chiffrement sur 0x03 et non sur les données aléatoires.

Si la constante _ DESTROYKEY de chiffrement est spécifiée dans le paramètre DwFlags de la fonction CPExportKey , le CSP détruit la clé ou le handle de clé après l’exportation de la clé. Cet indicateur est destiné à être utilisé uniquement avec des objets BLOB opaques.