मैं जावा का उपयोग कर digitally sign an XML document करने का प्रयास कर रहा हूं। मुझे कुछ संदर्भों के साथ काम करने का कार्यान्वयन मिला है जो मैंने पाया है कि javax.xml.crypto.dsig
पैकेज में विभिन्न कार्यान्वयन का उपयोग करें।जावा में किसी XML दस्तावेज़ पर हस्ताक्षर करने का कोई आसान तरीका है?
हालांकि, मेरे वर्तमान कार्यान्वयन examples मैं देखा है की many तरह है - यह बल्कि वर्बोज़ है और java.xml.crypto.dsig
, javax.xml.transform
, और java.security
संकुल से कम से कम 23 विभिन्न एपीआई वर्गों का उपयोग करना, दूसरों के बीच में शामिल है। ऐसा लगता है कि मैंने factory factory factory भूमि दर्ज की है, और यह पता लगाने के लिए कि मुझे क्या चल रहा था, मुझे कई घंटे लग गए।
मेरा प्रश्न है, क्या ऐसा करने का कोई आसान तरीका है? मैं सार्वजनिक/निजी कुंजी फ़ाइलें मिल गया है और मैं एक XML दस्तावेज़ के लिए एक <Signature/>
जोड़ना चाहते हैं, वहाँ एक पुस्तकालय सिर्फ मेरे जैसे कुछ फोन की सुविधा देता है:
OutputStream signFile(InputStream xmlFile, File privateKey)
... के सभी बिना XMLSignatureFactory/CanonicalizationMethod/DOMSignContext पागलपन?
मैं क्रिप्टोग्राफ़ी में बहुत अच्छी तरह से ज्ञात नहीं हूं, और जावा-प्रदत्त एपीआई डिजिटल डेवलपमेंट से परिचित होने की कोशिश कर रहे डेवलपर्स के लिए मुश्किल है। यदि यह सब आवश्यक है या वर्तमान में कोई मित्रवत एपीआई नहीं है, तो यह ठीक है और मैं इसे उत्तर के रूप में स्वीकार करने के लिए तैयार हूं। मैं सिर्फ यह जानना चाहूंगा कि मैं अनावश्यक रूप से हार्ड रोड ले रहा हूं या नहीं।
एक वैकल्पिक समाधान के रूप में, मैं एक एक लाइनर प्रणाली कॉल करेंगे और http://www.aleksey.com/xmlsec/ का उपयोग हस्ताक्षर करने के लिए कर रहा था है एक्सएमएल। मैं इसे उत्तर के रूप में पोस्ट नहीं कर रहा हूं क्योंकि यह प्रश्न की सीमाओं के भीतर नहीं है (यानी "जावा में")। –