Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: third_party/zlib/contrib/minizip/crypt.h

Issue 2084863002: Update Zlib to version 1.2.8 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/zlib/compress.c ('k') | third_party/zlib/contrib/minizip/ioapi.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 14 matching lines...) Expand all
25 The new AES encryption added on Zip format by Winzip (see the page 25 The new AES encryption added on Zip format by Winzip (see the page
26 http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong 26 http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong
27 Encryption is not supported. 27 Encryption is not supported.
28 */ 28 */
29 29
30 #define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) 30 #define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8))
31 31
32 /*********************************************************************** 32 /***********************************************************************
33 * Return the next byte in the pseudo-random sequence 33 * Return the next byte in the pseudo-random sequence
34 */ 34 */
35 static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) 35 static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
36 { 36 {
37 unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an 37 unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
38 * unpredictable manner on 16-bit systems; not a problem 38 * unpredictable manner on 16-bit systems; not a problem
39 * with any known compiler so far, though */ 39 * with any known compiler so far, though */
40 40
41 temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; 41 temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
42 return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); 42 return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
43 } 43 }
44 44
45 /*********************************************************************** 45 /***********************************************************************
46 * Update the encryption keys with the next byte of plain text 46 * Update the encryption keys with the next byte of plain text
47 */ 47 */
48 static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) 48 static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
49 { 49 {
50 (*(pkeys+0)) = CRC32((*(pkeys+0)), c); 50 (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
51 (*(pkeys+1)) += (*(pkeys+0)) & 0xff; 51 (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
52 (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; 52 (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
53 { 53 {
54 register int keyshift = (int)((*(pkeys+1)) >> 24); 54 register int keyshift = (int)((*(pkeys+1)) >> 24);
55 (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); 55 (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift);
56 } 56 }
57 return c; 57 return c;
58 } 58 }
59 59
60 60
61 /*********************************************************************** 61 /***********************************************************************
62 * Initialize the encryption keys and the random header according to 62 * Initialize the encryption keys and the random header according to
63 * the given password. 63 * the given password.
64 */ 64 */
65 static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned lon g* pcrc_32_tab) 65 static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcr c_32_tab)
66 { 66 {
67 *(pkeys+0) = 305419896L; 67 *(pkeys+0) = 305419896L;
68 *(pkeys+1) = 591751049L; 68 *(pkeys+1) = 591751049L;
69 *(pkeys+2) = 878082192L; 69 *(pkeys+2) = 878082192L;
70 while (*passwd != '\0') { 70 while (*passwd != '\0') {
71 update_keys(pkeys,pcrc_32_tab,(int)*passwd); 71 update_keys(pkeys,pcrc_32_tab,(int)*passwd);
72 passwd++; 72 passwd++;
73 } 73 }
74 } 74 }
75 75
76 #define zdecode(pkeys,pcrc_32_tab,c) \ 76 #define zdecode(pkeys,pcrc_32_tab,c) \
77 (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) 77 (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
78 78
79 #define zencode(pkeys,pcrc_32_tab,c,t) \ 79 #define zencode(pkeys,pcrc_32_tab,c,t) \
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(const char* passwd, /* password string */ 90 static int crypthead(const char* passwd, /* password string */
91 unsigned char* buf, /* where to write header */ 91 unsigned char* buf, /* where to write header */
92 int bufSize, 92 int bufSize,
93 unsigned long* pkeys, 93 unsigned long* pkeys,
94 const unsigned long* pcrc_32_tab, 94 const z_crc_t* pcrc_32_tab,
95 unsigned long crcForCrypting) 95 unsigned long crcForCrypting)
96 { 96 {
97 int n; /* index in random header */ 97 int n; /* index in random header */
98 int t; /* temporary */ 98 int t; /* temporary */
99 int c; /* random byte */ 99 int c; /* random byte */
100 unsigned char header[RAND_HEAD_LEN-2]; /* random header */ 100 unsigned char header[RAND_HEAD_LEN-2]; /* random header */
101 static unsigned calls = 0; /* ensure different random header each time */ 101 static unsigned calls = 0; /* ensure different random header each time */
102 102
103 if (bufSize<RAND_HEAD_LEN) 103 if (bufSize<RAND_HEAD_LEN)
104 return 0; 104 return 0;
(...skipping 17 matching lines...) Expand all
122 for (n = 0; n < RAND_HEAD_LEN-2; n++) 122 for (n = 0; n < RAND_HEAD_LEN-2; n++)
123 { 123 {
124 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);
125 } 125 }
126 buf[n++] = (unsigned char)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);
127 buf[n++] = (unsigned char)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);
128 return n; 128 return n;
129 } 129 }
130 130
131 #endif 131 #endif
OLDNEW
« no previous file with comments | « third_party/zlib/compress.c ('k') | third_party/zlib/contrib/minizip/ioapi.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698