[英]EPPlus - How to Remove Digital Signature
我想从 VBA 签名的 excel 宏文件中删除数字签名。 但是,当我查看 EPPlus 的库时,我看到“签名”属性是只读的,并且将证书设置为 null 似乎并没有删除它,只会使文件中的签名无效:
using (ExcelPackage xlPackage = new ExcelPackage(fiNew))
{
xlPackage.Workbook.VbaProject.Signature.Certificate = null;
xlPackage.Save();
}
调用 dispose 方法也不起作用,保存时出错。 有人知道如何在 EPPlus 中执行此操作吗?
查看源代码,只需提供没有私钥的证书 - 参见第 137 行。
internal void Save(ExcelVbaProject proj)
{
if (Certificate == null)
{
return;
}
if (Certificate.HasPrivateKey==false) //No signature. Remove any Signature part
例如,您可以只使用Trusted Root Certificate Authorities
中没有密钥的第一个证书,只要您没有在根证书颁发机构上运行或有人意外地引入了 PFX ......所以我们也对此进行过滤:
下面是一些可从Trusted Root Certificate Authorities
存储中读取的代码:
using (var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser)) {
store.Open(OpenFlags.ReadOnly);
var someCertWithoutPrivateKey =
store.Certificates
.Cast<X509Certificate2>()
.Where(c => !c.HasPrivateKey)
.FirstOrDefault();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.