2011-02-11 3 views
4

keytool을 사용하여 생성 한 키로 jar 파일에 서명했습니다. 런타임시 jar가 수정되지 않았 음을 어떻게 확인할 수 있습니까?자체 서명 된 jar의 서명을 확인하는 방법은 무엇입니까?

목표는 인증서 정보를 사용하고 항아리가 만들어진 이후 항아리의 각 클래스가 수정되지 않았 음을 확인하는 것입니다. 이것은 런타임 검사이므로 코드가 들어있는 jar 파일은 사용자의 파일 시스템 어디에나있을 수 있습니다.

답변

2

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); 
    } 
} 

참고.

관련 문제