【发布时间】:2019-11-10 12:01:08
【问题描述】:
我使用数字签名自动在 Excel 文件中签署 VBA 代码,使用 X509Certificate2 和 EPPlus 效果很好。 现在我想包含一个时间戳,知道我可以在哪里设置它吗?
如果我在 VBA 编辑器 - 工具 - 数字签名中手动签署代码,则代码已使用时间戳(和会签)进行了良好签名。因此,当签名人的证书过期时,它仍然有效。但是当使用 EPPlus 签名时不会。 在 ExcelVBASignature.cs 中,看起来这个函数已经准备好了..
到目前为止,我是这样做的:
using System;
using System.IO;
using OfficeOpenXml;
using System.Security.Cryptography.X509Certificates;
...
X509Certificate2 cert = new X509Certificate2 ( PFXfile, PFXpass, X509KeyStorageFlags.PersistKeySet );
using ( ExcelPackage xl = new ExcelPackage ( new System.IO.FileInfo ( Excelfile ) ) )
{
using ( ExcelWorkbook wb = xl.Workbook )
{
wb.VbaProject.Signature.Certificate = cert;
xl.SaveAs ( new System.IO.FileInfo ( TargetPath ) );
}
}
【问题讨论】:
-
Certificate.HasPrivateKey是真的吗?好像不行就不行了。 -
是的,它有。我使用“使私钥可导出”选项向我的 CA 请求证书。
标签: vba digital-signature epplus