2016-03-01 6 views
1

J'ai terminé tous les tests avec mon périphérique USB dans Hardware Lab Kit et peut maintenant préparer le package de pilote .hlkx à soumettre sur le site Web de Microsoft.Puis-je signer le fichier .hlkx manuellement en utilisant le certificat EV à soumettre sur le site Web de Microsoft?

Le problème est que le certificat EV est requis pour le pilote Windows 10. Le certificat EV est fourni avec le jeton USB Safenet et ce jeton USB est situé loin de l'ordinateur avec le kit de laboratoire matériel installé. Je ne peux donc pas signer automatiquement le paquet .hlkx dans le kit de laboratoire matériel.

La question est comment puis-je obtenir mes pilotes USB 10 Windows signé? J'ai le pilote non signé (sys, cab, inf ... fichiers) et j'ai un paquet de pilote .hlkx non signé de Hardware Lab Kit. Puis-je signer mon pilote sans le soumettre au site Web de Microsoft?

Répondre

1

Vous pouvez

  1. Installer HLK Studio l'ordinateur sur lequel jeton EV est branché;
  2. Copiez le fichier .hlkx non signé sur l'ordinateur avec le jeton EV;
  3. Lorsque vous lancerez HLK Studio à partir de pt1, il ouvrira le fichier .hlkx, spécifiez-le;
  4. Dans l'onglet Package de HLK Studio, créez un package comme d'habitude.
+0

Il y a maintenant "Créer un paquet" sur l'onglet Package. Seulement "fusionner le paquet" et "ajouter le dossier des pilotes" –

0

Réponse fournie par Alexey n'a pas fonctionné pour moi, j'ai finalement utilisé le code source de cette page:

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

je devais faire quelques ajustements supplémentaires:

Avant d'utiliser Assurez-vous que le certificat EV se trouve dans votre magasin de certificats personnel. Dans l'outil que vous avez pour votre jeton USB, vous devriez pouvoir ouvrir le certificat et choisir d'installer le certificat.

Créez une nouvelle application console dans Visual Studio et collez ce code source. Installez le package nugget "WindowsBase" pour obtenir l'espace de noms System.IO.Packaging.

Avec un code source supplémentaire, nous pouvons avoir cette travail:

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(); 
     } 
    } 
} 

Remplacez le Thumbprint avec votre certificat EV SHA1.