Я новичок в этой теме, поэтому надеюсь, что использую правильный словарный запас. Можно ли получить возможность Jarsigner внутри Java?
Мне нужна возможность программно делать следующие вещи:
- проверить, подписан ли jar с определенным закрытым ключом из хранилища ключей
- если банка проверена: отмените подпись на банке
- подпишите банку другим закрытым ключом из официального центра сертификации, который находится в том же или в другом хранилище ключей
В псевдокоде я представляю что-то вроде этого:
JarVerifier verifier = new JarVerifier(/*all needed parameters like the location of the keystore*/);
verifier.verify(jarFile); //returns a value which indicates the result (an Enum or an integer value)
Подписание jar должно работать аналогичным образом:
JarSigner signer = new JarSigner(/*all needed parameters like the location of the keystore, passwords, alias*/);
signer.sign(jarFile);
Я знаю, что это дубликат многих других вопросов, но я не доволен их ответами. Решением этих ответов является в большинстве случаев самописный класс, модификация класса, найденного из OpenJDK или подсказка, что код нужно еще написать и как это можно сделать. Для меня это неприемлемо, потому что они не поддерживаются (или я должен сам писать и поддерживать классы), я ничего не знаю об их корректности (особенно если мне придется писать код самому) и проблемах с лицензией.
Чего я не понимаю, так это того, что Oracle не предлагает простого решения, тем более, что это такая важная тема, где ошибка может привести к небезопасной системе.