如何根据bks存储库中的证书验证字符串/字节[]格式的公钥



我想验证具有特定公钥的证书是否存在于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.
  }
}

最新更新