C# 添加时间戳到 PKCS#7 CMS 数字签名
C# Add Timestamp to PKCS#7 CMS Digital Signature
我是一名软件开发人员,负责使用 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));
我没主意了,我这辈子都找不到有用的文档。
如何将时间戳附加到签名者信息中???
与@bartonjs 的评论一样,问题是我将签名时间添加到未签名的属性中。更改代码以将签名时间添加到签名属性解决了我们的问题。
cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
我是一名软件开发人员,负责使用 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));
我没主意了,我这辈子都找不到有用的文档。
如何将时间戳附加到签名者信息中???
与@bartonjs 的评论一样,问题是我将签名时间添加到未签名的属性中。更改代码以将签名时间添加到签名属性解决了我们的问题。
cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));