OLD | NEW |
1 /* crypt.h -- base code for crypt/uncrypt ZIPfile | 1 /* crypt.h -- base code for crypt/uncrypt ZIPfile |
2 | 2 |
3 | 3 |
4 Version 1.01e, February 12th, 2005 | 4 Version 1.01e, February 12th, 2005 |
5 | 5 |
6 Copyright (C) 1998-2005 Gilles Vollant | 6 Copyright (C) 1998-2005 Gilles Vollant |
7 | 7 |
8 This code is a modified version of crypting code in Infozip distribution | 8 This code is a modified version of crypting code in Infozip distribution |
9 | 9 |
10 The encryption/decryption parts of this source code (as opposed to the | 10 The encryption/decryption parts of this source code (as opposed to the |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) | 80 (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) |
81 | 81 |
82 #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED | 82 #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED |
83 | 83 |
84 #define RAND_HEAD_LEN 12 | 84 #define RAND_HEAD_LEN 12 |
85 /* "last resort" source for second part of crypt seed pattern */ | 85 /* "last resort" source for second part of crypt seed pattern */ |
86 # ifndef ZCR_SEED2 | 86 # ifndef ZCR_SEED2 |
87 # define ZCR_SEED2 3141592654UL /* use PI as default pattern */ | 87 # define ZCR_SEED2 3141592654UL /* use PI as default pattern */ |
88 # endif | 88 # endif |
89 | 89 |
90 static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) | 90 static int crypthead(const char* passwd, /* password string */ |
91 const char *passwd; /* password string */ | 91 unsigned char* buf, /* where to write header */ |
92 unsigned char *buf; /* where to write header */ | 92 int bufSize, |
93 int bufSize; | 93 unsigned long* pkeys, |
94 unsigned long* pkeys; | 94 const unsigned long* pcrc_32_tab, |
95 const unsigned long* pcrc_32_tab; | 95 unsigned long crcForCrypting) |
96 unsigned long crcForCrypting; | |
97 { | 96 { |
98 int n; /* index in random header */ | 97 int n; /* index in random header */ |
99 int t; /* temporary */ | 98 int t; /* temporary */ |
100 int c; /* random byte */ | 99 int c; /* random byte */ |
101 unsigned char header[RAND_HEAD_LEN-2]; /* random header */ | 100 unsigned char header[RAND_HEAD_LEN-2]; /* random header */ |
102 static unsigned calls = 0; /* ensure different random header each time */ | 101 static unsigned calls = 0; /* ensure different random header each time */ |
103 | 102 |
104 if (bufSize<RAND_HEAD_LEN) | 103 if (bufSize<RAND_HEAD_LEN) |
105 return 0; | 104 return 0; |
106 | 105 |
(...skipping 10 matching lines...) Expand all Loading... |
117 { | 116 { |
118 c = (rand() >> 7) & 0xff; | 117 c = (rand() >> 7) & 0xff; |
119 header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); | 118 header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); |
120 } | 119 } |
121 /* Encrypt random header (last two bytes is high word of crc) */ | 120 /* Encrypt random header (last two bytes is high word of crc) */ |
122 init_keys(passwd, pkeys, pcrc_32_tab); | 121 init_keys(passwd, pkeys, pcrc_32_tab); |
123 for (n = 0; n < RAND_HEAD_LEN-2; n++) | 122 for (n = 0; n < RAND_HEAD_LEN-2; n++) |
124 { | 123 { |
125 buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); | 124 buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); |
126 } | 125 } |
127 buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t
); | 126 buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >
> 16) & 0xff, t); |
128 buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t
); | 127 buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >
> 24) & 0xff, t); |
129 return n; | 128 return n; |
130 } | 129 } |
131 | 130 |
132 #endif | 131 #endif |
OLD | NEW |