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

Side by Side Diff: openssl/crypto/evp/encode.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/evp/enc_min.c ('k') | openssl/crypto/evp/evp.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 /* crypto/evp/encode.c */ 1 /* crypto/evp/encode.c */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 * pad input with 0 78 * pad input with 0
79 * left over chars are set to = 79 * left over chars are set to =
80 * 1 byte => xx== 80 * 1 byte => xx==
81 * 2 bytes => xxx= 81 * 2 bytes => xxx=
82 * 3 bytes => xxxx 82 * 3 bytes => xxxx
83 */ 83 */
84 #define BIN_PER_LINE (64/4*3) 84 #define BIN_PER_LINE (64/4*3)
85 #define CHUNKS_PER_LINE (64/4) 85 #define CHUNKS_PER_LINE (64/4)
86 #define CHAR_PER_LINE (64+1) 86 #define CHAR_PER_LINE (64+1)
87 87
88 static unsigned char data_bin2ascii[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZ\ 88 static const unsigned char data_bin2ascii[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZ\
89 abcdefghijklmnopqrstuvwxyz0123456789+/"; 89 abcdefghijklmnopqrstuvwxyz0123456789+/";
90 90
91 /* 0xF0 is a EOLN 91 /* 0xF0 is a EOLN
92 * 0xF1 is ignore but next needs to be 0xF0 (for \r\n processing). 92 * 0xF1 is ignore but next needs to be 0xF0 (for \r\n processing).
93 * 0xF2 is EOF 93 * 0xF2 is EOF
94 * 0xE0 is ignore at start of line. 94 * 0xE0 is ignore at start of line.
95 * 0xFF is error 95 * 0xFF is error
96 */ 96 */
97 97
98 #define B64_EOLN 0xF0 98 #define B64_EOLN 0xF0
99 #define B64_CR 0xF1 99 #define B64_CR 0xF1
100 #define B64_EOF 0xF2 100 #define B64_EOF 0xF2
101 #define B64_WS 0xE0 101 #define B64_WS 0xE0
102 #define B64_ERROR 0xFF 102 #define B64_ERROR 0xFF
103 #define B64_NOT_BASE64(a) (((a)|0x13) == 0xF3) 103 #define B64_NOT_BASE64(a) (((a)|0x13) == 0xF3)
104 104
105 static unsigned char data_ascii2bin[128]={ 105 static const unsigned char data_ascii2bin[128]={
106 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 106 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
107 0xFF,0xE0,0xF0,0xFF,0xFF,0xF1,0xFF,0xFF, 107 0xFF,0xE0,0xF0,0xFF,0xFF,0xF1,0xFF,0xFF,
108 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 108 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
109 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 109 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
110 0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 110 0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
111 0xFF,0xFF,0xFF,0x3E,0xFF,0xF2,0xFF,0x3F, 111 0xFF,0xFF,0xFF,0x3E,0xFF,0xF2,0xFF,0x3F,
112 0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B, 112 0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,
113 0x3C,0x3D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF, 113 0x3C,0x3D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
114 0xFF,0x00,0x01,0x02,0x03,0x04,0x05,0x06, 114 0xFF,0x00,0x01,0x02,0x03,0x04,0x05,0x06,
115 0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E, 115 0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 ctx->expect_nl=0; 228 ctx->expect_nl=0;
229 } 229 }
230 230
231 /* -1 for error 231 /* -1 for error
232 * 0 for last line 232 * 0 for last line
233 * 1 for full line 233 * 1 for full line
234 */ 234 */
235 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 235 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
236 const unsigned char *in, int inl) 236 const unsigned char *in, int inl)
237 { 237 {
238 » int seof= -1,eof=0,rv= -1,ret=0,i,v,tmp,n,ln,tmp2,exp_nl; 238 » int seof= -1,eof=0,rv= -1,ret=0,i,v,tmp,n,ln,exp_nl;
239 unsigned char *d; 239 unsigned char *d;
240 240
241 n=ctx->num; 241 n=ctx->num;
242 d=ctx->enc_data; 242 d=ctx->enc_data;
243 ln=ctx->line_num; 243 ln=ctx->line_num;
244 exp_nl=ctx->expect_nl; 244 exp_nl=ctx->expect_nl;
245 245
246 /* last line of input. */ 246 /* last line of input. */
247 if ((inl == 0) || ((n == 0) && (conv_ascii2bin(in[0]) == B64_EOF))) 247 if ((inl == 0) || ((n == 0) && (conv_ascii2bin(in[0]) == B64_EOF)))
248 { rv=0; goto end; } 248 { rv=0; goto end; }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (d[n-2] == '=') eof++; 312 if (d[n-2] == '=') eof++;
313 /* There will never be more than two '=' */ 313 /* There will never be more than two '=' */
314 } 314 }
315 315
316 if ((v == B64_EOF && (n&3) == 0) || (n >= 64)) 316 if ((v == B64_EOF && (n&3) == 0) || (n >= 64))
317 { 317 {
318 /* This is needed to work correctly on 64 byte input 318 /* This is needed to work correctly on 64 byte input
319 * lines. We process the line and then need to 319 * lines. We process the line and then need to
320 * accept the '\n' */ 320 * accept the '\n' */
321 if ((v != B64_EOF) && (n >= 64)) exp_nl=1; 321 if ((v != B64_EOF) && (n >= 64)) exp_nl=1;
322 tmp2=v;
323 if (n > 0) 322 if (n > 0)
324 { 323 {
325 v=EVP_DecodeBlock(out,d,n); 324 v=EVP_DecodeBlock(out,d,n);
326 n=0; 325 n=0;
327 if (v < 0) { rv=0; goto end; } 326 if (v < 0) { rv=0; goto end; }
328 ret+=(v-eof); 327 ret+=(v-eof);
329 } 328 }
330 else 329 else
331 { 330 {
332 eof=1; 331 eof=1;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 num+=1+(buf[2] != '=')+(buf[3] != '='); 436 num+=1+(buf[2] != '=')+(buf[3] != '=');
438 } 437 }
439 if ((i == 1) && (conv_ascii2bin(buf[0]) == B64_EOLN)) 438 if ((i == 1) && (conv_ascii2bin(buf[0]) == B64_EOLN))
440 return(num); 439 return(num);
441 if ((i == 2) && (conv_ascii2bin(buf[0]) == B64_EOLN) && 440 if ((i == 2) && (conv_ascii2bin(buf[0]) == B64_EOLN) &&
442 (conv_ascii2bin(buf[0]) == B64_EOLN)) 441 (conv_ascii2bin(buf[0]) == B64_EOLN))
443 return(num); 442 return(num);
444 return(1); 443 return(1);
445 } 444 }
446 #endif 445 #endif
OLDNEW
« no previous file with comments | « openssl/crypto/evp/enc_min.c ('k') | openssl/crypto/evp/evp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698