2010-08-02 14 views

उत्तर

58

निश्चित रूप से।

प्रमाणपत्र वस्तुओं को CertificateFactory के उदाहरण द्वारा बनाया जा सकता है - विशेष रूप से, एक X509 प्रमाणपत्र बनाने के लिए कॉन्फ़िगर किया गया है। यह बहुत की तरह बनाया जा सकता है:

CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 

तो फिर तुम यह प्रमाण पत्र की बाइट्स वाले एक InputStream पारित करने के लिए की जरूरत है। आपके उत्तर के लिए

InputStream in = new ByteArrayInputStream(bytes); 
X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in); 
+0

धन्यवाद: यह एक ByteArrayInputStream में अपनी बाइट सरणी लपेटकर द्वारा प्राप्त किया जा सकता है। लेकिन मुझे मिल रहा है "(java.security.cert.CertificateException) java.security.cert.CertificateException: प्रमाणपत्र का विश्लेषण नहीं कर सका: java.io.IOException: खाली इनपुट" अंतिम पंक्ति पर। इनपुटस्ट्रीम खाली नहीं है, लेकिन यह अपवाद – 0bj3ct

+1

फेंकता है, वही बात मेरे साथ पहली बार हुई क्योंकि मैं सावधानी से नहीं सोच रहा था कि मैं क्या कर रहा था। मेरे मामले में ऐसा इसलिए था क्योंकि मैं उपरोक्त में प्रमाणपत्र के बजाए उपरोक्त से बाइट्स के साथ उपरोक्त करने की कोशिश कर रहा था। कीस्टोर से सर्टिफिकेट निकालना, एन्कोडेड बाइट्स प्राप्त करना, और फिर उन पर काम करना, यह जवाब मेरे लिए काम से ऊपर था। –

+2

मेरे मामले में समस्या यह थी कि बाइट [] बेस 64 एन्कोडेड था ... त्रुटि संदेश थोड़ा भ्रामक "खाली इनपुट" था। शायद यह किसी को कभी मदद करता है ... – riskop

-1
InputStream stream = null; 
byte[] bencoded = javax.xml.bind.DatatypeConverter.parseBase64Binary(x509CertificateStr); 

try { 
    CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 
    cert = (X509Certificate) certFactory.generateCertificate(stream); 

} catch (java.security.cert.CertificateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

प्रश्न बेस -64 का उल्लेख नहीं करता है, और 'स्ट्रीम' का प्रारंभिक गायब है। यह कोड 'NullPointerException' फेंक देगा। – EJP

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