これが可能であるはずです。 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.
それはMANIFEST.MFに表示される、それはSFに表示されるので、SHA-1を計算し、すべてのクラスファイルを反復処理、フォーマットは、そのフォーマットをハッシュすることをファイル。
計算に関連するキーはありません。
例:「jce1_2_2.jar」(または適切に署名したもの)を考慮してください。これは、 "KeyAgreement.class" のBase64で(SHA1-1)(パスは関係しない)である
Name: javax/crypto/KeyAgreement.class
SHA1-Digest: c2p0JimzpV0dG+NChGLl5cI7MuY=
<empty line>
形態の
MANIFEST.MFエントリを含んでいます。 3番目の空行に注意してください。行末はCRLF(Windows)です。
ファイルのハッシュないMETA-INF/4JCEJARS.SFエントリ
Name: javax/crypto/KeyAgreement.class
SHA1-Digest: whGBXE+AvYO6wAoVCdnocOPIrsE=
が、上記のこれらの3本のライン。
については
だから、何のツールが存在しないと私は私のパッケージ中にMETA-INF/4JCEJARS.SFファイルを計算するためのいくつかのコードを書く必要があることを意味ですか?さらに、Java 6のソースを見て、jarsignerがこれらのSHA1-Digest行を生成する唯一のツールであるように見えます。 – cbliard
私はそのようなツールを知らない。あなたが知っていたように、jarsignerは署名だけではなく、ハッシュを行います。しかし、このような "ジャーハッシュ"ツールを書くのは難しいことではありません。 もちろん、必ずしもJavaである必要はありません。上記の回答に対する私のテストは、他のコマンドラインツール(unzip.exe、base64.exe、hex2bin.exeなど)を使用して行われました。バッチスクリプトも同様に実行する必要があります。 Javaソリューションが必要ですか? – mgaert
正解、私はJavaソリューションは必要ありません。実際、ダイジェストの計算方法を確認したり、同じ値を簡単に計算できるかどうかを確認するために、いくつかのコマンドラインツールを使用しました。それはあまりにも複雑ではなく、「ジャーハッシュ」ツールを書くことができます。どうもありがとう! – cbliard