Как проверить открытый ключ в формате string / byte [] по сертификатам в хранилище bks - PullRequest
0 голосов
/ 27 декабря 2011

Я хочу проверить, существует ли сертификат с определенным открытым ключом в хранилище ключей Android или нет. У меня есть ключ, который содержится в строке. Как проверить, присутствует ли соответствующий сертификат в хранилище ключей.Когда проверил apis, я обнаружил Certificate.verify (Mykey);это единственный вариант. но mykey должен иметь тип PublicKey, и он у меня в string .

String равен 0r1wxn7wIXJuS / hDnDvectD2VTmel9akk8awIWAXIRo = ..... это хешоткрытый ключ ... я должен вернуть сертификат, соответствующий этому ключу.Кто-нибудь может мне помочь?

Кто-нибудь может мне помочь?

С уважением, Козлов

1 Ответ

0 голосов
/ 28 декабря 2011
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.
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...