Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 147 lines (127 sloc) 4.272 kb
72f60ce First commit.
Evan Miller authored
1 /* useful byte arrays for rolling a ZIP archive */
2 /* see http://www.pkware.com/documents/casestudies/APPNOTE.TXT */
3 /* also http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack/doc/appnote.iz.txt */
4
5 /* byte-align structs to conform to ZIP format */
6 #pragma pack(push, 1)
7
911b447 Update from Google Code SVN
Evan Miller authored
8 #define zip_version_default 10
9 #define zip_version_zip64 45
4f61592 Support for UTF-8 file names.
Evan Miller authored
10 #define zip_utf8_flag 0x0800
11 #define zip_missing_crc32_flag 0x08
911b447 Update from Google Code SVN
Evan Miller authored
12
72f60ce First commit.
Evan Miller authored
13 typedef struct {
911b447 Update from Google Code SVN
Evan Miller authored
14 uint16_t tag; //0x5455
72f60ce First commit.
Evan Miller authored
15 uint16_t size;
16 uint8_t info;
17 uint32_t mtime;
18 uint32_t atime;
911b447 Update from Google Code SVN
Evan Miller authored
19 } ngx_zip_extra_field_local_t; // extended timestamp
72f60ce First commit.
Evan Miller authored
20
21 typedef struct {
911b447 Update from Google Code SVN
Evan Miller authored
22 uint16_t tag; //0x5455
72f60ce First commit.
Evan Miller authored
23 uint16_t size;
24 uint8_t info;
25 uint32_t mtime;
26 } ngx_zip_extra_field_central_t;
27
46efeae @tony2001 add X-Archive-Charset and Unicode Path extra field
tony2001 authored
28 typedef struct {
29 uint16_t tag; //0x7075
30 uint16_t size;
31 uint8_t version; //1
32 uint32_t crc32;
33 } ngx_zip_extra_field_unicode_path_t;
34
911b447 Update from Google Code SVN
Evan Miller authored
35 typedef struct { // not entirely writen...
36 uint16_t tag; //0x0001
37 uint16_t size; // size of this record (32)
38 uint64_t uncompressed_size; //!! in all other places in spec uncompressed follow compressed!
39 uint64_t compressed_size;
40 //these for CD:
41 uint64_t relative_header_offset; //offset of local header record (cd)
42 uint32_t disc_start; // no of disc where file starts (cd)
43 } ngx_zip_extra_field_zip64_full_t;
44
72f60ce First commit.
Evan Miller authored
45 typedef struct {
911b447 Update from Google Code SVN
Evan Miller authored
46 uint16_t tag; //0x0001
47 uint16_t size; //0x14
48 uint64_t uncompressed_size;
49 uint64_t compressed_size;
50 } ngx_zip_extra_field_zip64_sizes_only_t;
51
52 typedef struct {
53 uint16_t tag; //0x0001
54 uint16_t size; //0x0C
55 uint64_t relative_header_offset;
56 } ngx_zip_extra_field_zip64_offset_only_t;
57
58 typedef struct {
59 uint16_t tag; //0x0001
60 uint16_t size; //0x1C
61 uint64_t uncompressed_size;
62 uint64_t compressed_size;
63 uint64_t relative_header_offset;
64 } ngx_zip_extra_field_zip64_sizes_offset_t;
65
66
67 typedef struct {
68 uint32_t signature; //0x08074b50
72f60ce First commit.
Evan Miller authored
69 uint32_t crc32;
70 uint32_t compressed_size;
71 uint32_t uncompressed_size;
72 } ngx_zip_data_descriptor_t;
73
74 typedef struct {
75 uint32_t signature;
911b447 Update from Google Code SVN
Evan Miller authored
76 uint32_t crc32;
77 uint64_t compressed_size;
78 uint64_t uncompressed_size;
79 } ngx_zip_data_descriptor_zip64_t;
80
81
82 typedef struct {
83 uint32_t signature; //0x04034b50
72f60ce First commit.
Evan Miller authored
84 uint16_t version;
85 uint16_t flags;
86 uint16_t compression_method;
87 uint32_t mtime;
88 uint32_t crc32;
89 uint32_t compressed_size;
90 uint32_t uncompressed_size;
91 uint16_t filename_len;
92 uint16_t extra_field_len;
93 } ngx_zip_local_file_header_t;
94
911b447 Update from Google Code SVN
Evan Miller authored
95
72f60ce First commit.
Evan Miller authored
96 typedef struct {
911b447 Update from Google Code SVN
Evan Miller authored
97 uint32_t signature; //0x02014b50
72f60ce First commit.
Evan Miller authored
98 uint16_t version_made_by;
99 uint16_t version_needed;
100 uint16_t flags;
101 uint16_t compression_method;
102 uint32_t mtime;
103 uint32_t crc32;
104 uint32_t compressed_size;
105 uint32_t uncompressed_size;
106 uint16_t filename_len;
107 uint16_t extra_field_len;
108 uint16_t comment_len;
109 uint16_t disk_n;
110 uint16_t attr_internal;
111 uint32_t attr_external;
112 uint32_t offset;
113 } ngx_zip_central_directory_file_header_t;
114
115 typedef struct {
911b447 Update from Google Code SVN
Evan Miller authored
116 uint32_t signature; //0x06054b50
72f60ce First commit.
Evan Miller authored
117 uint16_t disk_n;
118 uint16_t cd_disk_n;
119 uint16_t disk_entries_n;
120 uint16_t entries_n;
121 uint32_t size;
122 uint32_t offset;
123 uint16_t comment_len;
124 } ngx_zip_end_of_central_directory_record_t;
125
911b447 Update from Google Code SVN
Evan Miller authored
126 typedef struct {
127 uint32_t signature; // 0x06064b50
128 uint64_t size; //of this record (+variable fields, but minus signature and this size field), Size = SizeOfFixedFields + SizeOfVariableData - 12
129 uint16_t version_made_by;
130 uint16_t version_needed;
131 uint32_t disk_n;
132 uint32_t cd_disk_n; // num of disk with start of CD
133 uint64_t cd_n_entries_on_this_disk;
134 uint64_t cd_n_entries_total;
135 uint64_t cd_size;
136 uint64_t cd_offset; // cd offset with respect to starting disk number
137 //variable fields go here
138 } ngx_zip_zip64_end_of_central_directory_record_t;
139
140 typedef struct {
141 uint32_t signature; //0x07064b50
142 uint32_t z64_cd_disk_n; // number of disk with start of zip64 end of central directory
143 uint64_t cd_relative_offset;
144 uint32_t disks_total_n;
145 } ngx_zip_zip64_end_of_central_directory_locator_t;
72f60ce First commit.
Evan Miller authored
146 #pragma pack(pop)
Something went wrong with that request. Please try again.