我想验证具有特定公钥的证书是否存在于android密钥库中。我有一个键,它保存在一个字符串中。如何验证密钥库中是否存在相应的证书。当检查api时,我发现certificate.verify(mykey);是唯一的选择。但mykey的类型应该是PublicKey,我有它在string。
String = 0r1wxn7wIXJuS/hDnDvectD2VTmel9akk8awIWAXIRo= .....这是一个公钥哈希,我必须返回与此密钥对应的证书。
有人能帮我吗?
的问候科兹洛夫
KeyStore store = ... ;
byte[] target = ... ; // Base-64 decode your string.
MessageDigest digest = MessageDigest.getInstance(algorithm);
Enumeration<String> aliases = store.aliases();
while(aliases.hasMoreElements()) {
String alias = aliases.nextElement();
Certificate c = store.getCertificate(alias);
if (c == null)
continue;
PublicKey pub = c.getPublicKey();
byte[] hash = digest.digest(pub.getEncoded());
if (MessageDigest.isEqual(hash, target)) {
// Certificate "c" is a match.
}
}