如何使用扩展验证证书以编程方式签署HCK提交

时间:2015-07-23 05:51:49

标签: c# windows x509certificate2 driver-signing

我们有一个用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作为参数。

1 个答案:

答案 0 :(得分:0)

这适用于我们:在我们的系统中,有EV证书USB令牌相关"身份验证代理"在高级客户端设置中,有一个设置为"单点登录"让代理只询问一次USB令牌密码并保留密码,直到桌面会话关闭。对于桌面,还要检查没有屏幕保护程序关闭打开的桌面。还有一个额外的计时器设置,用于"自动注销"在代理设置中。我们把它设置为#34;永远不会"。如果我们需要删除令牌并将其附加回系统,我们只需要再次提供EV令牌密码。然后我们运行一个小脚本来做一个测试标志并在打开对话框中输入密码。