CngKeyBlobFormat 支持的实际格式是什么?

2024-04-24

Microsoft 页面提供了有关可使用的格式的“最少”信息CngKey.导入 https://msdn.microsoft.com/en-us/library/bb344680(v=vs.110).aspx. Which actual格式实际上由以下表示CngKeyBlobFormat https://msdn.microsoft.com/en-us/library/system.security.cryptography.cngkeyblobformat(v=vs.110).aspx特性?

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

只有 PKCS#8 私钥格式稍微暗示了密钥的格式,但它没有指定是否需要包装私钥或者是否只接受内部 PKCS#8 结构。

关于这些格式的信息当然越多越好。


在这一切过程中需要记住的一件事是,CNG 可以通过 CNG 提供商进行扩展,该提供商可能是默认的 Microsoft 软件、智能卡或 HSM 等第三方提供商。任何提供商都可以选择忽略或不支持任何这些格式。这最终归结为NCryptImportKey https://msdn.microsoft.com/en-us/library/windows/desktop/aa376276(v=vs.85).aspx被召唤。 CNG 支持多种格式,此处未列出。注释部分提供了大量有关数据结构的类型和链接的信息。

正如你在NCryptImportKey文档中,密钥格式是字符串。这CngKeyBlobFormat只是这些字符串的包装。您可以查看参考来源 https://referencesource.microsoft.com/#System.Core/System/Security/Cryptography/CngKeyBlobFormat.cs,d5fe5c517d3c590f查看这些属性如何映射到 Win32 字符串。例如,EccPrivateBlob属性是"ECCPRIVATEBLOB"细绳。

Pkcs8PrivateBlob

正如您所指出的,此格式由PKCS#8 https://www.ietf.org/rfc/rfc5208.txt标准。

不透明传输斑点

Microsoft 无法真正记录这一点,因为它是一个不透明的 blob,并且不能在提供商之间移植。本质上,这意味着提供者选择的表示。

通用公共 Blob

这将是以下内容的二进制表示BCRYPT_KEY_BLOB https://msdn.microsoft.com/en-us/library/windows/desktop/aa375523(v=vs.85).aspx结构。结构中的第一个字段决定了它是具有魔法值的结构。例如,对于 RSA 公钥,它将是BCRYPT_RSAKEY_BLOB https://msdn.microsoft.com/en-us/library/windows/desktop/aa375531(v=vs.85).aspx.

通用私有Blob

除了填写私有参数之外,与上面相同。

Ecc公共Blob

这将是一个BCRYPT_ECCKEY_BLOB https://msdn.microsoft.com/en-us/library/windows/desktop/aa375520(v=vs.85).aspx结构。与上面类似,魔法值将决定 blob 的实际内容。

Ecc私有Blob

除了填写私有参数之外,这与上面相同。

对于以下情况BCRYPT_KEY_BLOB and BCRYPT_ECCKEY_BLOB结构,结构充当密钥的“标头”。实际的密钥材料将位于结构之后的同一内存块中。密钥材料的“数量”将根据魔法值和标头中的其他值得知。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CngKeyBlobFormat 支持的实际格式是什么? 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐