home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / jar / JarFile.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.5 KB  |  168 lines

  1. package java.util.jar;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.DataInputStream;
  5. import java.io.File;
  6. import java.io.FilterInputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.util.Enumeration;
  10. import java.util.zip.ZipEntry;
  11. import java.util.zip.ZipFile;
  12. import sun.security.util.ManifestEntryVerifier;
  13.  
  14. public class JarFile extends ZipFile {
  15.    private Manifest man;
  16.    private JarEntry manEntry;
  17.    private boolean manLoaded;
  18.    // $FF: renamed from: jv java.util.jar.JarVerifier
  19.    private JarVerifier field_0;
  20.    private boolean jvInitialized;
  21.    private boolean verify;
  22.    public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
  23.  
  24.    public JarFile(String var1) throws IOException {
  25.       this(new File(var1), true, 1);
  26.    }
  27.  
  28.    public JarFile(String var1, boolean var2) throws IOException {
  29.       this(new File(var1), var2, 1);
  30.    }
  31.  
  32.    public JarFile(File var1) throws IOException {
  33.       this(var1, true, 1);
  34.    }
  35.  
  36.    public JarFile(File var1, boolean var2) throws IOException {
  37.       this(var1, var2, 1);
  38.    }
  39.  
  40.    public JarFile(File var1, boolean var2, int var3) throws IOException {
  41.       super(var1, var3);
  42.       this.verify = var2;
  43.    }
  44.  
  45.    public Manifest getManifest() throws IOException {
  46.       if (!this.manLoaded) {
  47.          this.manEntry = this.getJarEntry("META-INF/MANIFEST.MF");
  48.          if (this.manEntry == null) {
  49.             String[] var1 = this.getMetaInfEntryNames();
  50.             if (var1 != null) {
  51.                for(int var2 = 0; var2 < var1.length; ++var2) {
  52.                   if ("META-INF/MANIFEST.MF".equals(var1[var2].toUpperCase())) {
  53.                      this.manEntry = this.getJarEntry(var1[var2]);
  54.                      break;
  55.                   }
  56.                }
  57.             }
  58.          }
  59.  
  60.          if (this.manEntry != null) {
  61.             if (this.verify) {
  62.                byte[] var3 = this.getBytes(this.manEntry);
  63.                this.man = new Manifest(new ByteArrayInputStream(var3));
  64.                this.field_0 = new JarVerifier(this.man, var3);
  65.             } else {
  66.                this.man = new Manifest(super.getInputStream(this.manEntry));
  67.             }
  68.          }
  69.  
  70.          this.manLoaded = true;
  71.       }
  72.  
  73.       return this.man;
  74.    }
  75.  
  76.    private native String[] getMetaInfEntryNames();
  77.  
  78.    public JarEntry getJarEntry(String var1) {
  79.       return (JarEntry)this.getEntry(var1);
  80.    }
  81.  
  82.    public ZipEntry getEntry(String var1) {
  83.       ZipEntry var2 = super.getEntry(var1);
  84.       return var2 != null ? new JarFileEntry(this, var2) : null;
  85.    }
  86.  
  87.    public Enumeration entries() {
  88.       Enumeration var1 = super.entries();
  89.       return new 1(this, var1);
  90.    }
  91.  
  92.    private void initializeVerifier() {
  93.       ManifestEntryVerifier var1 = null;
  94.  
  95.       try {
  96.          String[] var2 = this.getMetaInfEntryNames();
  97.          if (var2 != null) {
  98.             for(int var3 = 0; var3 < var2.length; ++var3) {
  99.                JarEntry var4 = this.getJarEntry(var2[var3]);
  100.                if (!((ZipEntry)var4).isDirectory()) {
  101.                   if (var1 == null) {
  102.                      var1 = new ManifestEntryVerifier(this.man);
  103.                   }
  104.  
  105.                   byte[] var5 = this.getBytes(var4);
  106.                   if (var5 != null && var5.length > 0) {
  107.                      this.field_0.beginEntry(var4, var1);
  108.                      this.field_0.update(var5.length, var5, 0, var5.length, var1);
  109.                      this.field_0.update(-1, (byte[])null, 0, 0, var1);
  110.                   }
  111.                }
  112.             }
  113.          }
  114.       } catch (IOException var6) {
  115.          this.field_0 = null;
  116.       }
  117.  
  118.       if (this.field_0 != null) {
  119.          this.field_0.doneWithMeta();
  120.          if (JarVerifier.debug != null) {
  121.             JarVerifier.debug.println("done with meta!");
  122.          }
  123.  
  124.          if (this.field_0.nothingToVerify()) {
  125.             if (JarVerifier.debug != null) {
  126.                JarVerifier.debug.println("nothing to verify!");
  127.             }
  128.  
  129.             this.field_0 = null;
  130.          }
  131.       }
  132.  
  133.    }
  134.  
  135.    private byte[] getBytes(ZipEntry var1) throws IOException {
  136.       byte[] var2 = new byte[(int)var1.getSize()];
  137.       DataInputStream var3 = new DataInputStream(super.getInputStream(var1));
  138.       var3.readFully(var2, 0, var2.length);
  139.       ((FilterInputStream)var3).close();
  140.       return var2;
  141.    }
  142.  
  143.    public synchronized InputStream getInputStream(ZipEntry var1) throws IOException {
  144.       if (!this.manLoaded) {
  145.          this.getManifest();
  146.       }
  147.  
  148.       if (this.field_0 == null) {
  149.          return super.getInputStream(var1);
  150.       } else {
  151.          if (!this.jvInitialized) {
  152.             this.initializeVerifier();
  153.             this.jvInitialized = true;
  154.             if (this.field_0 == null) {
  155.                return super.getInputStream(var1);
  156.             }
  157.          }
  158.  
  159.          return new JarVerifier.VerifierStream(this.man, (JarEntry)var1, super.getInputStream(var1), this.field_0);
  160.       }
  161.    }
  162.  
  163.    // $FF: synthetic method
  164.    static JarVerifier access$000(JarFile var0) {
  165.       return var0.field_0;
  166.    }
  167. }
  168.