2016-03-01 10 views
1

Я завершил все тесты с помощью своего устройства USB в Hardware Lab Kit и теперь могу подготовить пакет драйверов .hlkx для отправки на веб-сайт Microsoft.Могу ли я подписать файл .hlkx вручную с использованием сертификата EV для отправки на веб-сайт Microsoft

Проблема заключается в наличии сертификата EV для драйвера Windows 10. Сертификат EV снабжен маркером Safenet USB, и этот токен USB расположен далеко от компьютера с установленным набором лабораторных лабораторных решений, поэтому я не могу автоматически подписывать пакет .hlkx в Hardware Lab Kit.

Вопрос в том, как я могу подписаться на драйверы для Windows 10 USB? У меня есть неподписанный драйвер (sys, cab, inf ... files), и у меня есть неподписанный пакет драйверов .hlkx из Hardware Lab Kit. Могу ли я подписать свой драйвер без отправки на веб-сайт Microsoft?

ответ

1

Вы можете

  1. Установите HLK Студию на компьютер, где маркер EV подключен;
  2. Скопируйте неподписанный файл .hlkx на компьютер с помощью токена EV;
  3. Когда вы запустите HLK Studio из pt1, он откроет файл .hlkx, укажите его;
  4. На вкладке Пакет HLK Studio создайте пакет как обычно.
+0

Вкладка «Создать пакет» на вкладке «Пакет». Только «слияние пакетов» и «добавить папку драйверов», –

0

Ответ предоставляется Алексей не работает для меня, я в конечном итоге использовал исходный код этой страницы:

https://msdn.microsoft.com/en-us/library/windows/hardware/mt674914%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

я должен был сделать некоторую дополнительную тонкую настройку:

Перед использования убедитесь, что сертификат EV находится в вашем хранилище личных сертификатов. Внутри инструмента, который у вас есть для вашего токена USB, вы сможете открыть сертификат и выбрать «Установить сертификат».

Создайте новое консольное приложение в визуальной студии и вставьте этот исходный код. Установите пакет самородок «WindowsBase», чтобы получить пространство имен System.IO.Packaging.

С некоторым дополнительным исходным кодом, мы можем иметь эту работу:

class Program 
{ 
    static void Main(string[] args) 
    { 
     X509Store store = new X509Store("My"); 

     store.Open(OpenFlags.ReadOnly); 
     X509Certificate2 evCert = null; 
     foreach (X509Certificate2 mCert in store.Certificates) 
     { 
      if (mCert.Thumbprint == "3DF652D7EyourThumbprintF") 
      { 
       evCert = mCert; 
      } 
     } 
     Sign(@"C:\Path\To\Your\HLKXFile.hlkx", evCert); 
    } 

    public static void Sign(string package, X509Certificate2 certificate) 
    { 
     // Open the package to sign it 
     Package packageToSign = Package.Open(package); 

     // Specify that the digital signature should exist 
     // embedded in the signature part 
     PackageDigitalSignatureManager signatureManager = new PackageDigitalSignatureManager(packageToSign); 

     signatureManager.CertificateOption = CertificateEmbeddingOption.InCertificatePart; 

     // We want to sign every part in the package 
     List<Uri> partsToSign = new List<Uri>(); 
     foreach (PackagePart part in packageToSign.GetParts()) 
     { 
      partsToSign.Add(part.Uri); 
     } 

     // We will sign every relationship by type 
     // This will mean the signature is invalidated if *anything* is modified in       //the package post-signing 
     List<PackageRelationshipSelector> relationshipSelectors = new List<PackageRelationshipSelector>(); 

     foreach (PackageRelationship relationship in packageToSign.GetRelationships()) 
     { 
      relationshipSelectors.Add(new PackageRelationshipSelector(relationship.SourceUri, PackageRelationshipSelectorType.Type, relationship.RelationshipType)); 
     } 

     try 
     { 
      signatureManager.Sign(partsToSign, certificate, relationshipSelectors); 
     } 
     finally 
     { 
      packageToSign.Close(); 
     } 
    } 
} 

Заменить Отпечаток с сертификатом EV SHA1.

 Смежные вопросы

  • Нет связанных вопросов^_^