OLD | NEW |
1 /* | 1 /* |
2 * sha512.c - implementation of SHA224, SHA256, SHA384 and SHA512 | 2 * sha512.c - implementation of SHA224, SHA256, SHA384 and SHA512 |
3 * | 3 * |
4 * This Source Code Form is subject to the terms of the Mozilla Public | 4 * This Source Code Form is subject to the terms of the Mozilla Public |
5 * License, v. 2.0. If a copy of the MPL was not distributed with this | 5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
7 /* $Id: sha512.c,v 1.21 2012/07/27 20:00:39 wtc%google.com Exp $ */ | 7 /* $Id: sha512.c,v 1.21 2012/07/27 20:00:39 wtc%google.com Exp $ */ |
8 | 8 |
9 #ifdef FREEBL_NO_DEPEND | 9 #ifdef FREEBL_NO_DEPEND |
10 #include "stubs.h" | 10 #include "stubs.h" |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 SHA256Context * | 149 SHA256Context * |
150 SHA256_NewContext(void) | 150 SHA256_NewContext(void) |
151 { | 151 { |
152 SHA256Context *ctx = PORT_New(SHA256Context); | 152 SHA256Context *ctx = PORT_New(SHA256Context); |
153 return ctx; | 153 return ctx; |
154 } | 154 } |
155 | 155 |
156 void | 156 void |
157 SHA256_DestroyContext(SHA256Context *ctx, PRBool freeit) | 157 SHA256_DestroyContext(SHA256Context *ctx, PRBool freeit) |
158 { | 158 { |
| 159 memset(ctx, 0, sizeof *ctx); |
159 if (freeit) { | 160 if (freeit) { |
160 PORT_ZFree(ctx, sizeof *ctx); | 161 PORT_Free(ctx); |
161 } | 162 } |
162 } | 163 } |
163 | 164 |
164 void | 165 void |
165 SHA256_Begin(SHA256Context *ctx) | 166 SHA256_Begin(SHA256Context *ctx) |
166 { | 167 { |
167 memset(ctx, 0, sizeof *ctx); | 168 memset(ctx, 0, sizeof *ctx); |
168 memcpy(H, H256, sizeof H256); | 169 memcpy(H, H256, sizeof H256); |
169 } | 170 } |
170 | 171 |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 SECStatus | 465 SECStatus |
465 SHA256_HashBuf(unsigned char *dest, const unsigned char *src, | 466 SHA256_HashBuf(unsigned char *dest, const unsigned char *src, |
466 uint32 src_length) | 467 uint32 src_length) |
467 { | 468 { |
468 SHA256Context ctx; | 469 SHA256Context ctx; |
469 unsigned int outLen; | 470 unsigned int outLen; |
470 | 471 |
471 SHA256_Begin(&ctx); | 472 SHA256_Begin(&ctx); |
472 SHA256_Update(&ctx, src, src_length); | 473 SHA256_Update(&ctx, src, src_length); |
473 SHA256_End(&ctx, dest, &outLen, SHA256_LENGTH); | 474 SHA256_End(&ctx, dest, &outLen, SHA256_LENGTH); |
| 475 memset(&ctx, 0, sizeof ctx); |
474 | 476 |
475 return SECSuccess; | 477 return SECSuccess; |
476 } | 478 } |
477 | 479 |
478 | 480 |
479 SECStatus | 481 SECStatus |
480 SHA256_Hash(unsigned char *dest, const char *src) | 482 SHA256_Hash(unsigned char *dest, const char *src) |
481 { | 483 { |
482 return SHA256_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); | 484 return SHA256_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); |
483 } | 485 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 SECStatus | 559 SECStatus |
558 SHA224_HashBuf(unsigned char *dest, const unsigned char *src, | 560 SHA224_HashBuf(unsigned char *dest, const unsigned char *src, |
559 uint32 src_length) | 561 uint32 src_length) |
560 { | 562 { |
561 SHA256Context ctx; | 563 SHA256Context ctx; |
562 unsigned int outLen; | 564 unsigned int outLen; |
563 | 565 |
564 SHA224_Begin(&ctx); | 566 SHA224_Begin(&ctx); |
565 SHA256_Update(&ctx, src, src_length); | 567 SHA256_Update(&ctx, src, src_length); |
566 SHA256_End(&ctx, dest, &outLen, SHA224_LENGTH); | 568 SHA256_End(&ctx, dest, &outLen, SHA224_LENGTH); |
| 569 memset(&ctx, 0, sizeof ctx); |
567 | 570 |
568 return SECSuccess; | 571 return SECSuccess; |
569 } | 572 } |
570 | 573 |
571 SECStatus | 574 SECStatus |
572 SHA224_Hash(unsigned char *dest, const char *src) | 575 SHA224_Hash(unsigned char *dest, const char *src) |
573 { | 576 { |
574 return SHA224_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); | 577 return SHA224_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); |
575 } | 578 } |
576 | 579 |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 SHA512Context * | 783 SHA512Context * |
781 SHA512_NewContext(void) | 784 SHA512_NewContext(void) |
782 { | 785 { |
783 SHA512Context *ctx = PORT_New(SHA512Context); | 786 SHA512Context *ctx = PORT_New(SHA512Context); |
784 return ctx; | 787 return ctx; |
785 } | 788 } |
786 | 789 |
787 void | 790 void |
788 SHA512_DestroyContext(SHA512Context *ctx, PRBool freeit) | 791 SHA512_DestroyContext(SHA512Context *ctx, PRBool freeit) |
789 { | 792 { |
| 793 memset(ctx, 0, sizeof *ctx); |
790 if (freeit) { | 794 if (freeit) { |
791 PORT_ZFree(ctx, sizeof *ctx); | 795 PORT_Free(ctx); |
792 } | 796 } |
793 } | 797 } |
794 | 798 |
795 void | 799 void |
796 SHA512_Begin(SHA512Context *ctx) | 800 SHA512_Begin(SHA512Context *ctx) |
797 { | 801 { |
798 memset(ctx, 0, sizeof *ctx); | 802 memset(ctx, 0, sizeof *ctx); |
799 memcpy(H, H512, sizeof H512); | 803 memcpy(H, H512, sizeof H512); |
800 } | 804 } |
801 | 805 |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1227 SECStatus | 1231 SECStatus |
1228 SHA512_HashBuf(unsigned char *dest, const unsigned char *src, | 1232 SHA512_HashBuf(unsigned char *dest, const unsigned char *src, |
1229 uint32 src_length) | 1233 uint32 src_length) |
1230 { | 1234 { |
1231 SHA512Context ctx; | 1235 SHA512Context ctx; |
1232 unsigned int outLen; | 1236 unsigned int outLen; |
1233 | 1237 |
1234 SHA512_Begin(&ctx); | 1238 SHA512_Begin(&ctx); |
1235 SHA512_Update(&ctx, src, src_length); | 1239 SHA512_Update(&ctx, src, src_length); |
1236 SHA512_End(&ctx, dest, &outLen, SHA512_LENGTH); | 1240 SHA512_End(&ctx, dest, &outLen, SHA512_LENGTH); |
| 1241 memset(&ctx, 0, sizeof ctx); |
1237 | 1242 |
1238 return SECSuccess; | 1243 return SECSuccess; |
1239 } | 1244 } |
1240 | 1245 |
1241 | 1246 |
1242 SECStatus | 1247 SECStatus |
1243 SHA512_Hash(unsigned char *dest, const char *src) | 1248 SHA512_Hash(unsigned char *dest, const char *src) |
1244 { | 1249 { |
1245 return SHA512_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); | 1250 return SHA512_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); |
1246 } | 1251 } |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 SECStatus | 1339 SECStatus |
1335 SHA384_HashBuf(unsigned char *dest, const unsigned char *src, | 1340 SHA384_HashBuf(unsigned char *dest, const unsigned char *src, |
1336 uint32 src_length) | 1341 uint32 src_length) |
1337 { | 1342 { |
1338 SHA512Context ctx; | 1343 SHA512Context ctx; |
1339 unsigned int outLen; | 1344 unsigned int outLen; |
1340 | 1345 |
1341 SHA384_Begin(&ctx); | 1346 SHA384_Begin(&ctx); |
1342 SHA512_Update(&ctx, src, src_length); | 1347 SHA512_Update(&ctx, src, src_length); |
1343 SHA512_End(&ctx, dest, &outLen, SHA384_LENGTH); | 1348 SHA512_End(&ctx, dest, &outLen, SHA384_LENGTH); |
| 1349 memset(&ctx, 0, sizeof ctx); |
1344 | 1350 |
1345 return SECSuccess; | 1351 return SECSuccess; |
1346 } | 1352 } |
1347 | 1353 |
1348 SECStatus | 1354 SECStatus |
1349 SHA384_Hash(unsigned char *dest, const char *src) | 1355 SHA384_Hash(unsigned char *dest, const char *src) |
1350 { | 1356 { |
1351 return SHA384_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); | 1357 return SHA384_HashBuf(dest, (const unsigned char *)src, PORT_Strlen(src)); |
1352 } | 1358 } |
1353 | 1359 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1509 } | 1515 } |
1510 printf("done\n"); | 1516 printf("done\n"); |
1511 } | 1517 } |
1512 return 0; | 1518 return 0; |
1513 } | 1519 } |
1514 | 1520 |
1515 void *PORT_Alloc(size_t len) { return malloc(len); } | 1521 void *PORT_Alloc(size_t len) { return malloc(len); } |
1516 void PORT_Free(void *ptr) { free(ptr); } | 1522 void PORT_Free(void *ptr) { free(ptr); } |
1517 void PORT_ZFree(void *ptr, size_t len) { memset(ptr, 0, len); free(ptr); } | 1523 void PORT_ZFree(void *ptr, size_t len) { memset(ptr, 0, len); free(ptr); } |
1518 #endif | 1524 #endif |
OLD | NEW |