CNGプロバイダは、CNGプロバイダ(デフォルトのMicrosoftソフトウェア、スマートカード、またはHSMのようなサードパーティプロバイダ)に拡張可能であることを覚えておいてください。プロバイダは、これらの形式を無視するかサポートしないかを選択できます。これは最終的にはNCryptImportKey
が呼び出されるまで続く。ここに記載されていないCNGでサポートされている多くの形式があります。備考セクションには、データ構造のタイプとリンクに関するかなりの情報があります。
NCryptImportKey
のマニュアルに記載されているように、キー形式は文字列です。 CngKeyBlobFormat
は、これらの文字列を囲む単なるラッパーです。 reference sourceを見れば、これらのプロパティがどのようにWin32文字列にマップされているかを確認できます。たとえば、EccPrivateBlob
プロパティは"ECCPRIVATEBLOB"
文字列です。
Pkcs8PrivateBlob
あなたが述べたように、このフォーマットはPKCS#8規格で規定されています。
OpaqueTransportBlob
それが不透明ブロブで、プロバイダ間の移植性がありませんので、この1 Microsoftが実際に文書化することはできません。本質的に、これはプロバイダーが選択した表現を意味します。
GenericPublicBlob
これはBCRYPT_KEY_BLOB
構造のバイナリ表現であろう。構造体の最初のフィールドは、マジック値を持つ構造体を決定します。たとえば、RSA公開鍵では、BCRYPT_RSAKEY_BLOB
になります。
GenericPrivateBlob
これは民間のパラメータが記入されている以外は、上記と同じです。
EccPublicBlob
これはBCRYPT_ECCKEY_BLOB
構造になります。マジック値がブロブの実際の内容を決定するという点で、上記と同様です。
EccPrivateBlob
これは、プライベート・パラメータが充填された以外は上記と同じであろう。
BCRYPT_KEY_BLOB
とBCRYPT_ECCKEY_BLOB
構造のためのケースでは、構造はのための「ヘッダ」として作用キー。実際のキーマテリアルは、構造体の後ろのメモリの同じブロブにあります。キーマテリアルの「量」は、マジック値とヘッダーの他の値に基づいてわかります。
ワウは、このように完全に非常に速く答えられるとは思わなかった! –