2017-04-01 6 views
5

Die Microsoft-Seiten bieten "minimale" Informationen über die Formate, die von CngKey.Import verwendet werden können. Welche tatsächlichen Formate werden tatsächlich durch die folgenden CngKeyBlobFormat Eigenschaften dargestellt?Welche Formate werden von CngKeyBlobFormat unterstützt?

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

Nur der PKCS # 8 privaten Schlüssel Format Hinweise sl Recht über das Format des Schlüssels, aber es gibt nicht an, ob der private Schlüssel umgebrochen werden soll oder ob nur die innere PKCS # 8-Struktur akzeptiert wird.

Je mehr Informationen über diese Formate, desto besser natürlich.

Antwort

7

Bei all dem ist zu beachten, dass CNG durch CNG-Provider erweiterbar ist, die die Standardsoftware von Microsoft, eine Smartcard oder ein Drittanbieter wie ein HSM sein können. Jeder Anbieter kann eines dieser Formate ignorieren oder nicht unterstützen. Dies führt letztendlich dazu, dass NCryptImportKey aufgerufen wird. Es gibt eine Reihe von Formaten, die von CNG unterstützt werden, die hier nicht aufgeführt sind. Im Abschnitt Bemerkungen gibt es eine Menge Informationen über die Typen und Links für Datenstrukturen.

Wie Sie in der Dokumentation NCryptImportKey sehen, ist das Schlüsselformat eine Zeichenkette. Die CngKeyBlobFormat ist nur ein Wrapper um diese Saiten. Sie können in der reference source nachsehen, wie diese Eigenschaften den Win32-Strings zugeordnet werden. Zum Beispiel ist die EccPrivateBlob Eigenschaft die "ECCPRIVATEBLOB" Zeichenfolge.

Pkcs8PrivateBlob

Wie Sie bemerkt, wird dieses Format von der PKCS#8 Standard spezifiziert.

OpaqueTransportBlob

Diese Microsoft-Dokument kann nicht wirklich, weil es eine undurchsichtige Blob ist, und ist zwischen den Anbietern nicht tragbar. Im Wesentlichen ist dies eine Darstellung, die der Anbieter wählt.

GenericPublicBlob

Dies wird eine Binärdarstellung der BCRYPT_KEY_BLOB Struktur sein. Das erste Feld in der Struktur bestimmt, welche Struktur es mit magischen Werten hat. Bei einem öffentlichen RSA-Schlüssel ist dies beispielsweise ein BCRYPT_RSAKEY_BLOB.

GenericPrivateBlob

Dies ist das gleiche wie oben mit Ausnahme der privaten Parameter ausgefüllt sind.

EccPublicBlob

Dies wird eine BCRYPT_ECCKEY_BLOB Struktur sein. Es ist ähnlich wie oben, dass ein magischer Wert den tatsächlichen Inhalt des Blobs bestimmt.

EccPrivateBlob

Dies hat den gleichen sein, wie oben mit Ausnahme der privaten Parameter ausgefüllt sind.

In den Fällen, für BCRYPT_KEY_BLOB und BCRYPT_ECCKEY_BLOB Strukturen wirken die Strukturen als „Header“ für der Schlüssel. Das eigentliche Schlüsselmaterial befindet sich nach der Struktur im selben Speicherblob. Die "Menge" an Schlüsselmaterial wird basierend auf dem magischen Wert und den anderen Werten in der Kopfzeile bekannt sein.

+2

Wow, hätte nicht erwartet, dass dieser so schnell beantwortet wird! –

Verwandte Themen