ओपनएसएसएल, साथ ही साथ अन्य डीएसए कार्यान्वयन, ASN.1 प्रारूप में हस्ताक्षर आउटपुट का उपयोग करते हुए ASN.1 प्रारूप में डीएसए हस्ताक्षर आयात करने के लिए कैसे करें। इस प्रकार, एएसएन .1 संरचना शीर्षकों के कारण 40-बाइट हस्ताक्षर (दो 20-बाइट पूर्णांक) 46 बाइट बन जाते हैं। (विवरण के लिए this forum post देखें।)BouncyCastle (C#)
मेरा प्रश्न है, कोई इस प्रारूप को सी # में कैसे संभालता है? (या कहीं और, उस बात के लिए)
मैं थोड़ी देर के खर्च नेट System.Security.Crypto
संकुल का उपयोग कर इसके साथ सौदा करने की कोशिश कर, लेकिन यह है कि (वास्तव में निराशा होती है पर छोड़ दिया है क्योंकि यह स्पष्ट रूप से ASN.1 पार्स करने के लिए आंतरिक कोड है चूंकि यह डीईआर प्रारूप पढ़ सकता है, लेकिन इसका उपयोग करने के लिए आपके पास कोई रास्ता नहीं है - लेकिन मैं digress ...)
फिर, मैंने BouncyCastle C# लाइब्रेरी के साथ काम करना शुरू कर दिया। मैं इसे एक Asn1Object
में प्राप्त कर सकते हैं, और अगर मैं इसे विस्तार करते हुए डिबगिंग मैं देख रहा हूँ कि वह दो पूर्णांकों के साथ एक DerSequence
शामिल है, लेकिन कैसे मैं उन्हें बाहर खींच है (अधिमानतः BigIntegers
में तो मैं उन्हें DSA.VerifySignature
फ़ीड कर सकते हैं?)
कोड का नमूना:
Byte[] msgText = ReadFile("test_msg.txt");
Byte[] msgSigRaw = ReadFile("test_sig_1.bin"); // reads binary ASN.1 sig using FileStream
Asn1Object sigASN = Asn1Object.FromByteArray(msgSigRaw); // parses into Asn1Object
...
X509Certificate implCert = ReadCertificate("pubcert_dsa.cer"); // cert in DER format
DsaSigner DSA = new DsaSigner();
DSA.Init(false, implCert.GetPublicKey());
...
BigInteger sigIntR, sigIntS;
... //TODO: how to get signature from sigASN into sigIntR, sigIntS?
Boolean validSig = DSA.VerifySignature(msgText, sigIntR, sigIntS); // my goal
धन्यवाद! ऐसा लगता है कि काम करता है! –