Verificar e assinar um jar programaticamente
Eu sou novo neste tópico, portanto, espero usar o vocabulário correto. É possível obter a possibilidade do Jarsigner dentro do Java próprio?
Eu preciso da possibilidade de fazer as seguintes coisas programaticamente:
verificar se um jar está assinado com uma certa chave privada de um keystorese o jar for verificado: cancele a assinatura do jarassine o jar com outra chave privada de uma autoridade de certificação oficial, que esteja no mesmo ou em outro keystoreNo pseudo-código, imagino algo assim:
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)
A assinatura do jar deve funcionar de maneira semelhante:
JarSigner signer = new JarSigner(/*all needed parameters like the location of the keystore, passwords, alias*/);
signer.sign(jarFile);
Sei que essa é uma duplicata de muitas outras perguntas, mas não estou feliz com as respostas deles. A solução dessas respostas é, na maioria dos casos, uma classe auto-escrita, uma modificação de uma classe encontrada no OpenJDK ou uma dica de que o código ainda precisa ser escrito e como isso pode ser feito. Isso não é aceitável para mim, porque elas não são mantidas (ou eu tenho que escrever e manter as classes), não sei nada sobre a correção delas (especialmente se precisar escrever o código pessoalmente) e problemas de licença.
O que não entendo é que parece não haver uma solução fácil fornecida pela Oracle, especialmente por ser um tópico tão crítico, onde um erro pode levar a um sistema inseguro.