【发布时间】:2013-03-15 00:34:15
【问题描述】:
我正在与 Jarsigner 合作。我想检查给定的 jar 是否已签名。如果用户上传 jar 文件,我想查看 jarfile 是否已签名。我尝试使用以下代码 (http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html#integritycheck)
// Ensure the jar file is signed.
Manifest man = jarFile.getManifest();
if (man == null) {
throw new SecurityException("The provider is not signed");
}
但即使我提供了一个未签名的 jar,man 对象也不为空,并且不会抛出此异常。如何检查给定的 jar 是否刚刚签名?
【问题讨论】:
-
签名的 jars 通常在 META-INF/ 目录下也有一个 .sf 文件和一个 .dsa 文件。
-
JarVerifier 是一个验证 JAR 文件签名的类。除了清单文件的存在之外,您还需要检查更多的东西。查看该课程以供参考。
-
@Henrik 你能告诉我们如何使用 JarVerifier 吗?
-
@Mihir 它的界面比较简单。一个最小的例子是
JarFile jarfile = new JarFile(applet); JarVerifier.verify(jarfile, trustedCertificates );。请注意,我省略了很多异常处理和东西。trustedCertificates是 X509 证书的List。希望对您有所帮助。
标签: java code-signing jarsigner