2011-02-11 16 views
4

私はkeytoolを使って生成した鍵でjarファイルに署名しました。実行時に、jarが変更されていないことを確認するにはどうすればよいですか?自己署名入りの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); 
    } 
} 

(注)このコードは、jarファイルの整合性を検証しますが、特定のキーまたは証明書に対して署名を検証しないこと:このコードスニペットは、アーカイブ内のすべてのエントリの署名を検証します。

関連する問題