So überprüfen Sie ein JAR-Programm, das mit Jarsigner programmgesteuert signiert wurde
Ich bin zu wollen, melden Sie ein Glas mit jarsigner, dann überprüfen Sie es mit einer Java-Anwendung, die nicht über die jar als Teil der classpath (also nur mit einem Dateisystem-Speicherort der jar-Datei)
Nun mein problem ist immer die Signatur-Datei aus dem Glas, gibt es eine einfache Möglichkeit, dies zu tun?
Ich habe ein Spiel mit der Inflater-und Jar-InputStreams mit kein Glück.
Oder ist das etwas, was erreicht werden kann in einer besseren Art und Weise?
Dank
InformationsquelleAutor der Frage James Carr | 2009-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den security-Anbieter Einführungsleitfaden skizziert den Prozess der überprüfung von Gläsern. Obwohl diese Anweisungen sind für eine JCA-cryptographic service provider, um zu überprüfen, selbst, Sie sollte anwendbar sein für dein problem.
Speziell, check-out die
verify(X509Certificate targetCert)
Methode in der Beispiel-code, "MyJCE.java".InformationsquelleAutor der Antwort erickson
Können Sie einfach öffnen Sie die JAR mit java.util.jar.(Jar-Datei) und sagen, es zu überprüfen Sie die JAR-Datei. Wenn das JAR signiert ist, dann (jar-Datei) hat die option, um es zu überprüfen (standardmäßig aktiviert). Allerdings (jar-Datei) öffnet auch unsignierten JARs glücklich, daher müssen Sie auch überprüfen, ob die Datei signiert ist. Sie können dies durch die überprüfung der JAR-manifest-für *-Digest-Attribute: Elemente, die mit einem solchen Attribut Attribut signiert sind.
Beispiel:
InformationsquelleAutor der Antwort nd.
Können Sie den Eintrag.getCodeSigners (), um die Unterzeichner für einen bestimmten Eintrag in der JAR.
Stellen Sie sicher, öffnen Sie die Jardatei mit verify=true und vollständig Lesen Sie die JAR-Eintrag vor dem Aufruf-Eintrag.getCodeSigners().
Etwas wie dieser könnte verwendet werden, um zu überprüfen jeden Eintrag, der nicht eine Unterschrift Datei:
InformationsquelleAutor der Antwort Markus
Können Sie die jarsigner-Anwendung, dies zu tun. In processbuilder (oder Laufzeit.exec), kann man das Kommando mit diesen Argumenten
und wenn die Ausgabe enthält, verifiziert dann die jar ist signiert
Es gibt mehr komplizierte Dinge, die Sie tun können, wenn Sie die Ausgabe von jarsigner-code.
InformationsquelleAutor der Antwort Milhous