繁体   English   中英

EPPlus - 如何删除数字签名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM