如何validation自签名jar上的签名?

我用我用keytool生成的密钥签署了我的jar。 在运行时,如何validationjar是否未被修改?

目标是使用证书信息并validation自jar构建以来jar中的每个类都未被修改。 这是运行时检查,因此包含代码的jar可以位于用户文件系统的任何位置。

JarFile类嵌入了jarvalidation器。 此代码段validation存档中所有条目的签名:

 JarFile jar = new JarFile("/path/to/myarchive.jar"); Enumeration 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); } } 

请注意,此代码validationjar的完整性,但不会根据给定的密钥或证书validation签名。