2017-04-01 21 views
5

マイクロソフトのページでは、CngKey.Importで使用できる形式に関する「最小限の」情報が提供されています。どちらの実際の形式は、実際にはCngKeyBlobFormatのプロパティで表されますか?CngKeyBlobFormatでサポートされている実際の形式は何ですか?

  • EccPrivateBlob
  • EccPublicBlob
  • GenericPrivateBlob
  • GenericPublicBlob
  • OpaqueTransportBlob
  • Pkcs8PrivateBlob

のみPKCS#8秘密鍵のフォーマットは、SLのヒント秘密鍵をラップする必要があるかどうか、または内部のPKCS#8構造体だけが受け入れられるかどうかは指定されていません。

これらのフォーマットの詳細については、もちろんより良いでしょう。

答えて

7

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_BLOBBCRYPT_ECCKEY_BLOB構造のためのケースでは、構造はのための「ヘッダ」として作用キー。実際のキーマテリアルは、構造体の後ろのメモリの同じブロブにあります。キーマテリアルの「量」は、マジック値とヘッダーの他の値に基づいてわかります。

+2

ワウは、このように完全に非常に速く答えられるとは思わなかった! –

関連する問題