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

Side by Side Diff: core/fdrm/crypto/fx_crypt_sha.cpp

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 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 | « core/fdrm/crypto/fx_crypt_aes.cpp ('k') | core/fdrm/crypto/include/fx_crypt.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 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fdrm/crypto/include/fx_crypt.h" 7 #include "core/fdrm/crypto/include/fx_crypt.h"
8 8
9 #ifdef __cplusplus 9 #ifdef __cplusplus
10 extern "C" { 10 extern "C" {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 digest[2] += c; 77 digest[2] += c;
78 digest[3] += d; 78 digest[3] += d;
79 digest[4] += e; 79 digest[4] += e;
80 } 80 }
81 void CRYPT_SHA1Start(void* context) { 81 void CRYPT_SHA1Start(void* context) {
82 SHA_State* s = (SHA_State*)context; 82 SHA_State* s = (SHA_State*)context;
83 SHA_Core_Init(s->h); 83 SHA_Core_Init(s->h);
84 s->blkused = 0; 84 s->blkused = 0;
85 s->lenhi = s->lenlo = 0; 85 s->lenhi = s->lenlo = 0;
86 } 86 }
87 void CRYPT_SHA1Update(void* context, const uint8_t* data, FX_DWORD size) { 87 void CRYPT_SHA1Update(void* context, const uint8_t* data, uint32_t size) {
88 SHA_State* s = (SHA_State*)context; 88 SHA_State* s = (SHA_State*)context;
89 unsigned char* q = (unsigned char*)data; 89 unsigned char* q = (unsigned char*)data;
90 unsigned int wordblock[16]; 90 unsigned int wordblock[16];
91 int len = size; 91 int len = size;
92 unsigned int lenw = len; 92 unsigned int lenw = len;
93 int i; 93 int i;
94 s->lenlo += lenw; 94 s->lenlo += lenw;
95 s->lenhi += (s->lenlo < lenw); 95 s->lenhi += (s->lenlo < lenw);
96 if (s->blkused && s->blkused + len < 64) { 96 if (s->blkused && s->blkused + len < 64) {
97 FXSYS_memcpy(s->block + s->blkused, q, len); 97 FXSYS_memcpy(s->block + s->blkused, q, len);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 c[7] = (lenlo >> 0) & 0xFF; 140 c[7] = (lenlo >> 0) & 0xFF;
141 CRYPT_SHA1Update(s, c, 8); 141 CRYPT_SHA1Update(s, c, 8);
142 for (i = 0; i < 5; i++) { 142 for (i = 0; i < 5; i++) {
143 digest[i * 4] = (s->h[i] >> 24) & 0xFF; 143 digest[i * 4] = (s->h[i] >> 24) & 0xFF;
144 digest[i * 4 + 1] = (s->h[i] >> 16) & 0xFF; 144 digest[i * 4 + 1] = (s->h[i] >> 16) & 0xFF;
145 digest[i * 4 + 2] = (s->h[i] >> 8) & 0xFF; 145 digest[i * 4 + 2] = (s->h[i] >> 8) & 0xFF;
146 digest[i * 4 + 3] = (s->h[i]) & 0xFF; 146 digest[i * 4 + 3] = (s->h[i]) & 0xFF;
147 } 147 }
148 } 148 }
149 void CRYPT_SHA1Generate(const uint8_t* data, 149 void CRYPT_SHA1Generate(const uint8_t* data,
150 FX_DWORD size, 150 uint32_t size,
151 uint8_t digest[20]) { 151 uint8_t digest[20]) {
152 SHA_State s; 152 SHA_State s;
153 CRYPT_SHA1Start(&s); 153 CRYPT_SHA1Start(&s);
154 CRYPT_SHA1Update(&s, data, size); 154 CRYPT_SHA1Update(&s, data, size);
155 CRYPT_SHA1Finish(&s, digest); 155 CRYPT_SHA1Finish(&s, digest);
156 } 156 }
157 typedef struct { 157 typedef struct {
158 FX_DWORD total[2]; 158 uint32_t total[2];
159 FX_DWORD state[8]; 159 uint32_t state[8];
160 uint8_t buffer[64]; 160 uint8_t buffer[64];
161 } sha256_context; 161 } sha256_context;
162 #define GET_FX_DWORD(n, b, i) \ 162 #define GET_FX_DWORD(n, b, i) \
163 { \ 163 { \
164 (n) = ((FX_DWORD)(b)[(i)] << 24) | ((FX_DWORD)(b)[(i) + 1] << 16) | \ 164 (n) = ((uint32_t)(b)[(i)] << 24) | ((uint32_t)(b)[(i) + 1] << 16) | \
165 ((FX_DWORD)(b)[(i) + 2] << 8) | ((FX_DWORD)(b)[(i) + 3]); \ 165 ((uint32_t)(b)[(i) + 2] << 8) | ((uint32_t)(b)[(i) + 3]); \
166 } 166 }
167 #define PUT_FX_DWORD(n, b, i) \ 167 #define PUT_FX_DWORD(n, b, i) \
168 { \ 168 { \
169 (b)[(i)] = (uint8_t)((n) >> 24); \ 169 (b)[(i)] = (uint8_t)((n) >> 24); \
170 (b)[(i) + 1] = (uint8_t)((n) >> 16); \ 170 (b)[(i) + 1] = (uint8_t)((n) >> 16); \
171 (b)[(i) + 2] = (uint8_t)((n) >> 8); \ 171 (b)[(i) + 2] = (uint8_t)((n) >> 8); \
172 (b)[(i) + 3] = (uint8_t)((n)); \ 172 (b)[(i) + 3] = (uint8_t)((n)); \
173 } 173 }
174 void CRYPT_SHA256Start(void* context) { 174 void CRYPT_SHA256Start(void* context) {
175 sha256_context* ctx = (sha256_context*)context; 175 sha256_context* ctx = (sha256_context*)context;
176 ctx->total[0] = 0; 176 ctx->total[0] = 0;
177 ctx->total[1] = 0; 177 ctx->total[1] = 0;
178 ctx->state[0] = 0x6A09E667; 178 ctx->state[0] = 0x6A09E667;
179 ctx->state[1] = 0xBB67AE85; 179 ctx->state[1] = 0xBB67AE85;
180 ctx->state[2] = 0x3C6EF372; 180 ctx->state[2] = 0x3C6EF372;
181 ctx->state[3] = 0xA54FF53A; 181 ctx->state[3] = 0xA54FF53A;
182 ctx->state[4] = 0x510E527F; 182 ctx->state[4] = 0x510E527F;
183 ctx->state[5] = 0x9B05688C; 183 ctx->state[5] = 0x9B05688C;
184 ctx->state[6] = 0x1F83D9AB; 184 ctx->state[6] = 0x1F83D9AB;
185 ctx->state[7] = 0x5BE0CD19; 185 ctx->state[7] = 0x5BE0CD19;
186 } 186 }
187 static void sha256_process(sha256_context* ctx, const uint8_t data[64]) { 187 static void sha256_process(sha256_context* ctx, const uint8_t data[64]) {
188 FX_DWORD temp1, temp2, W[64]; 188 uint32_t temp1, temp2, W[64];
189 FX_DWORD A, B, C, D, E, F, G, H; 189 uint32_t A, B, C, D, E, F, G, H;
190 GET_FX_DWORD(W[0], data, 0); 190 GET_FX_DWORD(W[0], data, 0);
191 GET_FX_DWORD(W[1], data, 4); 191 GET_FX_DWORD(W[1], data, 4);
192 GET_FX_DWORD(W[2], data, 8); 192 GET_FX_DWORD(W[2], data, 8);
193 GET_FX_DWORD(W[3], data, 12); 193 GET_FX_DWORD(W[3], data, 12);
194 GET_FX_DWORD(W[4], data, 16); 194 GET_FX_DWORD(W[4], data, 16);
195 GET_FX_DWORD(W[5], data, 20); 195 GET_FX_DWORD(W[5], data, 20);
196 GET_FX_DWORD(W[6], data, 24); 196 GET_FX_DWORD(W[6], data, 24);
197 GET_FX_DWORD(W[7], data, 28); 197 GET_FX_DWORD(W[7], data, 28);
198 GET_FX_DWORD(W[8], data, 32); 198 GET_FX_DWORD(W[8], data, 32);
199 GET_FX_DWORD(W[9], data, 36); 199 GET_FX_DWORD(W[9], data, 36);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2); 293 P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2);
294 ctx->state[0] += A; 294 ctx->state[0] += A;
295 ctx->state[1] += B; 295 ctx->state[1] += B;
296 ctx->state[2] += C; 296 ctx->state[2] += C;
297 ctx->state[3] += D; 297 ctx->state[3] += D;
298 ctx->state[4] += E; 298 ctx->state[4] += E;
299 ctx->state[5] += F; 299 ctx->state[5] += F;
300 ctx->state[6] += G; 300 ctx->state[6] += G;
301 ctx->state[7] += H; 301 ctx->state[7] += H;
302 } 302 }
303 void CRYPT_SHA256Update(void* context, const uint8_t* input, FX_DWORD length) { 303 void CRYPT_SHA256Update(void* context, const uint8_t* input, uint32_t length) {
304 sha256_context* ctx = (sha256_context*)context; 304 sha256_context* ctx = (sha256_context*)context;
305 FX_DWORD left, fill; 305 uint32_t left, fill;
306 if (!length) { 306 if (!length) {
307 return; 307 return;
308 } 308 }
309 left = ctx->total[0] & 0x3F; 309 left = ctx->total[0] & 0x3F;
310 fill = 64 - left; 310 fill = 64 - left;
311 ctx->total[0] += length; 311 ctx->total[0] += length;
312 ctx->total[0] &= 0xFFFFFFFF; 312 ctx->total[0] &= 0xFFFFFFFF;
313 if (ctx->total[0] < length) { 313 if (ctx->total[0] < length) {
314 ctx->total[1]++; 314 ctx->total[1]++;
315 } 315 }
(...skipping 12 matching lines...) Expand all
328 if (length) { 328 if (length) {
329 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); 329 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length);
330 } 330 }
331 } 331 }
332 static const uint8_t sha256_padding[64] = { 332 static const uint8_t sha256_padding[64] = {
333 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
336 void CRYPT_SHA256Finish(void* context, uint8_t digest[32]) { 336 void CRYPT_SHA256Finish(void* context, uint8_t digest[32]) {
337 sha256_context* ctx = (sha256_context*)context; 337 sha256_context* ctx = (sha256_context*)context;
338 FX_DWORD last, padn; 338 uint32_t last, padn;
339 FX_DWORD high, low; 339 uint32_t high, low;
340 uint8_t msglen[8]; 340 uint8_t msglen[8];
341 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); 341 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3);
342 low = (ctx->total[0] << 3); 342 low = (ctx->total[0] << 3);
343 PUT_FX_DWORD(high, msglen, 0); 343 PUT_FX_DWORD(high, msglen, 0);
344 PUT_FX_DWORD(low, msglen, 4); 344 PUT_FX_DWORD(low, msglen, 4);
345 last = ctx->total[0] & 0x3F; 345 last = ctx->total[0] & 0x3F;
346 padn = (last < 56) ? (56 - last) : (120 - last); 346 padn = (last < 56) ? (56 - last) : (120 - last);
347 CRYPT_SHA256Update(ctx, sha256_padding, padn); 347 CRYPT_SHA256Update(ctx, sha256_padding, padn);
348 CRYPT_SHA256Update(ctx, msglen, 8); 348 CRYPT_SHA256Update(ctx, msglen, 8);
349 PUT_FX_DWORD(ctx->state[0], digest, 0); 349 PUT_FX_DWORD(ctx->state[0], digest, 0);
350 PUT_FX_DWORD(ctx->state[1], digest, 4); 350 PUT_FX_DWORD(ctx->state[1], digest, 4);
351 PUT_FX_DWORD(ctx->state[2], digest, 8); 351 PUT_FX_DWORD(ctx->state[2], digest, 8);
352 PUT_FX_DWORD(ctx->state[3], digest, 12); 352 PUT_FX_DWORD(ctx->state[3], digest, 12);
353 PUT_FX_DWORD(ctx->state[4], digest, 16); 353 PUT_FX_DWORD(ctx->state[4], digest, 16);
354 PUT_FX_DWORD(ctx->state[5], digest, 20); 354 PUT_FX_DWORD(ctx->state[5], digest, 20);
355 PUT_FX_DWORD(ctx->state[6], digest, 24); 355 PUT_FX_DWORD(ctx->state[6], digest, 24);
356 PUT_FX_DWORD(ctx->state[7], digest, 28); 356 PUT_FX_DWORD(ctx->state[7], digest, 28);
357 } 357 }
358 void CRYPT_SHA256Generate(const uint8_t* data, 358 void CRYPT_SHA256Generate(const uint8_t* data,
359 FX_DWORD size, 359 uint32_t size,
360 uint8_t digest[32]) { 360 uint8_t digest[32]) {
361 sha256_context ctx; 361 sha256_context ctx;
362 CRYPT_SHA256Start(&ctx); 362 CRYPT_SHA256Start(&ctx);
363 CRYPT_SHA256Update(&ctx, data, size); 363 CRYPT_SHA256Update(&ctx, data, size);
364 CRYPT_SHA256Finish(&ctx, digest); 364 CRYPT_SHA256Finish(&ctx, digest);
365 } 365 }
366 typedef struct { 366 typedef struct {
367 uint64_t total[2]; 367 uint64_t total[2];
368 uint64_t state[8]; 368 uint64_t state[8];
369 uint8_t buffer[128]; 369 uint8_t buffer[128];
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 } 539 }
540 ctx->state[0] += A; 540 ctx->state[0] += A;
541 ctx->state[1] += B; 541 ctx->state[1] += B;
542 ctx->state[2] += C; 542 ctx->state[2] += C;
543 ctx->state[3] += D; 543 ctx->state[3] += D;
544 ctx->state[4] += E; 544 ctx->state[4] += E;
545 ctx->state[5] += F; 545 ctx->state[5] += F;
546 ctx->state[6] += G; 546 ctx->state[6] += G;
547 ctx->state[7] += H; 547 ctx->state[7] += H;
548 } 548 }
549 void CRYPT_SHA384Update(void* context, const uint8_t* input, FX_DWORD length) { 549 void CRYPT_SHA384Update(void* context, const uint8_t* input, uint32_t length) {
550 sha384_context* ctx = (sha384_context*)context; 550 sha384_context* ctx = (sha384_context*)context;
551 FX_DWORD left, fill; 551 uint32_t left, fill;
552 if (!length) { 552 if (!length) {
553 return; 553 return;
554 } 554 }
555 left = (FX_DWORD)ctx->total[0] & 0x7F; 555 left = (uint32_t)ctx->total[0] & 0x7F;
556 fill = 128 - left; 556 fill = 128 - left;
557 ctx->total[0] += length; 557 ctx->total[0] += length;
558 if (ctx->total[0] < length) { 558 if (ctx->total[0] < length) {
559 ctx->total[1]++; 559 ctx->total[1]++;
560 } 560 }
561 if (left && length >= fill) { 561 if (left && length >= fill) {
562 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); 562 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill);
563 sha384_process(ctx, ctx->buffer); 563 sha384_process(ctx, ctx->buffer);
564 length -= fill; 564 length -= fill;
565 input += fill; 565 input += fill;
566 left = 0; 566 left = 0;
567 } 567 }
568 while (length >= 128) { 568 while (length >= 128) {
569 sha384_process(ctx, input); 569 sha384_process(ctx, input);
570 length -= 128; 570 length -= 128;
571 input += 128; 571 input += 128;
572 } 572 }
573 if (length) { 573 if (length) {
574 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); 574 FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length);
575 } 575 }
576 } 576 }
577 void CRYPT_SHA384Finish(void* context, uint8_t digest[48]) { 577 void CRYPT_SHA384Finish(void* context, uint8_t digest[48]) {
578 sha384_context* ctx = (sha384_context*)context; 578 sha384_context* ctx = (sha384_context*)context;
579 FX_DWORD last, padn; 579 uint32_t last, padn;
580 uint8_t msglen[16]; 580 uint8_t msglen[16];
581 FXSYS_memset(msglen, 0, 16); 581 FXSYS_memset(msglen, 0, 16);
582 uint64_t high, low; 582 uint64_t high, low;
583 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); 583 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3);
584 low = (ctx->total[0] << 3); 584 low = (ctx->total[0] << 3);
585 PUT_FX_64DWORD(high, msglen, 0); 585 PUT_FX_64DWORD(high, msglen, 0);
586 PUT_FX_64DWORD(low, msglen, 8); 586 PUT_FX_64DWORD(low, msglen, 8);
587 last = (FX_DWORD)ctx->total[0] & 0x7F; 587 last = (uint32_t)ctx->total[0] & 0x7F;
588 padn = (last < 112) ? (112 - last) : (240 - last); 588 padn = (last < 112) ? (112 - last) : (240 - last);
589 CRYPT_SHA384Update(ctx, sha384_padding, padn); 589 CRYPT_SHA384Update(ctx, sha384_padding, padn);
590 CRYPT_SHA384Update(ctx, msglen, 16); 590 CRYPT_SHA384Update(ctx, msglen, 16);
591 PUT_FX_64DWORD(ctx->state[0], digest, 0); 591 PUT_FX_64DWORD(ctx->state[0], digest, 0);
592 PUT_FX_64DWORD(ctx->state[1], digest, 8); 592 PUT_FX_64DWORD(ctx->state[1], digest, 8);
593 PUT_FX_64DWORD(ctx->state[2], digest, 16); 593 PUT_FX_64DWORD(ctx->state[2], digest, 16);
594 PUT_FX_64DWORD(ctx->state[3], digest, 24); 594 PUT_FX_64DWORD(ctx->state[3], digest, 24);
595 PUT_FX_64DWORD(ctx->state[4], digest, 32); 595 PUT_FX_64DWORD(ctx->state[4], digest, 32);
596 PUT_FX_64DWORD(ctx->state[5], digest, 40); 596 PUT_FX_64DWORD(ctx->state[5], digest, 40);
597 } 597 }
598 void CRYPT_SHA384Generate(const uint8_t* data, 598 void CRYPT_SHA384Generate(const uint8_t* data,
599 FX_DWORD size, 599 uint32_t size,
600 uint8_t digest[64]) { 600 uint8_t digest[64]) {
601 sha384_context context; 601 sha384_context context;
602 CRYPT_SHA384Start(&context); 602 CRYPT_SHA384Start(&context);
603 CRYPT_SHA384Update(&context, data, size); 603 CRYPT_SHA384Update(&context, data, size);
604 CRYPT_SHA384Finish(&context, digest); 604 CRYPT_SHA384Finish(&context, digest);
605 } 605 }
606 void CRYPT_SHA512Start(void* context) { 606 void CRYPT_SHA512Start(void* context) {
607 if (!context) { 607 if (!context) {
608 return; 608 return;
609 } 609 }
610 sha384_context* ctx = (sha384_context*)context; 610 sha384_context* ctx = (sha384_context*)context;
611 FXSYS_memset(ctx, 0, sizeof(sha384_context)); 611 FXSYS_memset(ctx, 0, sizeof(sha384_context));
612 ctx->state[0] = FX_ato64i("6a09e667f3bcc908"); 612 ctx->state[0] = FX_ato64i("6a09e667f3bcc908");
613 ctx->state[1] = FX_ato64i("bb67ae8584caa73b"); 613 ctx->state[1] = FX_ato64i("bb67ae8584caa73b");
614 ctx->state[2] = FX_ato64i("3c6ef372fe94f82b"); 614 ctx->state[2] = FX_ato64i("3c6ef372fe94f82b");
615 ctx->state[3] = FX_ato64i("a54ff53a5f1d36f1"); 615 ctx->state[3] = FX_ato64i("a54ff53a5f1d36f1");
616 ctx->state[4] = FX_ato64i("510e527fade682d1"); 616 ctx->state[4] = FX_ato64i("510e527fade682d1");
617 ctx->state[5] = FX_ato64i("9b05688c2b3e6c1f"); 617 ctx->state[5] = FX_ato64i("9b05688c2b3e6c1f");
618 ctx->state[6] = FX_ato64i("1f83d9abfb41bd6b"); 618 ctx->state[6] = FX_ato64i("1f83d9abfb41bd6b");
619 ctx->state[7] = FX_ato64i("5be0cd19137e2179"); 619 ctx->state[7] = FX_ato64i("5be0cd19137e2179");
620 } 620 }
621 void CRYPT_SHA512Update(void* context, const uint8_t* data, FX_DWORD size) { 621 void CRYPT_SHA512Update(void* context, const uint8_t* data, uint32_t size) {
622 CRYPT_SHA384Update(context, data, size); 622 CRYPT_SHA384Update(context, data, size);
623 } 623 }
624 void CRYPT_SHA512Finish(void* context, uint8_t digest[64]) { 624 void CRYPT_SHA512Finish(void* context, uint8_t digest[64]) {
625 sha384_context* ctx = (sha384_context*)context; 625 sha384_context* ctx = (sha384_context*)context;
626 FX_DWORD last, padn; 626 uint32_t last, padn;
627 uint8_t msglen[16]; 627 uint8_t msglen[16];
628 FXSYS_memset(msglen, 0, 16); 628 FXSYS_memset(msglen, 0, 16);
629 uint64_t high, low; 629 uint64_t high, low;
630 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); 630 high = (ctx->total[0] >> 29) | (ctx->total[1] << 3);
631 low = (ctx->total[0] << 3); 631 low = (ctx->total[0] << 3);
632 PUT_FX_64DWORD(high, msglen, 0); 632 PUT_FX_64DWORD(high, msglen, 0);
633 PUT_FX_64DWORD(low, msglen, 8); 633 PUT_FX_64DWORD(low, msglen, 8);
634 last = (FX_DWORD)ctx->total[0] & 0x7F; 634 last = (uint32_t)ctx->total[0] & 0x7F;
635 padn = (last < 112) ? (112 - last) : (240 - last); 635 padn = (last < 112) ? (112 - last) : (240 - last);
636 CRYPT_SHA512Update(ctx, sha384_padding, padn); 636 CRYPT_SHA512Update(ctx, sha384_padding, padn);
637 CRYPT_SHA512Update(ctx, msglen, 16); 637 CRYPT_SHA512Update(ctx, msglen, 16);
638 PUT_FX_64DWORD(ctx->state[0], digest, 0); 638 PUT_FX_64DWORD(ctx->state[0], digest, 0);
639 PUT_FX_64DWORD(ctx->state[1], digest, 8); 639 PUT_FX_64DWORD(ctx->state[1], digest, 8);
640 PUT_FX_64DWORD(ctx->state[2], digest, 16); 640 PUT_FX_64DWORD(ctx->state[2], digest, 16);
641 PUT_FX_64DWORD(ctx->state[3], digest, 24); 641 PUT_FX_64DWORD(ctx->state[3], digest, 24);
642 PUT_FX_64DWORD(ctx->state[4], digest, 32); 642 PUT_FX_64DWORD(ctx->state[4], digest, 32);
643 PUT_FX_64DWORD(ctx->state[5], digest, 40); 643 PUT_FX_64DWORD(ctx->state[5], digest, 40);
644 PUT_FX_64DWORD(ctx->state[6], digest, 48); 644 PUT_FX_64DWORD(ctx->state[6], digest, 48);
645 PUT_FX_64DWORD(ctx->state[7], digest, 56); 645 PUT_FX_64DWORD(ctx->state[7], digest, 56);
646 } 646 }
647 void CRYPT_SHA512Generate(const uint8_t* data, 647 void CRYPT_SHA512Generate(const uint8_t* data,
648 FX_DWORD size, 648 uint32_t size,
649 uint8_t digest[64]) { 649 uint8_t digest[64]) {
650 sha384_context context; 650 sha384_context context;
651 CRYPT_SHA512Start(&context); 651 CRYPT_SHA512Start(&context);
652 CRYPT_SHA512Update(&context, data, size); 652 CRYPT_SHA512Update(&context, data, size);
653 CRYPT_SHA512Finish(&context, digest); 653 CRYPT_SHA512Finish(&context, digest);
654 } 654 }
655 #ifdef __cplusplus 655 #ifdef __cplusplus
656 }; 656 };
657 #endif 657 #endif
OLDNEW
« no previous file with comments | « core/fdrm/crypto/fx_crypt_aes.cpp ('k') | core/fdrm/crypto/include/fx_crypt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698