目前我们使用 jarsigner 来签署我们的 jar。然后,我们显示某些特定类的一些 SHA1-Digest 值,以向外部审计员证明代码在版本之间没有更改。
我们只依靠META-INF/xxx.SF
文件来获取摘要信息,我们从不使用META-INF/xxx.DSA
签名块文件。
由于我们只需要在代码中进行摘要计算,我想知道是否可以有.SF
使用一些java工具生成的文件,而不实际使用密钥。
I read http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html但看起来密钥是强制性的。
这应该是可能的。 MANIFEST.MF 文件包含相应类文件的 Base64 编码的 SHA-1。
从你的文档中:
In the manifest file, the SHA digest value for each source file is the
digest (hash) of the binary data in the source file. In the .SF file,
on the other hand, the digest value for a given source file is the
hash of the three lines in the manifest file for the source file.
因此,迭代所有类文件,计算 SHA-1,按照 MANIFEST.MF 中显示的格式进行格式化,然后对其进行哈希处理并按 SF 文件中显示的格式进行格式化。
计算中不涉及密钥。
示例:考虑“jce1_2_2.jar”(或任何您已正确签名的内容)。这包含
-
表单的 MANIFEST.MF 条目
Name: javax/crypto/KeyAgreement.class
SHA1-Digest: c2p0JimzpV0dG+NChGLl5cI7MuY=
<empty line>
这是“KeyAgreement.class”的 Base64(SHA1-1)(路径不相关)。注意第三个空行。行结尾为 CRLF (Windows)。
-
META-INF/4JCEJARS.SF 条目
Name: javax/crypto/KeyAgreement.class
SHA1-Digest: whGBXE+AvYO6wAoVCdnocOPIrsE=
这不是文件的哈希值,而是上面三行的哈希值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)