home *** CD-ROM | disk | FTP | other *** search
- package java.util.jar;
-
- import java.io.ByteArrayInputStream;
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Enumeration;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipFile;
- import sun.security.util.ManifestEntryVerifier;
-
- public class JarFile extends ZipFile {
- private Manifest man;
- private JarEntry manEntry;
- private boolean manLoaded;
- // $FF: renamed from: jv java.util.jar.JarVerifier
- private JarVerifier field_0;
- private boolean jvInitialized;
- private boolean verify;
- public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
-
- public JarFile(String var1) throws IOException {
- this(new File(var1), true, 1);
- }
-
- public JarFile(String var1, boolean var2) throws IOException {
- this(new File(var1), var2, 1);
- }
-
- public JarFile(File var1) throws IOException {
- this(var1, true, 1);
- }
-
- public JarFile(File var1, boolean var2) throws IOException {
- this(var1, var2, 1);
- }
-
- public JarFile(File var1, boolean var2, int var3) throws IOException {
- super(var1, var3);
- this.verify = var2;
- }
-
- public Manifest getManifest() throws IOException {
- if (!this.manLoaded) {
- this.manEntry = this.getJarEntry("META-INF/MANIFEST.MF");
- if (this.manEntry == null) {
- String[] var1 = this.getMetaInfEntryNames();
- if (var1 != null) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- if ("META-INF/MANIFEST.MF".equals(var1[var2].toUpperCase())) {
- this.manEntry = this.getJarEntry(var1[var2]);
- break;
- }
- }
- }
- }
-
- if (this.manEntry != null) {
- if (this.verify) {
- byte[] var3 = this.getBytes(this.manEntry);
- this.man = new Manifest(new ByteArrayInputStream(var3));
- this.field_0 = new JarVerifier(this.man, var3);
- } else {
- this.man = new Manifest(super.getInputStream(this.manEntry));
- }
- }
-
- this.manLoaded = true;
- }
-
- return this.man;
- }
-
- private native String[] getMetaInfEntryNames();
-
- public JarEntry getJarEntry(String var1) {
- return (JarEntry)this.getEntry(var1);
- }
-
- public ZipEntry getEntry(String var1) {
- ZipEntry var2 = super.getEntry(var1);
- return var2 != null ? new JarFileEntry(this, var2) : null;
- }
-
- public Enumeration entries() {
- Enumeration var1 = super.entries();
- return new 1(this, var1);
- }
-
- private void initializeVerifier() {
- ManifestEntryVerifier var1 = null;
-
- try {
- String[] var2 = this.getMetaInfEntryNames();
- if (var2 != null) {
- for(int var3 = 0; var3 < var2.length; ++var3) {
- JarEntry var4 = this.getJarEntry(var2[var3]);
- if (!((ZipEntry)var4).isDirectory()) {
- if (var1 == null) {
- var1 = new ManifestEntryVerifier(this.man);
- }
-
- byte[] var5 = this.getBytes(var4);
- if (var5 != null && var5.length > 0) {
- this.field_0.beginEntry(var4, var1);
- this.field_0.update(var5.length, var5, 0, var5.length, var1);
- this.field_0.update(-1, (byte[])null, 0, 0, var1);
- }
- }
- }
- }
- } catch (IOException var6) {
- this.field_0 = null;
- }
-
- if (this.field_0 != null) {
- this.field_0.doneWithMeta();
- if (JarVerifier.debug != null) {
- JarVerifier.debug.println("done with meta!");
- }
-
- if (this.field_0.nothingToVerify()) {
- if (JarVerifier.debug != null) {
- JarVerifier.debug.println("nothing to verify!");
- }
-
- this.field_0 = null;
- }
- }
-
- }
-
- private byte[] getBytes(ZipEntry var1) throws IOException {
- byte[] var2 = new byte[(int)var1.getSize()];
- DataInputStream var3 = new DataInputStream(super.getInputStream(var1));
- var3.readFully(var2, 0, var2.length);
- ((FilterInputStream)var3).close();
- return var2;
- }
-
- public synchronized InputStream getInputStream(ZipEntry var1) throws IOException {
- if (!this.manLoaded) {
- this.getManifest();
- }
-
- if (this.field_0 == null) {
- return super.getInputStream(var1);
- } else {
- if (!this.jvInitialized) {
- this.initializeVerifier();
- this.jvInitialized = true;
- if (this.field_0 == null) {
- return super.getInputStream(var1);
- }
- }
-
- return new JarVerifier.VerifierStream(this.man, (JarEntry)var1, super.getInputStream(var1), this.field_0);
- }
- }
-
- // $FF: synthetic method
- static JarVerifier access$000(JarFile var0) {
- return var0.field_0;
- }
- }
-