Проверьте правильность ключа ключа хранилища андроида

Я могу автоматизировать некоторые вещи, которые включают андроид keytool и jarsigner. Инструмент берет хранилище ключей, пароль для хранилища ключей, имя псевдонима и пароль для псевдонима/ключа, и я пытаюсь найти способ явно проверить, правильно ли указан пароль для псевдонима/ключа.

Любые идеи? Кроме того, мне нужно проверить это без файла jar, чтобы подписать - получение этого файла в моем контексте является длительным, поэтому я хочу отменить раньше, чем позже.

Ответ 1

Вы также можете проверить правильность пароля, не пытаясь сменить пароль. Я сделал это, указав свойства хранилища ключей с помощью этой команды:

keytool -list -keystore <keystorefile> -storepass <passwordtocheck>

Ответ 2

Вы можете сделать это несколькими способами:

а. С помощью keytool

Если вы запустите команду keytool -keypasswd -keystore <keystore> -alias <alias> -storepass <storepass> -keypass <keypass> -new <keypass>, вы получите сообщение об ошибке Keystore was tampered with, or password was incorrect, если пароль хранилища ключей неверен или ошибка Cannot recover key, если пароль псевдонима неверен. К сожалению, код возврата равен 1 в обоих случаях, поэтому вам нужно будет выполнить синтаксический анализ вывода программы, если вы хотите быть умным относительно типа ошибки.

В. С небольшой программой Java

Что-то в этом роде:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

try (FileInputStream fis = new FileInputStream(keystore)) {
    ks.load(fis, ksPw.toCharArray());
}

ks.getEntry(alias, new KeyStore.PasswordProtection(aliasPw.toCharArray()));

произойдет сбой в строке 4 с помощью java.io.IOException, если пароль хранилища ключей неверен или с java.security.UnrecoverableKeyException в строке 7, если пароль псевдонима неверен.