我使用X509Certificate2和EPPlus自动为Excel文件中的VBA代码签名,这很有效。现在我想添加时间戳,您知道在哪里设置吗?
如果我在VBA编辑器-工具-数字签名中手动签署代码,则代码将被签署,并带有时间戳(和计数签名)。因此,即使签署人的证书已过期,代码仍然有效。但是,使用EPPlus进行签名时却没有时间戳。在ExcelVBASignature.cs中,该功能似乎已经准备好了...
以下是目前我的做法:
如果我在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
是 true 吗?如果不是,似乎它将无法工作。 - Ernie S