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

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

Issue 1861403002: Rename FX_SAFE_DWORD to FX_SAFE_UINT32 (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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 | « no previous file | core/fdrm/crypto/fx_crypt_sha.cpp » ('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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 uint32_t keylen) { 55 uint32_t keylen) {
56 rc4_state s; 56 rc4_state s;
57 CRYPT_ArcFourSetup(&s, key, keylen); 57 CRYPT_ArcFourSetup(&s, key, keylen);
58 CRYPT_ArcFourCrypt(&s, pData, size); 58 CRYPT_ArcFourCrypt(&s, pData, size);
59 } 59 }
60 struct md5_context { 60 struct md5_context {
61 uint32_t total[2]; 61 uint32_t total[2];
62 uint32_t state[4]; 62 uint32_t state[4];
63 uint8_t buffer[64]; 63 uint8_t buffer[64];
64 }; 64 };
65 #define GET_FX_DWORD(n, b, i) \ 65 #define GET_UINT32(n, b, i) \
66 { \ 66 { \
67 (n) = (uint32_t)((uint8_t*)b)[(i)] | \ 67 (n) = (uint32_t)((uint8_t*)b)[(i)] | \
68 (((uint32_t)((uint8_t*)b)[(i) + 1]) << 8) | \ 68 (((uint32_t)((uint8_t*)b)[(i) + 1]) << 8) | \
69 (((uint32_t)((uint8_t*)b)[(i) + 2]) << 16) | \ 69 (((uint32_t)((uint8_t*)b)[(i) + 2]) << 16) | \
70 (((uint32_t)((uint8_t*)b)[(i) + 3]) << 24); \ 70 (((uint32_t)((uint8_t*)b)[(i) + 3]) << 24); \
71 } 71 }
72 #define PUT_FX_DWORD(n, b, i) \ 72 #define PUT_UINT32(n, b, i) \
73 { \ 73 { \
74 (((uint8_t*)b)[(i)]) = (uint8_t)(((n)) & 0xFF); \ 74 (((uint8_t*)b)[(i)]) = (uint8_t)(((n)) & 0xFF); \
75 (((uint8_t*)b)[(i) + 1]) = (uint8_t)(((n) >> 8) & 0xFF); \ 75 (((uint8_t*)b)[(i) + 1]) = (uint8_t)(((n) >> 8) & 0xFF); \
76 (((uint8_t*)b)[(i) + 2]) = (uint8_t)(((n) >> 16) & 0xFF); \ 76 (((uint8_t*)b)[(i) + 2]) = (uint8_t)(((n) >> 16) & 0xFF); \
77 (((uint8_t*)b)[(i) + 3]) = (uint8_t)(((n) >> 24) & 0xFF); \ 77 (((uint8_t*)b)[(i) + 3]) = (uint8_t)(((n) >> 24) & 0xFF); \
78 } 78 }
79 void md5_process(struct md5_context* ctx, const uint8_t data[64]) { 79 void md5_process(struct md5_context* ctx, const uint8_t data[64]) {
80 uint32_t A, B, C, D, X[16]; 80 uint32_t A, B, C, D, X[16];
81 GET_FX_DWORD(X[0], data, 0); 81 GET_UINT32(X[0], data, 0);
82 GET_FX_DWORD(X[1], data, 4); 82 GET_UINT32(X[1], data, 4);
83 GET_FX_DWORD(X[2], data, 8); 83 GET_UINT32(X[2], data, 8);
84 GET_FX_DWORD(X[3], data, 12); 84 GET_UINT32(X[3], data, 12);
85 GET_FX_DWORD(X[4], data, 16); 85 GET_UINT32(X[4], data, 16);
86 GET_FX_DWORD(X[5], data, 20); 86 GET_UINT32(X[5], data, 20);
87 GET_FX_DWORD(X[6], data, 24); 87 GET_UINT32(X[6], data, 24);
88 GET_FX_DWORD(X[7], data, 28); 88 GET_UINT32(X[7], data, 28);
89 GET_FX_DWORD(X[8], data, 32); 89 GET_UINT32(X[8], data, 32);
90 GET_FX_DWORD(X[9], data, 36); 90 GET_UINT32(X[9], data, 36);
91 GET_FX_DWORD(X[10], data, 40); 91 GET_UINT32(X[10], data, 40);
92 GET_FX_DWORD(X[11], data, 44); 92 GET_UINT32(X[11], data, 44);
93 GET_FX_DWORD(X[12], data, 48); 93 GET_UINT32(X[12], data, 48);
94 GET_FX_DWORD(X[13], data, 52); 94 GET_UINT32(X[13], data, 52);
95 GET_FX_DWORD(X[14], data, 56); 95 GET_UINT32(X[14], data, 56);
96 GET_FX_DWORD(X[15], data, 60); 96 GET_UINT32(X[15], data, 60);
97 #define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) 97 #define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
98 #define P(a, b, c, d, k, s, t) \ 98 #define P(a, b, c, d, k, s, t) \
99 { \ 99 { \
100 a += F(b, c, d) + X[k] + t; \ 100 a += F(b, c, d) + X[k] + t; \
101 a = S(a, s) + b; \ 101 a = S(a, s) + b; \
102 } 102 }
103 A = ctx->state[0]; 103 A = ctx->state[0];
104 B = ctx->state[1]; 104 B = ctx->state[1];
105 C = ctx->state[2]; 105 C = ctx->state[2];
106 D = ctx->state[3]; 106 D = ctx->state[3];
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 } 219 }
220 } 220 }
221 const uint8_t md5_padding[64] = { 221 const uint8_t md5_padding[64] = {
222 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
225 void CRYPT_MD5Finish(void* pctx, uint8_t digest[16]) { 225 void CRYPT_MD5Finish(void* pctx, uint8_t digest[16]) {
226 struct md5_context* ctx = (struct md5_context*)pctx; 226 struct md5_context* ctx = (struct md5_context*)pctx;
227 uint32_t last, padn; 227 uint32_t last, padn;
228 uint8_t msglen[8]; 228 uint8_t msglen[8];
229 PUT_FX_DWORD(ctx->total[0], msglen, 0); 229 PUT_UINT32(ctx->total[0], msglen, 0);
230 PUT_FX_DWORD(ctx->total[1], msglen, 4); 230 PUT_UINT32(ctx->total[1], msglen, 4);
231 last = (ctx->total[0] >> 3) & 0x3F; 231 last = (ctx->total[0] >> 3) & 0x3F;
232 padn = (last < 56) ? (56 - last) : (120 - last); 232 padn = (last < 56) ? (56 - last) : (120 - last);
233 CRYPT_MD5Update(ctx, md5_padding, padn); 233 CRYPT_MD5Update(ctx, md5_padding, padn);
234 CRYPT_MD5Update(ctx, msglen, 8); 234 CRYPT_MD5Update(ctx, msglen, 8);
235 PUT_FX_DWORD(ctx->state[0], digest, 0); 235 PUT_UINT32(ctx->state[0], digest, 0);
236 PUT_FX_DWORD(ctx->state[1], digest, 4); 236 PUT_UINT32(ctx->state[1], digest, 4);
237 PUT_FX_DWORD(ctx->state[2], digest, 8); 237 PUT_UINT32(ctx->state[2], digest, 8);
238 PUT_FX_DWORD(ctx->state[3], digest, 12); 238 PUT_UINT32(ctx->state[3], digest, 12);
239 } 239 }
240 void CRYPT_MD5Generate(const uint8_t* input, 240 void CRYPT_MD5Generate(const uint8_t* input,
241 uint32_t length, 241 uint32_t length,
242 uint8_t digest[16]) { 242 uint8_t digest[16]) {
243 md5_context ctx; 243 md5_context ctx;
244 CRYPT_MD5Start(&ctx); 244 CRYPT_MD5Start(&ctx);
245 CRYPT_MD5Update(&ctx, input, length); 245 CRYPT_MD5Update(&ctx, input, length);
246 CRYPT_MD5Finish(&ctx, digest); 246 CRYPT_MD5Finish(&ctx, digest);
247 } 247 }
248 static FX_BOOL (*g_PubKeyDecryptor)(const uint8_t* pData, 248 static FX_BOOL (*g_PubKeyDecryptor)(const uint8_t* pData,
249 uint32_t size, 249 uint32_t size,
250 uint8_t* data_buf, 250 uint8_t* data_buf,
251 uint32_t& data_len) = NULL; 251 uint32_t& data_len) = NULL;
252 void CRYPT_SetPubKeyDecryptor(FX_BOOL (*func)(const uint8_t* pData, 252 void CRYPT_SetPubKeyDecryptor(FX_BOOL (*func)(const uint8_t* pData,
253 uint32_t size, 253 uint32_t size,
254 uint8_t* data_buf, 254 uint8_t* data_buf,
255 uint32_t& data_len)) { 255 uint32_t& data_len)) {
256 g_PubKeyDecryptor = func; 256 g_PubKeyDecryptor = func;
257 } 257 }
258 #ifdef __cplusplus 258 #ifdef __cplusplus
259 }; 259 };
260 #endif 260 #endif
OLDNEW
« no previous file with comments | « no previous file | core/fdrm/crypto/fx_crypt_sha.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698