Use some uint64_t constants in fx_crypt_sha.cpp.

Instead of storing the same constants as strings and converting them to
uint64_t.

Change-Id: Ib32b0f721303f917e197cf93999857a7ee745823
Reviewed-on: https://pdfium-review.googlesource.com/3621
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp
index d2745e8..49f7755 100644
--- a/core/fdrm/crypto/fx_crypt_sha.cpp
+++ b/core/fdrm/crypto/fx_crypt_sha.cpp
@@ -259,58 +259,36 @@
     0,    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-const char* const constants[] = {
-    "428a2f98d728ae22", "7137449123ef65cd", "b5c0fbcfec4d3b2f",
-    "e9b5dba58189dbbc", "3956c25bf348b538", "59f111f1b605d019",
-    "923f82a4af194f9b", "ab1c5ed5da6d8118", "d807aa98a3030242",
-    "12835b0145706fbe", "243185be4ee4b28c", "550c7dc3d5ffb4e2",
-    "72be5d74f27b896f", "80deb1fe3b1696b1", "9bdc06a725c71235",
-    "c19bf174cf692694", "e49b69c19ef14ad2", "efbe4786384f25e3",
-    "0fc19dc68b8cd5b5", "240ca1cc77ac9c65", "2de92c6f592b0275",
-    "4a7484aa6ea6e483", "5cb0a9dcbd41fbd4", "76f988da831153b5",
-    "983e5152ee66dfab", "a831c66d2db43210", "b00327c898fb213f",
-    "bf597fc7beef0ee4", "c6e00bf33da88fc2", "d5a79147930aa725",
-    "06ca6351e003826f", "142929670a0e6e70", "27b70a8546d22ffc",
-    "2e1b21385c26c926", "4d2c6dfc5ac42aed", "53380d139d95b3df",
-    "650a73548baf63de", "766a0abb3c77b2a8", "81c2c92e47edaee6",
-    "92722c851482353b", "a2bfe8a14cf10364", "a81a664bbc423001",
-    "c24b8b70d0f89791", "c76c51a30654be30", "d192e819d6ef5218",
-    "d69906245565a910", "f40e35855771202a", "106aa07032bbd1b8",
-    "19a4c116b8d2d0c8", "1e376c085141ab53", "2748774cdf8eeb99",
-    "34b0bcb5e19b48a8", "391c0cb3c5c95a63", "4ed8aa4ae3418acb",
-    "5b9cca4f7763e373", "682e6ff3d6b2b8a3", "748f82ee5defb2fc",
-    "78a5636f43172f60", "84c87814a1f0ab72", "8cc702081a6439ec",
-    "90befffa23631e28", "a4506cebde82bde9", "bef9a3f7b2c67915",
-    "c67178f2e372532b", "ca273eceea26619c", "d186b8c721c0c207",
-    "eada7dd6cde0eb1e", "f57d4f7fee6ed178", "06f067aa72176fba",
-    "0a637dc5a2c898a6", "113f9804bef90dae", "1b710b35131c471b",
-    "28db77f523047d84", "32caab7b40c72493", "3c9ebe0a15c9bebc",
-    "431d67c49c100d4c", "4cc5d4becb3e42b6", "597f299cfc657e2a",
-    "5fcb6fab3ad6faec", "6c44198c4a475817",
+uint64_t const constants[] = {
+    0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
+    0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
+    0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL,
+    0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
+    0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL,
+    0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
+    0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL,
+    0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
+    0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL,
+    0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
+    0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL,
+    0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
+    0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL,
+    0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
+    0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL,
+    0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
+    0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL,
+    0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
+    0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL,
+    0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
+    0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL,
+    0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
+    0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL,
+    0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
+    0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL,
+    0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
+    0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,
 };
 
-uint64_t FX_ato64i(const char* str) {
-  ASSERT(str);
-  uint64_t ret = 0;
-  int len = (int)FXSYS_strlen(str);
-  len = len > 16 ? 16 : len;
-  for (int i = 0; i < len; ++i) {
-    if (i) {
-      ret <<= 4;
-    }
-    if (str[i] >= '0' && str[i] <= '9') {
-      ret |= (str[i] - '0') & 0xFF;
-    } else if (str[i] >= 'a' && str[i] <= 'f') {
-      ret |= (str[i] - 'a' + 10) & 0xFF;
-    } else if (str[i] >= 'A' && str[i] <= 'F') {
-      ret |= (str[i] - 'A' + 10) & 0xFF;
-    } else {
-      ASSERT(false);
-    }
-  }
-  return ret;
-}
-
 void sha384_process(CRYPT_sha384_context* ctx, const uint8_t data[128]) {
   uint64_t temp1, temp2;
   uint64_t A, B, C, D, E, F, G, H;
@@ -360,14 +338,14 @@
       temp[6] = SHA384_R(i * 8 + 6);
       temp[7] = SHA384_R(i * 8 + 7);
     }
-    SHA384_P(A, B, C, D, E, F, G, H, temp[0], FX_ato64i(constants[i * 8]));
-    SHA384_P(H, A, B, C, D, E, F, G, temp[1], FX_ato64i(constants[i * 8 + 1]));
-    SHA384_P(G, H, A, B, C, D, E, F, temp[2], FX_ato64i(constants[i * 8 + 2]));
-    SHA384_P(F, G, H, A, B, C, D, E, temp[3], FX_ato64i(constants[i * 8 + 3]));
-    SHA384_P(E, F, G, H, A, B, C, D, temp[4], FX_ato64i(constants[i * 8 + 4]));
-    SHA384_P(D, E, F, G, H, A, B, C, temp[5], FX_ato64i(constants[i * 8 + 5]));
-    SHA384_P(C, D, E, F, G, H, A, B, temp[6], FX_ato64i(constants[i * 8 + 6]));
-    SHA384_P(B, C, D, E, F, G, H, A, temp[7], FX_ato64i(constants[i * 8 + 7]));
+    SHA384_P(A, B, C, D, E, F, G, H, temp[0], constants[i * 8]);
+    SHA384_P(H, A, B, C, D, E, F, G, temp[1], constants[i * 8 + 1]);
+    SHA384_P(G, H, A, B, C, D, E, F, temp[2], constants[i * 8 + 2]);
+    SHA384_P(F, G, H, A, B, C, D, E, temp[3], constants[i * 8 + 3]);
+    SHA384_P(E, F, G, H, A, B, C, D, temp[4], constants[i * 8 + 4]);
+    SHA384_P(D, E, F, G, H, A, B, C, temp[5], constants[i * 8 + 5]);
+    SHA384_P(C, D, E, F, G, H, A, B, temp[6], constants[i * 8 + 6]);
+    SHA384_P(B, C, D, E, F, G, H, A, temp[7], constants[i * 8 + 7]);
   }
   ctx->state[0] += A;
   ctx->state[1] += B;
@@ -536,14 +514,14 @@
     return;
 
   memset(ctx, 0, sizeof(CRYPT_sha384_context));
-  ctx->state[0] = FX_ato64i("cbbb9d5dc1059ed8");
-  ctx->state[1] = FX_ato64i("629a292a367cd507");
-  ctx->state[2] = FX_ato64i("9159015a3070dd17");
-  ctx->state[3] = FX_ato64i("152fecd8f70e5939");
-  ctx->state[4] = FX_ato64i("67332667ffc00b31");
-  ctx->state[5] = FX_ato64i("8eb44a8768581511");
-  ctx->state[6] = FX_ato64i("db0c2e0d64f98fa7");
-  ctx->state[7] = FX_ato64i("47b5481dbefa4fa4");
+  ctx->state[0] = 0xcbbb9d5dc1059ed8ULL;
+  ctx->state[1] = 0x629a292a367cd507ULL;
+  ctx->state[2] = 0x9159015a3070dd17ULL;
+  ctx->state[3] = 0x152fecd8f70e5939ULL;
+  ctx->state[4] = 0x67332667ffc00b31ULL;
+  ctx->state[5] = 0x8eb44a8768581511ULL;
+  ctx->state[6] = 0xdb0c2e0d64f98fa7ULL;
+  ctx->state[7] = 0x47b5481dbefa4fa4ULL;
 }
 
 void CRYPT_SHA384Update(CRYPT_sha384_context* ctx,
@@ -605,19 +583,19 @@
 }
 
 void CRYPT_SHA512Start(void* context) {
-  if (!context) {
+  if (!context)
     return;
-  }
+
   CRYPT_sha384_context* ctx = (CRYPT_sha384_context*)context;
   memset(ctx, 0, sizeof(CRYPT_sha384_context));
-  ctx->state[0] = FX_ato64i("6a09e667f3bcc908");
-  ctx->state[1] = FX_ato64i("bb67ae8584caa73b");
-  ctx->state[2] = FX_ato64i("3c6ef372fe94f82b");
-  ctx->state[3] = FX_ato64i("a54ff53a5f1d36f1");
-  ctx->state[4] = FX_ato64i("510e527fade682d1");
-  ctx->state[5] = FX_ato64i("9b05688c2b3e6c1f");
-  ctx->state[6] = FX_ato64i("1f83d9abfb41bd6b");
-  ctx->state[7] = FX_ato64i("5be0cd19137e2179");
+  ctx->state[0] = 0xa09e667f3bcc908ULL;
+  ctx->state[1] = 0xb67ae8584caa73bULL;
+  ctx->state[2] = 0xc6ef372fe94f82bULL;
+  ctx->state[3] = 0x54ff53a5f1d36f1ULL;
+  ctx->state[4] = 0x10e527fade682d1ULL;
+  ctx->state[5] = 0xb05688c2b3e6c1fULL;
+  ctx->state[6] = 0xf83d9abfb41bd6bULL;
+  ctx->state[7] = 0xbe0cd19137e2179ULL;
 }
 
 void CRYPT_SHA512Update(void* context, const uint8_t* data, uint32_t size) {