Сравнить сертификаты jar в каталоге - PullRequest
0 голосов
/ 29 июня 2018

Я пишу юнит-тесты для сравнения подписи сертификатов Jar. Я застрял на том, как указать путь к файлу в JarFile: на данный момент он, похоже, возвращает какое-то хешированное имя.

String[] jarClasses2 = dir2.list()
    for (int i = 0; i < jarClasses2.length; i++) {
    String jarName = jarClasses2[i]
    String filePath="pos/lib2/"+jarName
    JarFile jarFile1=new JarFile(filePath)
    JarFile jarFile = new JarFile(filePath)
    Certificate cert = entry.getCertificates()
    JarEntry entry=jarFile.entries()
    assertNotNull(cert)
}

Мой путь к файлу правильный, но когда я печатаю имя jarFile, это: "java.util.jar.JarFile@1e66f1f5". Я также получаю исключение при попытке привести JAR-файл к JarEntry:

* org.codehaus.groovy.runtime. util.jar.JarEntry '

Любые предложения о том, как определить местоположение банки и правильно разыграть ее?

1 Ответ

0 голосов
/ 29 июня 2018

Причина, по которой вы видите исключение приведения, состоит в том, что .entries() возвращает

Enumeration <JarEntry>

не просто один JarEntry. Так что вместо

    JarEntry entry=jarFile.entries()

вам нужно что-то вроде:

    Enumeration<JarEntry> entries=jarFile.entries()

    while(entries.hasMoreElements()) {
       JarEntry entry = entries.nextElement()
       Certificate[] certificates = entry.getCertificates()
       // process certificates in this jar entry
    }

(См. JarFile # записи () и JarEntry # getCertificates () ).

...