【发布时间】: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