C#将时间戳添加到PKCS#7 CMS数字签名

问题描述 投票:-1回答:1

[我是负责使用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));

我没有主意,一生无法找到有用的文档。

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

c# timestamp digital-signature pkcs#7
1个回答
0
投票

与@bartonjs的注释一样,问题在于我将签名时间添加到了unsigned属性中。更改代码以将签名时间添加到签名属性可以解决我们的问题。

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
© www.soinside.com 2019 - 2024. All rights reserved.