モジュール java.base
パッケージ java.util.jar

クラスJarInputStream

java.lang.Object
すべての実装されたインタフェース:
Closeable, AutoCloseable

public class JarInputStream extends ZipInputStream
ZipInputStreamを拡張するJarInputStreamクラスは、入力ストリームからJARファイルの内容を読み取るために使用されます。 オプションの「マニフェスト」エントリの読取りをサポートします。 Manifestエントリは、JARファイルとそのエントリのメタ情報を格納するために使います。

マニフェストへのアクセス

getManifestメソッドは、ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリである場合に、エントリMETA-INF/MANIFEST.MFから「マニフェスト」を返すために使用されます。

getNextJarEntry()およびgetNextEntry()メソッドは、ストリームからJARファイル・エントリを読み取るために使用されます。 これらのメソッドは、ストリームの先頭にあるマニフェスト(META-INF/MANIFEST.MF)をスキップします。 つまり、マニフェストがストリームの最初のエントリである場合、これらのメソッドはマニフェストのエントリを返しません。 最初のエントリがMETA-INF/で、2番目のエントリがマニフェストの場合、これらのメソッドによって両方がスキップされます。 これらのメソッドが、ストリームの後半に出現したときにマニフェストをスキップするかどうかは指定されません。

署名済JARファイル

JarInputStreamは、次の場合に「署名済JARファイル」内のエントリのシグネチャを検証します:
  • Manifestは、ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリです。
  • すべてのシグネチャ関連エントリがManifestの直後に続く

エントリの入力ストリームが終了するまで読み取ることによってJarEntryが完全に検証されると、JarEntry.getCertificates()をコールしてこのエントリの証明書を取得し、JarEntry.getCodeSigners()をコールして署名者を取得できます。

検証プロセスには署名者の証明書の検証が含まれていないことに注意してください。 呼出し側で、JarEntry.getCodeSigners()の戻り値を検査し、署名が信頼できるかどうかをさらに判断してください。

APIのノート:
JARファイルの署名後にJarEntryが変更されると、エントリの読取り時にSecurityExceptionがスローされます。
導入されたバージョン:
1.2
関連項目: