2009-07-14 13 views
0

Je voudrais vérifier un exécutable signé. L'exigence est de valider que l'exécutable lui-même est valide et d'où il vient (probablement de l'objet du cert). Le type de certificat est PKCS.Valider la signature sur EXE avec CertGetCertificateChain

J'ai trouvé un affichage similaire ici, Validate Authenticode signature on EXE - C++ without CAPICOM

La documentation Microsoft, entre autres, semble pointer vers CertGetCertificateChain, mais les exemples ont tendance à travailler avec les certificats dans un magasin. Est-ce que quelqu'un sait comment valider un exécutable signé en utilisant CertGetCertificateChain et API connexes?

Répondre

0

Pouvez-vous élaborer? la question à laquelle vous êtes lié semble fournir toutes les réponses dont vous auriez besoin. Vous indiquez que "les exemples ont tendance à fonctionner avec des certificats qui se trouvent dans un magasin", ce qui signifie que l'exécutable doit être signé avec un certificat qui s'enchaîne à un certificat racine dans le magasin de confiance de la machine.

Ceci est vrai; il n'y a aucun moyen de contourner cela, sinon il n'y a aucun moyen de croire que le signataire est ce qu'il dit qu'il est, et aucun moyen pour le fournisseur de révoquer le certificat si elle est utilisée frauduleusement. Donc, WinVerifyTrust est la bonne façon de valider un exécutable signé. C'est une API terrible alors faites attention. CryptQueryObject et les API correspondantes vous donneront plus d'informations telles que le nom de la personne ou de l'entreprise à laquelle le certificat a été délivré.

+0

Deux informations sont souhaitées. - L'application est-elle signée? - Qui est le signataire? Pour vérifier que l'exécutable WinVerifyTrust fonctionnera. Cependant, est resté coincé sur la façon de savoir qui est le signataire. Quelqu'un (MSalters) a répondu à l'article original en disant que CertGetCertificateChain serait utile. Cependant, n'a pas pu comprendre comment passer d'un fichier exécutable sur le disque à tous les types parmaux impairs de CertGetCertificateChain. – cobaia

+0

il semble que Josh K vous a indiqué dans la bonne direction. sinon je peux déterrer un vieux code que j'ai écrit et produire un échantillon. WinVerifyTrust est l'étape critique; au-delà c'est juste quelques cerceaux pour sauter qui ne sont pas très bien expliqués dans MSDN et similaires. –

0

J'ai posé cette question some time ago. J'avais vos besoins exacts. Il y a un exemple de code qui vous aidera. S'amuser!!

+0

Génial. Un des liens dans un commentaire (http://support.microsoft.com/kb/323809) est très bon. THX! – cobaia