簡體   English   中英

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 的評論一樣,問題是我將簽名時間添加到了 unsigned 屬性中。 更改代碼以將簽名時間添加到簽名屬性解決了我們的問題。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM