2014-03-26 49 views
2

使用Android 4.3時,此代碼返回null。使用「AndroidKeyStore」中的私鑰進行編碼()返回null

KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); 
keyStore.load(null); 
keyStore.setKeyEntry(alias, privateKey, null, certificateChain); 
PrivateKeyEntry entry=(PrivateKeyEntry)keyStore.getEntry(alias, new PasswordProtection(password)); 
assert(entry.getPrivateKey().getEncoded()!=null); 

如何獲得私鑰的編碼版本?

或者,是否有可能將私鑰處理程序傳輸到另一個應用程序?

感謝的

回答

2

Android的鑰匙鏈API阻止你能夠得到一個編碼的私鑰。

參見方法在OpenSSLRSAPrivateKey.java

@Override 
public final BigInteger getPrivateExponent() { 
    if (key.isEngineBased()) { 
     throw new UnsupportedOperationException("private exponent cannot be extracted"); 
    } 

158線但是用鑰匙串API的好處是,它提供了全系統的憑證存儲。任何應用程序都應該能夠通過別名檢索密鑰對和證書。請參閱KeyStore文檔。

相關問題