2008-11-19 10 views
15

मैं एक इंस्टॉलर डीएलएल के लिए एक फ़ंक्शन लिख रहा हूं ताकि सिस्टम पर पहले से स्थापित EXE फ़ाइलों के प्रमाणीकरण हस्ताक्षर को सत्यापित किया जा सके।EXE - C++ पर प्रमाणीकरण हस्ताक्षर सत्यापित करें CAPICOM

ए) सत्यापित करें कि हस्ताक्षर मान्य है:

समारोह की जरूरत है।
बी) सत्यापित करें कि हस्ताक्षरकर्ता हमारा संगठन है।

क्योंकि यह एक इंस्टॉलर में है, और क्योंकि यह बड़े Win2k प्रतिष्ठानों पर चलने की जरूरत है, मैं CAPICOM.dll पर भरोसा करने, के रूप में यह लक्ष्य सिस्टम पर नहीं हो सकता है नहीं चाहते हो

WinVerifyTrust एपीआई हल करने के लिए बहुत अच्छा काम करता है (ए)।

मुझे प्रश्न में EXE पर हस्ताक्षर किए गए किसी ज्ञात प्रमाणपत्र (या उसमें गुण) की तुलना करने के लिए एक तरीका खोजने की आवश्यकता है।

+0

+1 ... अगर किसी को भी एक लाइब्रेरी के साथ आ सकता है जो इसे गैर-विंडोज प्लेटफ़ॉर्म पर भी करेगा, मैं खुश रहूंगा। मैं एक .EXE को जांचने में सक्षम होना चाहता हूं माइक्रोसॉफ्ट-लिनक्स के अंदर से हस्ताक्षरित है। – bobince

+2

@bobince, मोनो में ** सिंकोड ** और ** chktrust ** दोनों उपकरण हैं जो मोनो का समर्थन करने वाले प्रत्येक प्लेटफ़ॉर्म पर (यदि आप आवश्यक रूट प्रमाण पत्र स्थापित करते हैं) (S390x यदि आपको पसंद है ;-) – poupou

उत्तर

25

आपको CryptQueryObject का उपयोग करना चाहिए।

यह केबी-आलेख उपयोग को दर्शाता है: How To Get Information from Authenticode Signed Executables

टिप्पणीकार कि कैसे विंडोज एपीआई के बिना यह करने के लिए के बारे में पूछा करने के लिए, मैं किसी भी पुस्तकालय है कि यह कर सकते हैं के बारे में पता नहीं हूँ, लेकिन प्रारूप यहाँ प्रलेखित है: Windows Authenticode Portable Executable Signature Format

+0

डॉक्टर के लिए चीयर्स, अनुमान है कि मुझे इसे लंबा रास्ता तय करना होगा ... – bobince

0

यदि हस्ताक्षर मान्य है, तो इसकी प्रमाणपत्र श्रृंखला में आपका प्रमाणपत्र होगा। CertGetCertificateChain उस श्रृंखला को प्राप्त करेगा।

+1

क्या आपका मतलब है WINTRUST_DATA संरचना में प्रमाणपत्र शामिल है? या शायद CertGetCertificateChain का उपयोग सीधे फ़ाइल पर किया जा सकता है - मैं बस यह नहीं समझ सकता कि कैसे। मुझे कुछ स्पष्ट याद आना चाहिए। अधिक जानकारी के लिए अग्रिम धन्यवाद। –

संबंधित मुद्दे