c# - Sign file using .NET OpenSSL wrapper -
मैं इस लाइन को कॉपी करने की कोशिश कर रहा हूं
openssl smime -sign -signer & lt; chain_crt_file & gt ; -न & lt; infile & gt; आउट एंड एलटी; आउटफ़ाइल & gt; -किनी & lt; निजी कुंजी & gt; -उत्फोर्म डर
सी # में हालांकि यह मैंने सोचा था जितना आसान नहीं हो सके। अब तक मैं केवल इस बिंदु आया
OpenSSL.Core.BIO crtBio = OpenSSL.Core.BIO.File ("C: /asl/chain.crt", "r"); OpenSSL.Core.BIO कुंजीबाय = ओपनएसएसएल.कोर.बीआईओफ़ाइल ("सी: / एएसएल / कुंजीडएक्ट।", "आर"); ओपनएसएसएल.एक्स 509.एक्स 50 9 चेन सीआरटी = नया ओपनएसएसएल.एक्स 50 9.एक्स 50 9 चेन (सीआरटीबीओ); OpenSSL.Crypto.RSA कुंजी = OpenSSL.Crypto.RSA.FromPrivateKey (keyBio); स्ट्रिंग str = "test"; बाइट [] बाइट्स = नया बाइट [str.Length * sizeof (char)]; System.Buffer.BlockCopy (str.ToCharArray (), 0, बाइट्स, 0, बाइट्स। लैंग);
कहां (उम्मीद है कि) मैं चेन प्रमाण पत्र आयात कर रहा हूं और निजी कुंजी को डीकोड कर रहा हूं। अब यह बात है कि एक फाइल पर हस्ताक्षर कैसे करें और निर्यात डीईआर के रूप में है। OpenSSL.NET आवरण में दस्तावेज़ों का अभाव है और मैं इंटरनेट पर पाए गए उदाहरणों को 'सार्वजनिक / निजी कुंजी का उपयोग कर संदेशों को एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए कैसे' कहा जाता है जो कि यहाँ मामला नहीं है।
आरंभ करने के लिए मैंने इस " परीक्षण "स्ट्रिंग (जैसा कि फ़ाइल में / बाहर होना काफी सीधा होना चाहिए) पर मुझे कोई सुराग नहीं है कि कहां से शुरू हो।
बात यह है कि मुझे sign इस स्ट्रिंग की ज़रूरत है I
आरंभ करने के लिए मैंने इस "टेस्ट" स्ट्रिंग पर हस्ताक्षर करने की कोशिश की (जैसा कि फ़ाइल में / आउट काफी सीधा होना चाहिए) पर मुझे कोई सुराग नहीं है कि कहां से शुरू हो।
OpenSSL स्रोत है शायद शुरू करने के लिए एक अच्छी जगह है OpenSSL मुस्कुराना
में & lt; openssl dir & gt; /apps/smime.c
के लिए स्रोत प्रदान करता है।
OpenSSL का smime
उपयोगिता बस उपयुक्त पैरामीटर के साथ PKCS7_sign
कॉल करता है लाइन 688 से:
else अगर (ऑपरेशन और SMIME_SIGNERS) {int i; / * अगर अलग डेटा सामग्री हम केवल * एस / एमआईएमई आउटपुट स्वरूप स्ट्रीमिंग सक्षम करते हैं। * / अगर (ऑपरेशन == SMIME_SIGN) {यदि (झंडे और पीकेसीएस 7 डीईएटीएएचक्यू) {if (outformat == FORMAT_SMIME) झंडे | = PKCS7_STREAM; } और अगर (इंडीफ) झंडे | = PKCS7_STREAM; झंडे | = PKCS7_PARTIAL; P7 = PKCS7_sign (NULL, NULL, अन्य, इन, झंडे); अगर (! P7) गोटो अंत; } ...
PKCS7_sign
के ज्ञान के साथ, आप ओपनएसएसएल के डॉक्स पर यहां जा सकते हैं। या, आप एक उदाहरण के लिए शिकार कर सकते हैं।
मैं आपके द्वारा उपयोग किए जा रहे आवरण के बारे में नहीं जानता।
Comments
Post a Comment