【问题标题】:Win32 PKCS#7 Low Level Message Functions to use specific contentWin32 PKCS#7 Low Level Message Functions 使用特定内容
【发布时间】:2019-08-08 12:25:04
【问题描述】:

使用 Win32 低级函数(如 CryptMsgOpenToEncodeCryptMsgUpdate)创建 PKCS#7 签名消息时,生成的消息是 OID 为 1.2.840.113549.1.7.2 signedData (PKCS #7) 的消息,其中包含具有 OID 1.2.840.113549.1.7.1 数据的序列 (PKCS #7)。

我可以使用低级消息函数来更改后一个 OID 吗?例如,Authenticode 使用 OID 1.3.6.1.4.1.311.2.1.4 spcIndirectDataContext(Microsoft 代码签名)。

我看到了 CryptMsgOpenToEncode CMSG_BARE_CONTENT_FLAG 标志,但我不确定这是否是我想要的或如何使用它。

【问题讨论】:

  • CryptMsgOpenToEncode 函数支持用SPC_INDIRECT_DATA_OBJID (1.3.6.1.4.1.311.2.1.4) 打开加密消息。为什么要改变后者?

标签: winapi cryptography pkcs#7


【解决方案1】:

消息的(内部)内容类型是CryptMsgOpenToEncode (pszInnerContentObjID) 的第 5 个参数。

它应该接受任何 ASCII 点分十进制 OID 值作为输入,包括您提到的 OID 的预定义值 (SPC_INDIRECT_DATA_OBJID / "1.3.6.1.4.1.311.2.1.4")。

【讨论】:

  • 谢谢。我仍然有一个奇怪的问题,虽然编码的消息被正确传递给 CryptMsgUpdate,但生成的签名并没有完全在里面。 Duh - 我想我需要删除 DETACHED 标志。
猜你喜欢
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多