Maa*_*wes 7 c# standards cryptography cng
Microsoft页面提供有关CngKey.Import可以使用的格式的"最小"信息.以下属性实际表示哪些实际格式CngKeyBlobFormat?
EccPrivateBlob EccPublicBlob GenericPrivateBlob GenericPublicBlobOpaqueTransportBlobPkcs8PrivateBlob只有PKCS#8私钥格式略微提示密钥的格式,但它没有指定是否需要包装私钥或者是否接受内部PKCS#8结构.
当然,关于这些格式的信息越多越好.
vcs*_*nes 10
在所有这些中要记住的一点是,CNG可通过CNG提供商进行扩展,CNG提供商可能是默认的Microsoft软件,智能卡或HSM等第三方提供商.任何提供商都可以选择忽略或不支持任何这些格式.这最终归结为NCryptImportKey被召唤.CNG支持的许多格式未在此处列出.备注部分有很多关于数据结构的类型和链接的信息.
正如您在NCryptImportKey文档中看到的那样,密钥格式是一个字符串.这CngKeyBlobFormat只是这些字符串的包装.您可以查看参考源以查看这些属性如何映射到Win32字符串.例如,EccPrivateBlob属性是"ECCPRIVATEBLOB"字符串.
Pkcs8PrivateBlob
如您所述,此格式由PKCS#8标准指定.
OpaqueTransportBlob
这个Microsoft无法真正记录,因为它是一个不透明的blob,并且在提供者之间不可移植.从本质上讲,这是供应商选择的表示.
GenericPublicBlob
这将是BCRYPT_KEY_BLOB结构的二进制表示.结构中的第一个字段使用魔术值确定它的结构.例如,使用RSA公钥,它将是一个BCRYPT_RSAKEY_BLOB.
GenericPrivateBlob
除了填写私有参数之外,这与上面相同.
EccPublicBlob
这将是一个BCRYPT_ECCKEY_BLOB结构.它与上面类似,因为魔术值将决定blob的实际内容.
EccPrivateBlob
这将与上面相同,只是填写了私有参数.
在for BCRYPT_KEY_BLOB和BCRYPT_ECCKEY_BLOBstructure 的情况下,结构充当密钥的"标题".在结构之后,实际的密钥材料将位于相同的内存块中.基于魔术值以及标题中的其他值将知道关键材料的"数量".