मैं कोड लिखने की कोशिश कर रहा हूं जो डीएलएल या EXEs से हस्ताक्षर (प्रमाण पत्र) पढ़ता है। अधिकांश डीएलएल या EXEs में केवल एक हस्ताक्षर होता है, और मेरा कोड सही ढंग से इस हस्ताक्षर से जुड़े सभी प्रमाण पत्र पढ़ता है। अधिक विशेष रूप से यह हस्ताक्षर प्रमाण पढ़ता है, यह जारीकर्ता (रूट नहीं) है, काउंटरसिग्नलिंग प्रमाण (टाइमस्टैम्प के साथ) और इसके जारीकर्ता (रूट नहीं)। मेरे पास सी ++ और सी # में 2 नमूना कार्यक्रम हैं, वे दोनों एक ही कॉर्ट लौटाते हैं। यह सी # कोड है, सी ++ 100 बार लंबे समय तक :)निष्पादन योग्य फ़ाइल से कई हस्ताक्षर पढ़ना
static void Main(string[] args)
{
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(args[0]);
}
है लेकिन DLLs 2 हस्ताक्षर है, फ़ाइल गुण में दिखाया गया है/डिजिटल हस्ताक्षर, उदाहरण के लिए C देखते हैं: \ Program Files (x86) \ Microsoft SQL सर्वर \ 80 \ उपकरण \ Binn \ Msvcr71.dll:
इस DLL मेरे कोड केवल पहले हस्ताक्षर से संबद्ध प्रमाणपत्रों को पढ़ता है।
मैंने साइनटोल का उपयोग करने की भी कोशिश की, और यह मेरे कोड के समान जानकारी देता है: पहला प्रमाणपत्र (इसके पथ के साथ), और काउंटरसिग्नेचर (इसके पथ के साथ)। लेकिन अंत में त्रुटि भी ध्यान दें।
C:\Windows>signtool verify /d /v "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\msvcr71.dll"
Verifying: C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\msvcr71.dll
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 33BBCCF6326276B413A1ECED1BF7842A6D1DDA07
Signing Certificate Chain:
Issued to: Microsoft Root Certificate Authority
Issued by: Microsoft Root Certificate Authority
Expires: Sun May 09 19:28:13 2021
SHA1 hash: CDD4EEAE6000AC7F40C3802C171E30148030C072
Issued to: Microsoft Code Signing PCA
Issued by: Microsoft Root Certificate Authority
Expires: Wed Jan 25 19:32:32 2017
SHA1 hash: FDD1314ED3268A95E198603BA8316FA63CBCD82D
Issued to: Microsoft Corporation
Issued by: Microsoft Code Signing PCA
Expires: Fri Feb 01 18:49:17 2013
SHA1 hash: 8849D1C0F147A3C8327B4038783AEC3E06C76F5B
The signature is timestamped: Sat Feb 11 14:03:12 2012
Timestamp Verified by:
Issued to: Microsoft Root Certificate Authority
Issued by: Microsoft Root Certificate Authority
Expires: Sun May 09 19:28:13 2021
SHA1 hash: CDD4EEAE6000AC7F40C3802C171E30148030C072
Issued to: Microsoft Time-Stamp PCA
Issued by: Microsoft Root Certificate Authority
Expires: Sat Apr 03 09:03:09 2021
SHA1 hash: 375FCB825C3DC3752A02E34EB70993B4997191EF
Issued to: Microsoft Time-Stamp Service
Issued by: Microsoft Time-Stamp PCA
Expires: Thu Oct 25 16:42:17 2012
SHA1 hash: FC33104FAE31FB538749D5F2D17FA0ECB819EAE5
SignTool Error: The signing certificate is not valid for the requested usage.
This error sometimes means that you are using the wrong verification
policy. Consider using the /pa option.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
2 प्रश्न हैं: - दूसरे हस्ताक्षर का उद्देश्य है क्या - इसे पढ़ने के (अब तक केवल Windows Explorer फ़ाइल संपत्ति संवाद यह दिखा सकते हैं)।
धन्यवाद!
कारण आप उन दोहरी हस्ताक्षर देखते हैं क्योंकि [माइक्रोसॉफ्ट का बहिष्कार कर रहा है] है (http://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code -साइनिंग-एंड-टाइमस्टैम्पिंग.एएसपीएक्स) एसएचए -1 के हस्ताक्षर [एसएए -1 '[अपर्याप्त टकराव प्रतिरोध] के कारण हस्ताक्षर (http://crypto.stackexchange.com/questions/845/what-is-wrong-with-using- SHA1 में डिजिटल हस्ताक्षर-क्यों-है एक मजबूत-हैश-कामकाज)। वे पिछड़े संगतता के लिए आज छोड़ दिए गए हैं। – ahmd0