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

Side by Side Diff: openssl/crypto/md32_common.h

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/md2/md2_dgst.c ('k') | openssl/crypto/md4/Makefile » ('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/md32_common.h */ 1 /* crypto/md32_common.h */
2 /* ==================================================================== 2 /* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 * Some GNU C inline assembler templates. Note that these are 158 * Some GNU C inline assembler templates. Note that these are
159 * rotates by *constant* number of bits! But that's exactly 159 * rotates by *constant* number of bits! But that's exactly
160 * what we need here... 160 * what we need here...
161 * <appro@fy.chalmers.se> 161 * <appro@fy.chalmers.se>
162 */ 162 */
163 # if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86 _64__) 163 # if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86 _64__)
164 # define ROTATE(a,n) ({ register unsigned int ret; \ 164 # define ROTATE(a,n) ({ register unsigned int ret; \
165 asm ( \ 165 asm ( \
166 "roll %1,%0" \ 166 "roll %1,%0" \
167 : "=r"(ret) \ 167 : "=r"(ret) \
168 » » » » : "I"(n), "0"(a)» \ 168 » » » » : "I"(n), "0"((unsigned int)(a))» \
169 : "cc"); \ 169 : "cc"); \
170 ret; \ 170 ret; \
171 }) 171 })
172 # elif defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ 172 # elif defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
173 defined(__powerpc) || defined(__ppc__) || defined(__powerpc64__) 173 defined(__powerpc) || defined(__ppc__) || defined(__powerpc64__)
174 # define ROTATE(a,n) ({ register unsigned int ret; \ 174 # define ROTATE(a,n) ({ register unsigned int ret; \
175 asm ( \ 175 asm ( \
176 "rlwinm %0,%1,%2,0,31" \ 176 "rlwinm %0,%1,%2,0,31" \
177 : "=r"(ret) \ 177 : "=r"(ret) \
178 : "r"(a), "I"(n)); \ 178 : "r"(a), "I"(n)); \
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 HASH_LONG l; 286 HASH_LONG l;
287 size_t n; 287 size_t n;
288 288
289 if (len==0) return 1; 289 if (len==0) return 1;
290 290
291 l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL; 291 l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL;
292 /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to 292 /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
293 * Wei Dai <weidai@eskimo.com> for pointing it out. */ 293 * Wei Dai <weidai@eskimo.com> for pointing it out. */
294 if (l < c->Nl) /* overflow */ 294 if (l < c->Nl) /* overflow */
295 c->Nh++; 295 c->Nh++;
296 » c->Nh+=(len>>29);» /* might cause compiler warning on 16-bit */ 296 » c->Nh+=(HASH_LONG)(len>>29);» /* might cause compiler warning on 16-bi t */
297 c->Nl=l; 297 c->Nl=l;
298 298
299 n = c->num; 299 n = c->num;
300 if (n != 0) 300 if (n != 0)
301 { 301 {
302 p=(unsigned char *)c->data; 302 p=(unsigned char *)c->data;
303 303
304 if (len >= HASH_CBLOCK || len+n >= HASH_CBLOCK) 304 if (len >= HASH_CBLOCK || len+n >= HASH_CBLOCK)
305 { 305 {
306 memcpy (p+n,data,HASH_CBLOCK-n); 306 memcpy (p+n,data,HASH_CBLOCK-n);
(...skipping 17 matching lines...) Expand all
324 { 324 {
325 HASH_BLOCK_DATA_ORDER (c,data,n); 325 HASH_BLOCK_DATA_ORDER (c,data,n);
326 n *= HASH_CBLOCK; 326 n *= HASH_CBLOCK;
327 data += n; 327 data += n;
328 len -= n; 328 len -= n;
329 } 329 }
330 330
331 if (len != 0) 331 if (len != 0)
332 { 332 {
333 p = (unsigned char *)c->data; 333 p = (unsigned char *)c->data;
334 » » c->num = len; 334 » » c->num = (unsigned int)len;
335 memcpy (p,data,len); 335 memcpy (p,data,len);
336 } 336 }
337 return 1; 337 return 1;
338 } 338 }
339 339
340 340
341 void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data) 341 void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
342 { 342 {
343 HASH_BLOCK_DATA_ORDER (c,data,1); 343 HASH_BLOCK_DATA_ORDER (c,data,1);
344 } 344 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 #ifndef HASH_MAKE_STRING 376 #ifndef HASH_MAKE_STRING
377 #error "HASH_MAKE_STRING must be defined!" 377 #error "HASH_MAKE_STRING must be defined!"
378 #else 378 #else
379 HASH_MAKE_STRING(c,md); 379 HASH_MAKE_STRING(c,md);
380 #endif 380 #endif
381 381
382 return 1; 382 return 1;
383 } 383 }
384 384
385 #ifndef MD32_REG_T 385 #ifndef MD32_REG_T
386 #if defined(__alpha) || defined(__sparcv9) || defined(__mips)
386 #define MD32_REG_T long 387 #define MD32_REG_T long
387 /* 388 /*
388 * This comment was originaly written for MD5, which is why it 389 * This comment was originaly written for MD5, which is why it
389 * discusses A-D. But it basically applies to all 32-bit digests, 390 * discusses A-D. But it basically applies to all 32-bit digests,
390 * which is why it was moved to common header file. 391 * which is why it was moved to common header file.
391 * 392 *
392 * In case you wonder why A-D are declared as long and not 393 * In case you wonder why A-D are declared as long and not
393 * as MD5_LONG. Doing so results in slight performance 394 * as MD5_LONG. Doing so results in slight performance
394 * boost on LP64 architectures. The catch is we don't 395 * boost on LP64 architectures. The catch is we don't
395 * really care if 32 MSBs of a 64-bit register get polluted 396 * really care if 32 MSBs of a 64-bit register get polluted
396 * with eventual overflows as we *save* only 32 LSBs in 397 * with eventual overflows as we *save* only 32 LSBs in
397 * *either* case. Now declaring 'em long excuses the compiler 398 * *either* case. Now declaring 'em long excuses the compiler
398 * from keeping 32 MSBs zeroed resulting in 13% performance 399 * from keeping 32 MSBs zeroed resulting in 13% performance
399 * improvement under SPARC Solaris7/64 and 5% under AlphaLinux. 400 * improvement under SPARC Solaris7/64 and 5% under AlphaLinux.
400 * Well, to be honest it should say that this *prevents* 401 * Well, to be honest it should say that this *prevents*
401 * performance degradation. 402 * performance degradation.
402 * <appro@fy.chalmers.se> 403 * <appro@fy.chalmers.se>
403 * Apparently there're LP64 compilers that generate better 404 */
404 * code if A-D are declared int. Most notably GCC-x86_64 405 #else
405 * generates better code. 406 /*
407 * Above is not absolute and there are LP64 compilers that
408 * generate better code if MD32_REG_T is defined int. The above
409 * pre-processor condition reflects the circumstances under which
410 * the conclusion was made and is subject to further extension.
406 * <appro@fy.chalmers.se> 411 * <appro@fy.chalmers.se>
407 */ 412 */
413 #define MD32_REG_T int
408 #endif 414 #endif
415 #endif
OLDNEW
« no previous file with comments | « openssl/crypto/md2/md2_dgst.c ('k') | openssl/crypto/md4/Makefile » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698