RSA/Schannel 金鑰
產生和擷取 RSA/通道金鑰
Rsa/呼叫CryptGenKey函式即可產生通道金鑰。 對 CryptGenKey 的呼叫需要AT_KEYEXCHANGE在 Algid 參數中傳遞的演算法識別碼。
產生 RSA/Schannel public/private key pair
- 呼叫 CryptAcquireCoNtext 函式以取得 Microsoft RSA/Schannel 密碼編譯提供者的控制碼。
- 呼叫 CryptGenKey 函式以產生金鑰。 AT_KEYEXCHANGE必須針對 Algid 參數傳入, 而 dwFlags 參數的上限 16 位必須設定為所需的金鑰大小, (512 位) 。 hKey參數中會傳回HCRYPTKEY結構控制碼。
擷取先前產生的 RSA/Schannel 使用者金鑰的指標
- 呼叫 CryptAcquireCoNtext 函式以取得 Microsoft RSA/Schannel 密碼編譯提供者的控制碼。
- 呼叫 CryptGetUserKey 函式,並將 dwKeySpec 參數設定為 AT_KEYEXCHANGE。
匯出 RSA/通道金鑰
主要金鑰 可以匯出至簡單的金鑰 BLOB 結構。 這應該與匯出一般 RC4 或 資料加密標準 (DES) 大量加密金鑰的方式相同,如 簡單金鑰 BLOB中所述。 PUBLICKEYSTRUC結構的aiKeyAlg成員會設定為主要金鑰的演算法識別碼, (CALG_PCT1_MASTER、CALG_SSL2_MASTER、CALG_SSL3_MASTER或CALG_TLS1_MASTER) 。
如果 CPExportKey 函式正在匯出 SSL2 主要金鑰並設定CRYPT_SSL2_FALLBACK旗標,則為了協助防止版本復原攻擊,請將 加密區塊填補 的前八個位元組設定為0x03,而不是亂數據。
如果在CPExportKey函式的dwFlags參數中指定CRYPT_DESTROYKEY常數,CSP 會在匯出金鑰之後終結金鑰或金鑰控制碼。 此旗標僅供 不透明 BLOB使用。