2013-05-31 3 views
9

से निजी कुंजी का उपयोग करें। KeyChain.getPrivateKeynull वापस नहीं करता है लेकिन PrivateKey ऑब्जेक्ट में गलत कुंजी है (इसके सभी महत्वपूर्ण फ़ील्ड null हैं)। मैंने सोचा था कि कुंजी निर्यात करने योग्य नहीं है और अगले कोड में इसका इस्तेमाल करने की कोशिश की:मैं कैसे एंड्रॉयड प्रणाली भंडारण से एक निजी कुंजी अगले कोड का उपयोग कर आयात करने के लिए कोशिश कर रहा हूँ एंड्रॉयड भंडारण

Cipher rsa; 
rsa = Cipher.getInstance("RSA"); 
rsa.init(Cipher.ENCRYPT_MODE, privateKey); 
byte[] enc = rsa.doFinal(str.getBytes()); 

लेकिन NullPointerException कि BouncyCastle internals से आता है मिला है।

कुंजी के साथ प्रमाणपत्र को पीएफएक्स फ़ाइल से एंड्रॉइड मानक मेमोरी कार्ड फ़ंक्शन से लोड करके आयात किया गया था।

मैं क्या गलत कर रहा हूं?

युपीडी: मैं अलग आरएसए प्रमाण पत्र के साथ ही करने का प्रयास किया है और परिणाम है एक ही :(

+0

privateKey रिक्त नहीं है –

+0

आप किस एंड्रॉइड ओएस का उपयोग कर रहे हैं? चेकआउट (https://code.google.com/p/ics-openvpn/source/browse/src/de/blinkt/openvpn/VpnProfile.java?r=77fc897870655adb63d53a72c72ee3e80b646d5a#403) के लिए KeyChain.getPrivateKey() –

+0

का नमूना उपयोग सामान्य रूप से निजी कुंजी नहीं होता है। – Henry

उत्तर

0

निम्नलिखित कोड है कि मेरे लिए पूरी तरह से काम कर रहा है का प्रयास करें:

KeyStore ks; 
ks = KeyStore.getInstance("AndroidCAStore"); 
ks.load(null, null); 
keyChain = KeyChain.getCertificateChain(ctx, certificateAlias); 
privateKey = KeyChain.getPrivateKey(ctx, certificateAlias); 
संबंधित मुद्दे