2014-03-26 45 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文档。

相关问题