4

C# で記述された小さなアプリがあり、署名のために Microsoft に送信される前に *.hckx ファイルに署名するために使用します。

アプリケーション コードは +/- 次のようになります。

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 証明書を使用して完全な署名を作成できるインターフェイス/クラスはありますか?

PIN をパラメーターとして提供する可能性がある PackageManager.Sign メソッドを期待します。

4

1 に答える 1

0

これはうまくいきます。私たちのシステムには、EV 証明書 USB トークンに関連する「認証エージェント」があり、高度なクライアント設定には、エージェントが USB トークンのパスワードを 1 回だけ要求し、デスクトップ セッションが閉じられるまで、パスワードは保持されません。デスクトップについては、開いているデスクトップを閉じるスクリーンセーバーがないことも確認してください。エージェント設定には、「自動ログオフ」用の追加のタイマー設定もあります。「しない」に設定しました。トークンを削除してシステムに戻す必要がある場合にのみ、EV トークンのパスワードを再度入力する必要があります。次に、小さなスクリプトを実行してテスト署名を行い、最初のダイアログでパスワードを入力します。

于 2016-03-30T09:35:13.877 に答える