18

मैं नमूना कोड (या पुस्तकालय) की तलाश में हूं जो सीई ++ का उपयोग कर गैर-विंडोज प्लेटफॉर्म पर विंडोज पीई फाइलों (.exe, .dll, .cab, .etc) के लिए डिजिटल हस्ताक्षर मान्य करने में मेरी सहायता कर सकता है। मैं एक मंच-स्वतंत्र दृष्टिकोण की तलाश में हूं।पोर्टेबल कोड में माइक्रोसॉफ्ट के पोर्टेबल निष्पादन योग्य प्रारूप के लिए मैं डिजिटल हस्ताक्षर कैसे मान्य कर सकता हूं?

धन्यवाद!

+0

+1 शीर्षक को संशोधित करने के लिए थोड़ा सा संशोधित किया गया है कि आप डिजिटल हस्ताक्षर का मतलब है और फ़ाइल हस्ताक्षर नहीं। (उदाएमजेड, "पीई \ 0 \ 0", आदि) –

उत्तर

5

इसका कोई सामान्य जवाब नहीं है, खासकर जब आपने यह निर्दिष्ट नहीं किया है कि आप इसे कितना बंद करना चाहते हैं। ओपन सोर्स लाइब्रेरीज़ के साथ x86 पर लिनक्स आसान होगा, एमआईपीएस 32 या आर्डिनो पर चल रहे यूसीएस असंभव के बगल में होंगे ..

सबसे पहले, आपको स्पष्ट रूप से पीई प्रारूप को पढ़ने और पार्स करने में सक्षम होना चाहिए, विशेष रूप से आपको पर गहन अवलोकन अलग अलग अनुभागों की सामग्री को पाने के लिए और उन्हें हैश, .text, .data आदि जैसे के लिए करने में सक्षम हो कैसे अपने को एक साथ रखा है, यहाँ देखो:

http://msdn.microsoft.com/en-us/magazine/cc301805.aspx http://msdn.microsoft.com/en-us/magazine/ms809762.aspx

अब आप इस होना चाहता हूँ पोर्टेबल, तो आप या तो अपने स्वयं के पीई रीडर/सीमित लेखक को रोल कर सकते हैं, या ओपन सोर्स प्रोजेक्ट्स में से कुछ में देख सकते हैं जो पहले से ही ऐसा करते हैं। ReactOS या मोनो आज़माएं। या यदि आप खुश चल अजगर कर रहे हैं, इस http://code.google.com/p/pefile/

दूसरा प्रयास करते हैं, के रूप में आप क्रिप्टोग्राफी, डिजिटल हस्ताक्षर, और X.509 प्रमाणपत्र, आपका काम लगभग एक पूर्ण विकसित पोर्टेबल क्रिप्टो पुस्तकालय की जरूरत पर हस्ताक्षर करने के प्रदर्शन करने के लिए, प्रमाणपत्र श्रृंखला के साथ काम कर रहे हैं सत्यापन और इतने पर। यदि आप जीपीएल से खुश हैं, तो यदि आप बीएसडी लाइसेंस चाहते हैं तो ओपनएसएसएल या सीएएसएसएसएल, या बॉटन आज़माएं।

एथेंटिकोड हस्ताक्षर की सटीक प्रारूप, पर हस्ताक्षर करने की प्रक्रिया और सत्यापन प्रक्रिया यहाँ desribed है: http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx (Authenticode_PE.docx)

यह सब कुछ एक साथ खींचने के लिए काफी कोड का एक सा की आवश्यकता होगी।

+0

ओपनएसएसएल एक पूर्ण उड़ा क्रिप्टो लाइब्रेरी नहीं है - केवल एसएसएल। [CryptoPP] (http://cryptopp.com/), दूसरी तरफ, एक पूर्ण उड़ा हुआ क्रिप्टो लाइब्रेरी है - उनके पास एक [अनुभाग X.50 9 प्रमाणपत्र] है [http://www.cryptopp.com/ विकी/एक्स.50 9) यदि वास्तव में वह पीई उपयोग करता है तो प्रारूप। (CryptoPP के बारे में अच्छी बात यह है कि यह भी सार्वजनिक डोमेन है :) –

+4

बिली: पिछली बार मैंने ओपनएसएसएल [क्रिप्टो] (http://www.openssl.org/docs/crypto/crypto.html) और [X509 प्रमाणपत्र हैंडलिंग] की जांच की थी। (http://www.openssl.org/docs/crypto/x509.html#) बस ठीक है। – sehe

+0

@sehe: हम्म .. यह मैंने सोचा से अधिक है। (उसने कहा, यह अभी भी क्रिप्टो ++ में उपलब्ध होने से बहुत कम है, और क्रिप्टो ++ के पास एक बेहतर लाइसेंस है) –

10

आप एक पूर्ण प्रोग्रामेटिक तरीके से WINE के WinVerifyTrustimplementation पर देख सकते हैं।

और, वास्तव में, यहां एक अच्छा लिंक How to verify executable digital signatures under Linux? है जो वाइन कार्यान्वयन (जो 2008 में वापस था) के बारे में शिकायत करता है, और इस प्रकार, प्रक्रिया को काफी "पोर्टेबल" तरीके से समझाता है, बशर्ते आपके पास ओपनएसएसएल के समान कुछ उपलब्ध हो आपका मंच

0

माइक्रोसॉफ्ट प्रामाणिकोड निश्चित रूप से एक बड़ा हश-हश रहस्य नहीं है और आप download technical specs and more कर सकते हैं कि प्रमाणीकरण कैसे काम करता है। आप Windows PE file format के बारे में तकनीकी जानकारी भी डाउनलोड कर सकते हैं। चूंकि आपने स्पष्ट रूप से मौसम नहीं बताया है, इसलिए आप लिनक्स, मैक या स्मार्टफोन के लिए कुछ चाहते थे, मैं आपको पर्याप्त समाधान प्रदान नहीं कर सकता। हालांकि, मैंने आपको प्रदान की गई जानकारी के साथ OpenSSL के साथ, आप अपनी पसंद के भाषा और ओएस में ऐसा करने के लिए अपना स्वयं का प्रोग्राम बनाने में सक्षम होना चाहिए।

0

प्रश्न पुराना है, लेकिन मैंने उन लोगों के लिए अपना जवाब दिया जो अभी भी एक ही समस्या का सामना कर रहे हैं।

आप लिनक्स या अन्य * निक्स सिस्टम पर एमएस प्रमाणीकरण हस्ताक्षर सत्यापित करने के लिए osslsigncode tool का उपयोग कर सकते हैं। हालांकि टूल केवल हस्ताक्षर को सत्यापित करता है और प्रमाणपत्र रद्द करने, टाइमस्टैम्प वैधता इत्यादि की जांच नहीं करता है, हालांकि आप हस्ताक्षर से डेटा निकाल सकते हैं और इसे मैन्युअल रूप से कर सकते हैं।

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