1 /*
2  * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package java.util.zip;
27 
28 /*
29  * This interface defines the constants that are used by the classes
30  * which manipulate ZIP files.
31  *
32  * @author      David Connelly
33  */
34 interface ZipConstants {
35     /*
36      * Header signatures
37      */
38     static long LOCSIG = 0x04034b50L;   // "PK\003\004"
39     static long EXTSIG = 0x08074b50L;   // "PK\007\008"
40     static long CENSIG = 0x02014b50L;   // "PK\001\002"
41     static long ENDSIG = 0x06054b50L;   // "PK\005\006"
42 
43     /*
44      * Header sizes in bytes (including signatures)
45      */
46     static final int LOCHDR = 30;       // LOC header size
47     static final int EXTHDR = 16;       // EXT header size
48     static final int CENHDR = 46;       // CEN header size
49     static final int ENDHDR = 22;       // END header size
50 
51     /*
52      * Local file (LOC) header field offsets
53      */
54     static final int LOCVER = 4;        // version needed to extract
55     static final int LOCFLG = 6;        // general purpose bit flag
56     static final int LOCHOW = 8;        // compression method
57     static final int LOCTIM = 10;       // modification time
58     static final int LOCCRC = 14;       // uncompressed file crc-32 value
59     static final int LOCSIZ = 18;       // compressed size
60     static final int LOCLEN = 22;       // uncompressed size
61     static final int LOCNAM = 26;       // filename length
62     static final int LOCEXT = 28;       // extra field length
63 
64     /*
65      * Extra local (EXT) header field offsets
66      */
67     static final int EXTCRC = 4;        // uncompressed file crc-32 value
68     static final int EXTSIZ = 8;        // compressed size
69     static final int EXTLEN = 12;       // uncompressed size
70 
71     /*
72      * Central directory (CEN) header field offsets
73      */
74     static final int CENVEM = 4;        // version made by
75     static final int CENVER = 6;        // version needed to extract
76     static final int CENFLG = 8;        // encrypt, decrypt flags
77     static final int CENHOW = 10;       // compression method
78     static final int CENTIM = 12;       // modification time
79     static final int CENCRC = 16;       // uncompressed file crc-32 value
80     static final int CENSIZ = 20;       // compressed size
81     static final int CENLEN = 24;       // uncompressed size
82     static final int CENNAM = 28;       // filename length
83     static final int CENEXT = 30;       // extra field length
84     static final int CENCOM = 32;       // comment length
85     static final int CENDSK = 34;       // disk number start
86     static final int CENATT = 36;       // internal file attributes
87     static final int CENATX = 38;       // external file attributes
88     static final int CENOFF = 42;       // LOC header offset
89 
90     /*
91      * End of central directory (END) header field offsets
92      */
93     static final int ENDSUB = 8;        // number of entries on this disk
94     static final int ENDTOT = 10;       // total number of entries
95     static final int ENDSIZ = 12;       // central directory size in bytes
96     static final int ENDOFF = 16;       // offset of first CEN header
97     static final int ENDCOM = 20;       // zip file comment length
98 }
99