Как проверить подпись на собственной подписанной банке? - PullRequest
4 голосов
/ 11 февраля 2011

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

Цель состоит в том, чтобы использовать информацию о сертификате и убедиться, что каждый класс в банке не был изменен с момента его создания.Это проверка во время выполнения, поэтому файл jar, содержащий код, может находиться в любом месте файловой системы пользователя.

1 Ответ

2 голосов
/ 11 февраля 2011

Класс JarFile встраивает верификатор jar. Этот фрагмент кода проверяет подпись всех записей в архиве:

JarFile jar = new JarFile("/path/to/myarchive.jar");
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
    JarEntry entry = entries.nextElement();
    try {
        jar.getInputStream(entry);
    } catch (SecurityException se) {
        /* Incorrect signature */
        throw new Error("Signature verification failed", se);
    }
}

Обратите внимание, что этот код проверяет целостность банки, но не проверяет подпись с данным ключом или сертификатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...