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

标签 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 证书进行完整签名的接口(interface)/类?

我希望 PackageManager.Sign 方法能够提供 PIN 作为参数。

最佳答案

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

关于c# - 如何使用扩展验证证书以编程方式签署 HCK 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31579148/

相关文章:

c# - Azure Key Vault 和证书 - .NET Framework ClientCertificateCredential 对 Secret 的访问

xml - 为 SAML 签名和加密创建 x509.v3 自签名证书,Windows 8 R2

C# 更新环境变量 - SendMessageTimeout

windows - IBM Worklight - Windows - "' WEBWORKS_HOME' 环境变量未定义”

java - 在 Windows 机器上监控 (java) 进程死亡的最佳方法是什么?

.net - 如何判断 .PFX 文件是否需要密码

c# - 序列化派生类时不包括 ProtoBuf.net 基类属性

javascript - 如何为任何给定的库编写 Bundle.CdnFallbackExpression?

c# - 普通文本框中的自动文本更正

linux - 无法启动 : The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop