我们有一个用 C# 编写的小应用程序,用于在 *.hckx 文件提交给 Microsoft 进行签名之前对其进行签名。
应用程序代码看起来像这样:
var workDirectory = new System.IO.DirectoryInfo(args[0]);
var filesToSign = from item in workDirectory.GetFiles("*.hckx", System.IO.SearchOption.TopDirectoryOnly) select item.FullName;
X509Certificate2 certificate = getCerticifate();
foreach (var item in filesToSign)
{
Console.WriteLine("Signing: {0}", item);
Microsoft.Windows.Kits.Hardware.ObjectModel.Submission.PackageManager.Sign(item, certificate);
Console.WriteLine("Signing finished");
var manager = new Microsoft.Windows.Kits.Hardware.ObjectModel.Submission.PackageManager(item);
Console.WriteLine("Verifying the signature.");
var signResult = manager.VerifySignature();
if (signResult != System.IO.Packaging.VerifyResult.Success)
{
throw new Exception(String.Format("Verification failed. Expected: {0}, but the result was: {1}.", System.IO.Packaging.VerifyResult.Success, signResult));
}
}
该代码适用于以前的“常规”证书。
对于新的 EV 证书,会显示一个额外的窗口,要求输入证书的 PIN。
所以问题是:是否有允许以编程方式使用 EV 证书进行完整签名的接口/类?
我希望 PackageManager.Sign 方法可以提供 PIN 作为参数。