001 /*
002 * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package java.util.jar;
027
028 import java.io.IOException;
029 import java.util.zip.ZipEntry;
030 import java.security.CodeSigner;
031 import java.security.cert.Certificate;
032
033 /**
034 * This class is used to represent a JAR file entry.
035 */
036 public class JarEntry extends ZipEntry {
037 Attributes attr;
038 Certificate[] certs;
039 CodeSigner[] signers;
040
041 /**
042 * Creates a new <code>JarEntry</code> for the specified JAR file
043 * entry name.
044 *
045 * @param name the JAR file entry name
046 * @exception NullPointerException if the entry name is <code>null</code>
047 * @exception IllegalArgumentException if the entry name is longer than
048 * 0xFFFF bytes.
049 */
050 public JarEntry(String name) {
051 super (name);
052 }
053
054 /**
055 * Creates a new <code>JarEntry</code> with fields taken from the
056 * specified <code>ZipEntry</code> object.
057 * @param ze the <code>ZipEntry</code> object to create the
058 * <code>JarEntry</code> from
059 */
060 public JarEntry(ZipEntry ze) {
061 super (ze);
062 }
063
064 /**
065 * Creates a new <code>JarEntry</code> with fields taken from the
066 * specified <code>JarEntry</code> object.
067 *
068 * @param je the <code>JarEntry</code> to copy
069 */
070 public JarEntry(JarEntry je) {
071 this ((ZipEntry) je);
072 this .attr = je.attr;
073 this .certs = je.certs;
074 this .signers = je.signers;
075 }
076
077 /**
078 * Returns the <code>Manifest</code> <code>Attributes</code> for this
079 * entry, or <code>null</code> if none.
080 *
081 * @return the <code>Manifest</code> <code>Attributes</code> for this
082 * entry, or <code>null</code> if none
083 */
084 public Attributes getAttributes() throws IOException {
085 return attr;
086 }
087
088 /**
089 * Returns the <code>Certificate</code> objects for this entry, or
090 * <code>null</code> if none. This method can only be called once
091 * the <code>JarEntry</code> has been completely verified by reading
092 * from the entry input stream until the end of the stream has been
093 * reached. Otherwise, this method will return <code>null</code>.
094 *
095 * <p>The returned certificate array comprises all the signer certificates
096 * that were used to verify this entry. Each signer certificate is
097 * followed by its supporting certificate chain (which may be empty).
098 * Each signer certificate and its supporting certificate chain are ordered
099 * bottom-to-top (i.e., with the signer certificate first and the (root)
100 * certificate authority last).
101 *
102 * @return the <code>Certificate</code> objects for this entry, or
103 * <code>null</code> if none.
104 */
105 public Certificate[] getCertificates() {
106 return certs == null ? null : (Certificate[]) certs.clone();
107 }
108
109 /**
110 * Returns the <code>CodeSigner</code> objects for this entry, or
111 * <code>null</code> if none. This method can only be called once
112 * the <code>JarEntry</code> has been completely verified by reading
113 * from the entry input stream until the end of the stream has been
114 * reached. Otherwise, this method will return <code>null</code>.
115 *
116 * <p>The returned array comprises all the code signers that have signed
117 * this entry.
118 *
119 * @return the <code>CodeSigner</code> objects for this entry, or
120 * <code>null</code> if none.
121 *
122 * @since 1.5
123 */
124 public CodeSigner[] getCodeSigners() {
125 return signers == null ? null : (CodeSigner[]) signers.clone();
126 }
127 }
|