Могу ли я подписать файл.hlkx вручную с помощью сертификата EV для отправки на веб-сайт Microsoft

Я выполнил все тесты с моим USB-устройством в Hardware Lab Kit и теперь могу подготовить пакет драйвера.hlkx для отправки на веб-сайт Microsoft.

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

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

3 ответа

Вы можете

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

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

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

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

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

Создайте новое консольное приложение в Visual Studio и вставьте этот исходный код. Установите пакет слепков "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();
        }
    }
}

Замените Thumbprint на ваш сертификат EV SHA1.

ИСПОЛЬЗУЙТЕ VSigntool(www.vsign.com), токен EV может быть общим, даже если он находится далеко от hlk

Другие вопросы по тегам