【问题标题】:C# Add Timestamp to PKCS#7 CMS Digital SignatureC# 将时间戳添加到 PKCS#7 CMS 数字签名
【发布时间】:2020-05-06 20:20:39
【问题描述】:

我是一名软件开发人员,负责一个使用 PCKS#7 对文本文件进行数字签名的项目。

有第三方负责分析签名文件,告诉我们它是否正确。

我遇到的问题是他们说签名者信息不包含时间戳。他们向我保证我不需要为时间戳雇用外部受信任的服务器,服务器的时间戳就足够了。

我搜索了互联网并想出了以下代码来尝试添加时间戳,但负责检查文件的第三方表示问题仍然存在。

private byte[] Sign(byte[] content)
{
    CmsSigner cmsSigner = new CmsSigner(_cert);
    cmsSigner.UnsignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

    SignedCms signedCms = new SignedCms(new ContentInfo(content));
    signedCms.ComputeSignature(cmsSigner, true);

    return signedCms.Encode();
}

这是我迄今为止所写的关于数字签名的内容。为时间戳添加的行将是第二行:

    cmsSigner.UnsignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

我没有想法,终其一生都找不到有用的文档。

如何将时间戳附加到签名者信息???

【问题讨论】:

  • 把它放在 SignedAttributes 中可能会更好 :)
  • 谢谢@bartonjs。我使用了 UnsignedAttributes,因为这是我在网上找到的。我的一位同事也提到了 SignedAttributes,我们昨天将文件发送出去检查,希望在第二天左右得到回复。

标签: c# timestamp digital-signature pkcs#7


【解决方案1】:

与@bartonjs 的评论一样,问题是我将签名时间添加到未签名属性中。更改代码以将签名时间添加到签名属性中解决了我们的问题。

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

【讨论】:

猜你喜欢
  • 2020-11-11
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2016-11-30
相关资源
最近更新 更多