基底提供者金鑰 BLOB
基底提供者和擴充提供者使用相同的 金鑰 BLOB。
公開金鑰 BLOB
公開金鑰 BLOB類型 PUBLICKEYBLOB可用來將 公開金鑰 儲存在 密碼編譯服務提供者 外部, (CSP) 。 基底提供者公開金鑰 BLOB 的格式如下。
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
下表描述每個公開金鑰元件。 所有值都是 以小到大 的格式。
欄位 | Description |
---|---|
模數 | 公開金鑰模數資料會直接位於 RSAPUBKEY 結構之後。 此資料的大小會根據公開金鑰的大小而有所不同。 位元組數目可以藉由將 RSAPUBKEY bitlen 欄位的值除以八來決定。 |
publickeystruc | PUBLICKEYSTRUC結構。 |
rsapubkey | RSAPUBKEY結構。 magic成員必須設定為 0x31415352。 這個十六進位值是 RSA1 的 ASCII 編碼方式。 |
注意
公開金鑰 BLOB 不會加密。 它們包含 純文字 格式的公開金鑰。
私密金鑰 BLOB
私密金鑰 BLOB,輸入 PRI加值稅EKEYBLOB可用來將 私密金鑰 儲存在 CSP 外部。 基底提供者私密金鑰 BLOB 的格式如下。
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];
下表描述私密金鑰 BLOB 元件。
注意
這些欄位會對應至 公開金鑰密碼編譯標準 第 7.2 節中所述的欄位, (PKCS) #1 有微差異。
欄位 | Description |
---|---|
係數 | 係數。 這具有 q) mod p (反值的數值。 |
exponent1 | 指數 1。 這具有 d mod (p – 1) 的數值。 |
exponent2 | 指數 2. 這具有 d mod (q – 1) 的數值。 |
模組 | 模數。 這具有 Prime1×Prime2 的值,通常稱為 n。 |
prime1 | 質數 1,通常稱為 p。 |
prime2 | 質數 2,通常稱為 q。 |
privateExponent | 私用指數,通常稱為 d。 |
publickeystruc | PUBLICKEYSTRUC結構。 |
rsapubkey | RSAPUBKEY結構。 magic成員必須設定為 0x32415352。 這個十六進位值是 RSA2 的 ASCII 編碼方式。 |
注意
私密金鑰 BLOB 不會加密。 它們包含純文字格式的私密金鑰。
呼叫 CryptExportKey時,開發人員可以選擇是否要加密金鑰。 如果hExpKey參數包含工作階段金鑰的有效控制碼,則 PRI加值稅EKEYBLOB會加密。 除了 BLOB 的 PUBLICKEYSTRUC 部分,所有專案都會加密。
注意
加密演算法和加密金鑰參數不會與私密金鑰 BLOB 一起儲存。 應用程式必須管理和儲存此資訊。 如果 hExpKey傳遞零,則會匯出私密金鑰而不加密。
警告
在沒有加密的情況下匯出私密金鑰會很危險,因為它們很容易遭到未經授權的實體攔截和使用。
簡單金鑰 BLOB
簡單金鑰 BLOB類型 SIMPLEBLOB可用來儲存和傳輸 CSP 外部的工作階段金鑰。 基底提供者簡單金鑰 BLOB 一律會使用 金鑰交換公開金鑰加密。 SIMPLEBLOB的pbData成員是下列格式的位元組序列。
PUBLICKEYSTRUC publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];
下表描述SIMPLEBLOB之 pbData成員的每個元件。
欄位 | Description |
---|---|
algid | ALG_ID結構,指定用來加密工作階段金鑰資料的加密演算法。 這通常具有CALG_RSA_KEYX值,這表示工作階段金鑰資料是使用 RSA 公開金鑰演算法以金鑰交換公開金鑰加密。 |
encryptedkey |
BYTE序列,表示 PKCS #1 格式的加密工作階段金鑰資料,類型為 2 個加密區塊。 如需此資料格式的相關資訊,請參閱 RSA Data Security, Inc. 發佈的公開金鑰密碼編譯標準 (PKCS) #1。此資料的大小一律與公開金鑰的模數相同。 例如,Microsoft RSA 基底提供者所產生的公開金鑰可以是 512 位 (64 個位元組) 長度,因此加密的工作階段金鑰資料一律為 512 位, (64 個位元組) 。 |
publickeystruc | PUBLICKEYSTRUC結構。 |