2016-05-11 1 views
0

L'exécution du code de GitHub, dotnet-passbook (mis à jour thumbprint pour correspondre à la mienne)cause de la défaillance ComputerSignature dans dotnet-passbook

CmsSigner signer = new CmsSigner(SubjectIdentifierType.SubjectKeyIdentifier, passCert) 
      { 
       IncludeOption = X509IncludeOption.None 
      }; 
      signer.Certificates.Add(passCert); 
      signer.Certificates.Add(appleCert); 
      signer.SignedAttributes.Add(new Pkcs9SigningTime()); 

      Trace.TraceInformation("Processing the signature.."); 
     //fails on the next line 
      signing.ComputeSignature(signer); 

Je reçois l'erreur suivante:

Data: {System.Collections.ListDictionaryInternal} 
HResult: -2146893811 
HelpLink: null 
IPForWatsonBuckets: {1687357764} 
InnerException: null 
IsTransient: false 
Message: "Key does not exist.\r\n" 
RemoteStackTrace: null 
Source: "System.Security" 
StackTrace: " at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent)\r\n at Passbook.Generator.PassGenerator.SignManifestFile(PassGeneratorRequest request) in D:\\git\\dotnet-passbook\\Passbook.Generator\\PassGenerator.cs:line 261" 
TargetSite: {Void ComputeSignature(System.Security.Cryptography.Pkcs.CmsSigner, Boolean)} 

Je vois que il y avait quelques bugs avec Net4.0 cités ailleurs.

  • Tous les certificats sont valables encore (et non null)
  • Tous les certificats sont de la pomme

Toute idée rapide à faire?

Répondre

1

Ken,

Je suis l'auteur de dotnet-passbook, donc je vais essayer d'aider :)

Cela est généralement causé par le fait que la clé privée est absente du certificat. Lorsque vous les exportez, vous devez être sûr d'inclure le composant de clé privée. Ceci est requis pour signer le manifeste.

J'espère que cela aide.

+0

Salut, mon certificat d'Apple Worldwide Developer Relations Autorité de certification a expiré, donc je supprimé mon original de mmc et remplacé par un nouveau certificat téléchargé à partir d'ici - https://developer.apple.com/support/certificates/expiration/ Cependant, la bibliothèque dotnet-passbook échoue maintenant avec "" Impossible de signer le manifeste "" Des suggestions sur pourquoi? – Bhav

+0

Est-ce que le certificat que vous utilisez pour signer inclut la clé privée? – tomasmcguinness

+0

Non, c'est exactement celui disponible sur ce lien. – Bhav