tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

low_level_hash_test.cc (20845B)


      1 // Copyright 2020 The Abseil Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     https://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #include "absl/hash/internal/low_level_hash.h"
     16 
     17 #include <cinttypes>
     18 #include <cstdint>
     19 
     20 #include "gmock/gmock.h"
     21 #include "gtest/gtest.h"
     22 #include "absl/strings/escaping.h"
     23 
     24 #define UPDATE_GOLDEN 0
     25 
     26 namespace {
     27 
     28 static const uint64_t kSalt[5] = {0xa0761d6478bd642f, 0xe7037ed1a0b428dbl,
     29                                  0x8ebc6af09c88c6e3, 0x589965cc75374cc3l,
     30                                  0x1d8e4e27c47d124f};
     31 
     32 TEST(LowLevelHashTest, VerifyGolden) {
     33  constexpr size_t kNumGoldenOutputs = 94;
     34  static struct {
     35    absl::string_view base64_data;
     36    uint64_t seed;
     37  } cases[] = {
     38      {"VprUGNH+5NnNRaORxgH/ySrZFQFDL+4VAodhfBNinmn8cg==",
     39       uint64_t{0x531858a40bfa7ea1}},
     40      {"gc1xZaY+q0nPcUvOOnWnT3bqfmT/geth/f7Dm2e/DemMfk4=",
     41       uint64_t{0x86689478a7a7e8fa}},
     42      {"Mr35fIxqx1ukPAL0su1yFuzzAU3wABCLZ8+ZUFsXn47UmAph",
     43       uint64_t{0x4ec948b8e7f27288}},
     44      {"A9G8pw2+m7+rDtWYAdbl8tb2fT7FFo4hLi2vAsa5Y8mKH3CX3g==",
     45       uint64_t{0xce46c7213c10032}},
     46      {"DFaJGishGwEHDdj9ixbCoaTjz9KS0phLNWHVVdFsM93CvPft3hM=",
     47       uint64_t{0xf63e96ee6f32a8b6}},
     48      {"7+Ugx+Kr3aRNgYgcUxru62YkTDt5Hqis+2po81hGBkcrJg4N0uuy",
     49       uint64_t{0x1cfe85e65fc5225}},
     50      {"H2w6O8BUKqu6Tvj2xxaecxEI2wRgIgqnTTG1WwOgDSINR13Nm4d4Vg==",
     51       uint64_t{0x45c474f1cee1d2e8}},
     52      {"1XBMnIbqD5jy65xTDaf6WtiwtdtQwv1dCVoqpeKj+7cTR1SaMWMyI04=",
     53       uint64_t{0x6e024e14015f329c}},
     54      {"znZbdXG2TSFrKHEuJc83gPncYpzXGbAebUpP0XxzH0rpe8BaMQ17nDbt",
     55       uint64_t{0x760c40502103ae1c}},
     56      {"ylu8Atu13j1StlcC1MRMJJXIl7USgDDS22HgVv0WQ8hx/8pNtaiKB17hCQ==",
     57       uint64_t{0x17fd05c3c560c320}},
     58      {"M6ZVVzsd7vAvbiACSYHioH/440dp4xG2mLlBnxgiqEvI/aIEGpD0Sf4VS0g=",
     59       uint64_t{0x8b34200a6f8e90d9}},
     60      {"li3oFSXLXI+ubUVGJ4blP6mNinGKLHWkvGruun85AhVn6iuMtocbZPVhqxzn",
     61       uint64_t{0x6be89e50818bdf69}},
     62      {"kFuQHuUCqBF3Tc3hO4dgdIp223ShaCoog48d5Do5zMqUXOh5XpGK1t5XtxnfGA==",
     63       uint64_t{0xfb389773315b47d8}},
     64      {"jWmOad0v0QhXVJd1OdGuBZtDYYS8wBVHlvOeTQx9ZZnm8wLEItPMeihj72E0nWY=",
     65       uint64_t{0x4f2512a23f61efee}},
     66      {"z+DHU52HaOQdW4JrZwDQAebEA6rm13Zg/9lPYA3txt3NjTBqFZlOMvTRnVzRbl23",
     67       uint64_t{0x59ccd92fc16c6fda}},
     68      {"MmBiGDfYeTayyJa/tVycg+rN7f9mPDFaDc+23j0TlW9094er0ADigsl4QX7V3gG/qw==",
     69       uint64_t{0x25c5a7f5bd330919}},
     70      {"774RK+9rOL4iFvs1q2qpo/JVc/I39buvNjqEFDtDvyoB0FXxPI2vXqOrk08VPfIHkmU=",
     71       uint64_t{0x51df4174d34c97d7}},
     72      {"+slatXiQ7/2lK0BkVUI1qzNxOOLP3I1iK6OfHaoxgqT63FpzbElwEXSwdsryq3UlHK0I",
     73       uint64_t{0x80ce6d76f89cb57}},
     74      {"64mVTbQ47dHjHlOHGS/hjJwr/"
     75       "K2frCNpn87exOqMzNUVYiPKmhCbfS7vBUce5tO6Ec9osQ==",
     76       uint64_t{0x20961c911965f684}},
     77      {"fIsaG1r530SFrBqaDj1kqE0AJnvvK8MNEZbII2Yw1OK77v0V59xabIh0B5axaz/"
     78       "+a2V5WpA=",
     79       uint64_t{0x4e5b926ec83868e7}},
     80      {"PGih0zDEOWCYGxuHGDFu9Ivbff/"
     81       "iE7BNUq65tycTR2R76TerrXALRosnzaNYO5fjFhTi+CiS",
     82       uint64_t{0x3927b30b922eecef}},
     83      {"RnpA/"
     84       "zJnEnnLjmICORByRVb9bCOgxF44p3VMiW10G7PvW7IhwsWajlP9kIwNA9FjAD2GoQHk2Q="
     85       "=",
     86       uint64_t{0xbd0291284a49b61c}},
     87      {"qFklMceaTHqJpy2qavJE+EVBiNFOi6OxjOA3LeIcBop1K7w8xQi3TrDk+"
     88       "BrWPRIbfprszSaPfrI=",
     89       uint64_t{0x73a77c575bcc956}},
     90      {"cLbfUtLl3EcQmITWoTskUR8da/VafRDYF/ylPYwk7/"
     91       "zazk6ssyrzxMN3mmSyvrXR2yDGNZ3WDrTT",
     92       uint64_t{0x766a0e2ade6d09a6}},
     93      {"s/"
     94       "Jf1+"
     95       "FbsbCpXWPTUSeWyMH6e4CvTFvPE5Fs6Z8hvFITGyr0dtukHzkI84oviVLxhM1xMxrMAy1db"
     96       "w==",
     97       uint64_t{0x2599f4f905115869}},
     98      {"FvyQ00+j7nmYZVQ8hI1Edxd0AWplhTfWuFGiu34AK5X8u2hLX1bE97sZM0CmeLe+"
     99       "7LgoUT1fJ/axybE=",
    100       uint64_t{0xd8256e5444d21e53}},
    101      {"L8ncxMaYLBH3g9buPu8hfpWZNlOF7nvWLNv9IozH07uQsIBWSKxoPy8+"
    102       "LW4tTuzC6CIWbRGRRD1sQV/4",
    103       uint64_t{0xf664a91333fb8dfd}},
    104      {"CDK0meI07yrgV2kQlZZ+"
    105       "wuVqhc2NmzqeLH7bmcA6kchsRWFPeVF5Wqjjaj556ABeUoUr3yBmfU3kWOakkg==",
    106       uint64_t{0x9625b859be372cd1}},
    107      {"d23/vc5ONh/"
    108       "HkMiq+gYk4gaCNYyuFKwUkvn46t+dfVcKfBTYykr4kdvAPNXGYLjM4u1YkAEFpJP+"
    109       "nX7eOvs=",
    110       uint64_t{0x7b99940782e29898}},
    111      {"NUR3SRxBkxTSbtQORJpu/GdR6b/h6sSGfsMj/KFd99ahbh+9r7LSgSGmkGVB/"
    112       "mGoT0pnMTQst7Lv2q6QN6Vm",
    113       uint64_t{0x4fe12fa5383b51a8}},
    114      {"2BOFlcI3Z0RYDtS9T9Ie9yJoXlOdigpPeeT+CRujb/"
    115       "O39Ih5LPC9hP6RQk1kYESGyaLZZi3jtabHs7DiVx/VDg==",
    116       uint64_t{0xe2ccb09ac0f5b4b6}},
    117      {"FF2HQE1FxEvWBpg6Z9zAMH+Zlqx8S1JD/"
    118       "wIlViL6ZDZY63alMDrxB0GJQahmAtjlm26RGLnjW7jmgQ4Ie3I+014=",
    119       uint64_t{0x7d0a37adbd7b753b}},
    120      {"tHmO7mqVL/PX11nZrz50Hc+M17Poj5lpnqHkEN+4bpMx/"
    121       "YGbkrGOaYjoQjgmt1X2QyypK7xClFrjeWrCMdlVYtbW",
    122       uint64_t{0xd3ae96ef9f7185f2}},
    123      {"/WiHi9IQcxRImsudkA/KOTqGe8/"
    124       "gXkhKIHkjddv5S9hi02M049dIK3EUyAEjkjpdGLUs+BN0QzPtZqjIYPOgwsYE9g==",
    125       uint64_t{0x4fb88ea63f79a0d8}},
    126      {"qds+1ExSnU11L4fTSDz/QE90g4Jh6ioqSh3KDOTOAo2pQGL1k/"
    127       "9CCC7J23YF27dUTzrWsCQA2m4epXoCc3yPHb3xElA=",
    128       uint64_t{0xed564e259bb5ebe9}},
    129      {"8FVYHx40lSQPTHheh08Oq0/"
    130       "pGm2OlG8BEf8ezvAxHuGGdgCkqpXIueJBF2mQJhTfDy5NncO8ntS7vaKs7sCNdDaNGOEi",
    131       uint64_t{0x3e3256b60c428000}},
    132      {"4ZoEIrJtstiCkeew3oRzmyJHVt/pAs2pj0HgHFrBPztbQ10NsQ/"
    133       "lM6DM439QVxpznnBSiHMgMQJhER+70l72LqFTO1JiIQ==",
    134       uint64_t{0xfb05bad59ec8705}},
    135      {"hQPtaYI+wJyxXgwD5n8jGIKFKaFA/"
    136       "P83KqCKZfPthnjwdOFysqEOYwAaZuaaiv4cDyi9TyS8hk5cEbNP/jrI7q6pYGBLbsM=",
    137       uint64_t{0xafdc251dbf97b5f8}},
    138      {"S4gpMSKzMD7CWPsSfLeYyhSpfWOntyuVZdX1xSBjiGvsspwOZcxNKCRIOqAA0moUfOh3I5+"
    139       "juQV4rsqYElMD/gWfDGpsWZKQ",
    140       uint64_t{0x10ec9c92ddb5dcbc}},
    141      {"oswxop+"
    142       "bthuDLT4j0PcoSKby4LhF47ZKg8K17xxHf74UsGCzTBbOz0MM8hQEGlyqDT1iUiAYnaPaUp"
    143       "L2mRK0rcIUYA4qLt5uOw==",
    144       uint64_t{0x9a767d5822c7dac4}},
    145      {"0II/"
    146       "697p+"
    147       "BtLSjxj5989OXI004TogEb94VUnDzOVSgMXie72cuYRvTFNIBgtXlKfkiUjeqVpd4a+"
    148       "n5bxNOD1TGrjQtzKU5r7obo=",
    149       uint64_t{0xee46254080d6e2db}},
    150      {"E84YZW2qipAlMPmctrg7TKlwLZ68l4L+c0xRDUfyyFrA4MAti0q9sHq3TDFviH0Y+"
    151       "Kq3tEE5srWFA8LM9oomtmvm5PYxoaarWPLc",
    152       uint64_t{0xbbb669588d8bf398}},
    153      {"x3pa4HIElyZG0Nj7Vdy9IdJIR4izLmypXw5PCmZB5y68QQ4uRaVVi3UthsoJROvbjDJkP2D"
    154       "Q6L/eN8pFeLFzNPKBYzcmuMOb5Ull7w==",
    155       uint64_t{0xdc2afaa529beef44}},
    156      {"jVDKGYIuWOP/"
    157       "QKLdd2wi8B2VJA8Wh0c8PwrXJVM8FOGM3voPDVPyDJOU6QsBDPseoR8uuKd19OZ/"
    158       "zAvSCB+zlf6upAsBlheUKgCfKww=",
    159       uint64_t{0xf1f67391d45013a8}},
    160      {"mkquunhmYe1aR2wmUz4vcvLEcKBoe6H+kjUok9VUn2+eTSkWs4oDDtJvNCWtY5efJwg/"
    161       "j4PgjRYWtqnrCkhaqJaEvkkOwVfgMIwF3e+d",
    162       uint64_t{0x16fce2b8c65a3429}},
    163      {"fRelvKYonTQ+s+rnnvQw+JzGfFoPixtna0vzcSjiDqX5s2Kg2//"
    164       "UGrK+AVCyMUhO98WoB1DDbrsOYSw2QzrcPe0+3ck9sePvb+Q/IRaHbw==",
    165       uint64_t{0xf4b096699f49fe67}},
    166      {"DUwXFJzagljo44QeJ7/"
    167       "6ZKw4QXV18lhkYT2jglMr8WB3CHUU4vdsytvw6AKv42ZcG6fRkZkq9fpnmXy6xG0aO3WPT1"
    168       "eHuyFirAlkW+zKtwg=",
    169       uint64_t{0xca584c4bc8198682}},
    170      {"cYmZCrOOBBongNTr7e4nYn52uQUy2mfe48s50JXx2AZ6cRAt/"
    171       "xRHJ5QbEoEJOeOHsJyM4nbzwFm++SlT6gFZZHJpkXJ92JkR86uS/eV1hJUR",
    172       uint64_t{0xed269fc3818b6aad}},
    173      {"EXeHBDfhwzAKFhsMcH9+2RHwV+mJaN01+9oacF6vgm8mCXRd6jeN9U2oAb0of5c5cO4i+"
    174       "Vb/LlHZSMI490SnHU0bejhSCC2gsC5d2K30ER3iNA==",
    175       uint64_t{0x33f253cbb8fe66a8}},
    176      {"FzkzRYoNjkxFhZDso94IHRZaJUP61nFYrh5MwDwv9FNoJ5jyNCY/"
    177       "eazPZk+tbmzDyJIGw2h3GxaWZ9bSlsol/vK98SbkMKCQ/wbfrXRLcDzdd/8=",
    178       uint64_t{0xd0b76b2c1523d99c}},
    179      {"Re4aXISCMlYY/XsX7zkIFR04ta03u4zkL9dVbLXMa/q6hlY/CImVIIYRN3VKP4pnd0AUr/"
    180       "ugkyt36JcstAInb4h9rpAGQ7GMVOgBniiMBZ/MGU7H",
    181       uint64_t{0xfd28f0811a2a237f}},
    182      {"ueLyMcqJXX+MhO4UApylCN9WlTQ+"
    183       "ltJmItgG7vFUtqs2qNwBMjmAvr5u0sAKd8jpzV0dDPTwchbIeAW5zbtkA2NABJV6hFM48ib"
    184       "4/J3A5mseA3cS8w==",
    185       uint64_t{0x6261fb136482e84}},
    186      {"6Si7Yi11L+jZMkwaN+GUuzXMrlvEqviEkGOilNq0h8TdQyYKuFXzkYc/"
    187       "q74gP3pVCyiwz9KpVGMM9vfnq36riMHRknkmhQutxLZs5fbmOgEO69HglCU=",
    188       uint64_t{0x458efc750bca7c3a}},
    189      {"Q6AbOofGuTJOegPh9Clm/"
    190       "9crtUMQqylKrTc1fhfJo1tqvpXxhU4k08kntL1RG7woRnFrVh2UoMrL1kjin+s9CanT+"
    191       "y4hHwLqRranl9FjvxfVKm3yvg68",
    192       uint64_t{0xa7e69ff84e5e7c27}},
    193      {"ieQEbIPvqY2YfIjHnqfJiO1/MIVRk0RoaG/WWi3kFrfIGiNLCczYoklgaecHMm/"
    194       "1sZ96AjO+a5stQfZbJQwS7Sc1ODABEdJKcTsxeW2hbh9A6CFzpowP1A==",
    195       uint64_t{0x3c59bfd0c29efe9e}},
    196      {"zQUv8hFB3zh2GGl3KTvCmnfzE+"
    197       "SUgQPVaSVIELFX5H9cE3FuVFGmymkPQZJLAyzC90Cmi8GqYCvPqTuAAB//"
    198       "XTJxy4bCcVArgZG9zJXpjowpNBfr3ngWrSE=",
    199       uint64_t{0x10befacc6afd298d}},
    200      {"US4hcC1+op5JKGC7eIs8CUgInjKWKlvKQkapulxW262E/"
    201       "B2ye79QxOexf188u2mFwwe3WTISJHRZzS61IwljqAWAWoBAqkUnW8SHmIDwHUP31J0p5sGd"
    202       "P47L",
    203       uint64_t{0x41d5320b0a38efa7}},
    204      {"9bHUWFna2LNaGF6fQLlkx1Hkt24nrkLE2CmFdWgTQV3FFbUe747SSqYw6ebpTa07MWSpWRP"
    205       "sHesVo2B9tqHbe7eQmqYebPDFnNqrhSdZwFm9arLQVs+7a3Ic6A==",
    206       uint64_t{0x58db1c7450fe17f3}},
    207      {"Kb3DpHRUPhtyqgs3RuXjzA08jGb59hjKTOeFt1qhoINfYyfTt2buKhD6YVffRCPsgK9SeqZ"
    208       "qRPJSyaqsa0ovyq1WnWW8jI/NhvAkZTVHUrX2pC+cD3OPYT05Dag=",
    209       uint64_t{0x6098c055a335b7a6}},
    210      {"gzxyMJIPlU+bJBwhFUCHSofZ/"
    211       "319LxqMoqnt3+L6h2U2+ZXJCSsYpE80xmR0Ta77Jq54o92SMH87HV8dGOaCTuAYF+"
    212       "lDL42SY1P316Cl0sZTS2ow3ZqwGbcPNs/1",
    213       uint64_t{0x1bbacec67845a801}},
    214      {"uR7V0TW+FGVMpsifnaBAQ3IGlr1wx5sKd7TChuqRe6OvUXTlD4hKWy8S+"
    215       "8yyOw8lQabism19vOQxfmocEOW/"
    216       "vzY0pEa87qHrAZy4s9fH2Bltu8vaOIe+agYohhYORQ==",
    217       uint64_t{0xc419cfc7442190}},
    218      {"1UR5eoo2aCwhacjZHaCh9bkOsITp6QunUxHQ2SfeHv0imHetzt/"
    219       "Z70mhyWZBalv6eAx+YfWKCUib2SHDtz/"
    220       "A2dc3hqUWX5VfAV7FQsghPUAtu6IiRatq4YSLpDvKZBQ=",
    221       uint64_t{0xc95e510d94ba270c}},
    222      {"opubR7H63BH7OtY+Avd7QyQ25UZ8kLBdFDsBTwZlY6gA/"
    223       "u+x+"
    224       "czC9AaZMgmQrUy15DH7YMGsvdXnviTtI4eVI4aF1H9Rl3NXMKZgwFOsdTfdcZeeHVRzBBKX"
    225       "8jUfh1il",
    226       uint64_t{0xff1ae05c98089c3f}},
    227      {"DC0kXcSXtfQ9FbSRwirIn5tgPri0sbzHSa78aDZVDUKCMaBGyFU6BmrulywYX8yzvwprdLs"
    228       "oOwTWN2wMjHlPDqrvVHNEjnmufRDblW+nSS+xtKNs3N5xsxXdv6JXDrAB/Q==",
    229       uint64_t{0x90c02b8dceced493}},
    230      {"BXRBk+3wEP3Lpm1y75wjoz+PgB0AMzLe8tQ1AYU2/"
    231       "oqrQB2YMC6W+9QDbcOfkGbeH+b7IBkt/"
    232       "gwCMw2HaQsRFEsurXtcQ3YwRuPz5XNaw5NAvrNa67Fm7eRzdE1+hWLKtA8=",
    233       uint64_t{0x9f8a76697ab1aa36}},
    234      {"RRBSvEGYnzR9E45Aps/+WSnpCo/X7gJLO4DRnUqFrJCV/kzWlusLE/"
    235       "6ZU6RoUf2ROwcgEvUiXTGjLs7ts3t9SXnJHxC1KiOzxHdYLMhVvgNd3hVSAXODpKFSkVXND"
    236       "55G2L1W",
    237       uint64_t{0x6ba1bf3d811a531d}},
    238      {"jeh6Qazxmdi57pa9S3XSnnZFIRrnc6s8QLrah5OX3SB/V2ErSPoEAumavzQPkdKF1/"
    239       "SfvmdL+qgF1C+Yawy562QaFqwVGq7+tW0yxP8FStb56ZRgNI4IOmI30s1Ei7iops9Uuw==",
    240       uint64_t{0x6a418974109c67b4}},
    241      {"6QO5nnDrY2/"
    242       "wrUXpltlKy2dSBcmK15fOY092CR7KxAjNfaY+"
    243       "aAmtWbbzQk3MjBg03x39afSUN1fkrWACdyQKRaGxgwq6MGNxI6W+8DLWJBHzIXrntrE/"
    244       "ml6fnNXEpxplWJ1vEs4=",
    245       uint64_t{0x8472f1c2b3d230a3}},
    246      {"0oPxeEHhqhcFuwonNfLd5jF3RNATGZS6NPoS0WklnzyokbTqcl4BeBkMn07+fDQv83j/"
    247       "BpGUwcWO05f3+DYzocfnizpFjLJemFGsls3gxcBYxcbqWYev51tG3lN9EvRE+X9+Pwww",
    248       uint64_t{0x5e06068f884e73a7}},
    249      {"naSBSjtOKgAOg8XVbR5cHAW3Y+QL4Pb/JO9/"
    250       "oy6L08wvVRZqo0BrssMwhzBP401Um7A4ppAupbQeJFdMrysY34AuSSNvtNUy5VxjNECwiNt"
    251       "gwYHw7yakDUv8WvonctmnoSPKENegQg==",
    252       uint64_t{0x55290b1a8f170f59}},
    253      {"vPyl8DxVeRe1OpilKb9KNwpGkQRtA94UpAHetNh+"
    254       "95V7nIW38v7PpzhnTWIml5kw3So1Si0TXtIUPIbsu32BNhoH7QwFvLM+"
    255       "JACgSpc5e3RjsL6Qwxxi11npwxRmRUqATDeMUfRAjxg=",
    256       uint64_t{0x5501cfd83dfe706a}},
    257      {"QC9i2GjdTMuNC1xQJ74ngKfrlA4w3o58FhvNCltdIpuMhHP1YsDA78scQPLbZ3OCUgeQguY"
    258       "f/vw6zAaVKSgwtaykqg5ka/4vhz4hYqWU5ficdXqClHl+zkWEY26slCNYOM5nnDlly8Cj",
    259       uint64_t{0xe43ed13d13a66990}},
    260      {"7CNIgQhAHX27nxI0HeB5oUTnTdgKpRDYDKwRcXfSFGP1XeT9nQF6WKCMjL1tBV6x7KuJ91G"
    261       "Zz11F4c+8s+MfqEAEpd4FHzamrMNjGcjCyrVtU6y+7HscMVzr7Q/"
    262       "ODLcPEFztFnwjvCjmHw==",
    263       uint64_t{0xdf43bc375cf5283f}},
    264      {"Qa/hC2RPXhANSospe+gUaPfjdK/yhQvfm4cCV6/pdvCYWPv8p1kMtKOX3h5/"
    265       "8oZ31fsmx4Axphu5qXJokuhZKkBUJueuMpxRyXpwSWz2wELx5glxF7CM0Fn+"
    266       "OevnkhUn5jsPlG2r5jYlVn8=",
    267       uint64_t{0x8112b806d288d7b5}},
    268      {"kUw/0z4l3a89jTwN5jpG0SHY5km/"
    269       "IVhTjgM5xCiPRLncg40aqWrJ5vcF891AOq5hEpSq0bUCJUMFXgct7kvnys905HjerV7Vs1G"
    270       "y84tgVJ70/2+pAZTsB/PzNOE/G6sOj4+GbTzkQu819OLB",
    271       uint64_t{0xd52a18abb001cb46}},
    272      {"VDdfSDbO8Tdj3T5W0XM3EI7iHh5xpIutiM6dvcJ/fhe23V/srFEkDy5iZf/"
    273       "VnA9kfi2C79ENnFnbOReeuZW1b3MUXB9lgC6U4pOTuC+"
    274       "jHK3Qnpyiqzj7h3ISJSuo2pob7vY6VHZo6Fn7exEqHg==",
    275       uint64_t{0xe12b76a2433a1236}},
    276      {"Ldfvy3ORdquM/R2fIkhH/ONi69mcP1AEJ6n/"
    277       "oropwecAsLJzQSgezSY8bEiEs0VnFTBBsW+RtZY6tDj03fnb3amNUOq1b7jbqyQkL9hpl+"
    278       "2Z2J8IaVSeownWl+bQcsR5/xRktIMckC5AtF4YHfU=",
    279       uint64_t{0x175bf7319cf1fa00}},
    280      {"BrbNpb42+"
    281       "VzZAjJw6QLirXzhweCVRfwlczzZ0VX2xluskwBqyfnGovz5EuX79JJ31VNXa5hTkAyQat3l"
    282       "YKRADTdAdwE5PqM1N7YaMqqsqoAAAeuYVXuk5eWCykYmClNdSspegwgCuT+403JigBzi",
    283       uint64_t{0xd63d57b3f67525ae}},
    284      {"gB3NGHJJvVcuPyF0ZSvHwnWSIfmaI7La24VMPQVoIIWF7Z74NltPZZpx2f+cocESM+"
    285       "ILzQW9p+BC8x5IWz7N4Str2WLGKMdgmaBfNkEhSHQDU0IJEOnpUt0HmjhFaBlx0/"
    286       "LTmhua+rQ6Wup8ezLwfg==",
    287       uint64_t{0x933faea858832b73}},
    288      {"hTKHlRxx6Pl4gjG+6ksvvj0CWFicUg3WrPdSJypDpq91LUWRni2KF6+"
    289       "81ZoHBFhEBrCdogKqeK+hy9bLDnx7g6rAFUjtn1+cWzQ2YjiOpz4+"
    290       "ROBB7lnwjyTGWzJD1rXtlso1g2qVH8XJVigC5M9AIxM=",
    291       uint64_t{0x53d061e5f8e7c04f}},
    292      {"IWQBelSQnhrr0F3BhUpXUIDauhX6f95Qp+A0diFXiUK7irwPG1oqBiqHyK/SH/"
    293       "9S+"
    294       "rln9DlFROAmeFdH0OCJi2tFm4afxYzJTFR4HnR4cG4x12JqHaZLQx6iiu6CE3rtWBVz99oA"
    295       "wCZUOEXIsLU24o2Y",
    296       uint64_t{0xdb4124556dd515e0}},
    297      {"TKo+l+"
    298       "1dOXdLvIrFqeLaHdm0HZnbcdEgOoLVcGRiCbAMR0j5pIFw8D36tefckAS1RCFOH5IgP8yiF"
    299       "T0Gd0a2hI3+"
    300       "fTKA7iK96NekxWeoeqzJyctc6QsoiyBlkZerRxs5RplrxoeNg29kKDTM0K94mnhD9g==",
    301       uint64_t{0x4fb31a0dd681ee71}},
    302      {"YU4e7G6EfQYvxCFoCrrT0EFgVLHFfOWRTJQJ5gxM3G2b+"
    303       "1kJf9YPrpsxF6Xr6nYtS8reEEbDoZJYqnlk9lXSkVArm88Cqn6d25VCx3+"
    304       "49MqC0trIlXtb7SXUUhwpJK16T0hJUfPH7s5cMZXc6YmmbFuBNPE=",
    305       uint64_t{0x27cc72eefa138e4c}},
    306      {"/I/"
    307       "eImMwPo1U6wekNFD1Jxjk9XQVi1D+"
    308       "FPdqcHifYXQuP5aScNQfxMAmaPR2XhuOQhADV5tTVbBKwCDCX4E3jcDNHzCiPvViZF1W27t"
    309       "xaf2BbFQdwKrNCmrtzcluBFYu0XZfc7RU1RmxK/RtnF1qHsq/O4pp",
    310       uint64_t{0x44bc2dfba4bd3ced}},
    311      {"CJTT9WGcY2XykTdo8KodRIA29qsqY0iHzWZRjKHb9alwyJ7RZAE3V5Juv4MY3MeYEr1EPCC"
    312       "MxO7yFXqT8XA8YTjaMp3bafRt17Pw8JC4iKJ1zN+WWKOESrj+"
    313       "3aluGQqn8z1EzqY4PH7rLG575PYeWsP98BugdA==",
    314       uint64_t{0x242da1e3a439bed8}},
    315      {"ZlhyQwLhXQyIUEnMH/"
    316       "AEW27vh9xrbNKJxpWGtrEmKhd+nFqAfbeNBQjW0SfG1YI0xQkQMHXjuTt4P/"
    317       "EpZRtA47ibZDVS8TtaxwyBjuIDwqcN09eCtpC+Ls+"
    318       "vWDTLmBeDM3u4hmzz4DQAYsLiZYSJcldg9Q3wszw=",
    319       uint64_t{0xdc559c746e35c139}},
    320      {"v2KU8y0sCrBghmnm8lzGJlwo6D6ObccAxCf10heoDtYLosk4ztTpLlpSFEyu23MLA1tJkcg"
    321       "Rko04h19QMG0mOw/"
    322       "wc93EXAweriBqXfvdaP85sZABwiKO+6rtS9pacRVpYYhHJeVTQ5NzrvBvi1huxAr+"
    323       "xswhVMfL",
    324       uint64_t{0xd0b0350275b9989}},
    325      {"QhKlnIS6BuVCTQsnoE67E/"
    326       "yrgogE8EwO7xLaEGei26m0gEU4OksefJgppDh3X0x0Cs78Dr9IHK5b977CmZlrTRmwhlP8p"
    327       "M+UzXPNRNIZuN3ntOum/QhUWP8SGpirheXENWsXMQ/"
    328       "nxtxakyEtrNkKk471Oov9juP8oQ==",
    329       uint64_t{0xb04489e41d17730c}},
    330      {"/ZRMgnoRt+Uo6fUPr9FqQvKX7syhgVqWu+"
    331       "WUSsiQ68UlN0efSP6Eced5gJZL6tg9gcYJIkhjuQNITU0Q3TjVAnAcobgbJikCn6qZ6pRxK"
    332       "BY4MTiAlfGD3T7R7hwJwx554MAy++Zb/YUFlnCaCJiwQMnowF7aQzwYFCo=",
    333       uint64_t{0x2217285eb4572156}},
    334      {"NB7tU5fNE8nI+SXGfipc7sRkhnSkUF1krjeo6k+8FITaAtdyz+"
    335       "o7mONgXmGLulBPH9bEwyYhKNVY0L+njNQrZ9YC2aXsFD3PdZsxAFaBT3VXEzh+"
    336       "NGBTjDASNL3mXyS8Yv1iThGfHoY7T4aR0NYGJ+k+pR6f+KrPC96M",
    337       uint64_t{0x12c2e8e68aede73b}},
    338      {"8T6wrqCtEO6/rwxF6lvMeyuigVOLwPipX/FULvwyu+1wa5sQGav/"
    339       "2FsLHUVn6cGSi0LlFwLewGHPFJDLR0u4t7ZUyM//"
    340       "x6da0sWgOa5hzDqjsVGmjxEHXiaXKW3i4iSZNuxoNbMQkIbVML+"
    341       "DkYu9ND0O2swg4itGeVSzXA==",
    342       uint64_t{0x4d612125bdc4fd00}},
    343      {"Ntf1bMRdondtMv1CYr3G80iDJ4WSAlKy5H34XdGruQiCrnRGDBa+"
    344       "eUi7vKp4gp3BBcVGl8eYSasVQQjn7MLvb3BjtXx6c/"
    345       "bCL7JtpzQKaDnPr9GWRxpBXVxKREgMM7d8lm35EODv0w+"
    346       "hQLfVSh8OGs7fsBb68nNWPLeeSOo=",
    347       uint64_t{0x81826b553954464e}},
    348      {"VsSAw72Ro6xks02kaiLuiTEIWBC5bgqr4WDnmP8vglXzAhixk7td926rm9jNimL+"
    349       "kroPSygZ9gl63aF5DCPOACXmsbmhDrAQuUzoh9ZKhWgElLQsrqo1KIjWoZT5b5QfVUXY9lS"
    350       "IBg3U75SqORoTPq7HalxxoIT5diWOcJQi",
    351       uint64_t{0xc2e5d345dc0ddd2d}},
    352      {"j+loZ+C87+"
    353       "bJxNVebg94gU0mSLeDulcHs84tQT7BZM2rzDSLiCNxUedHr1ZWJ9ejTiBa0dqy2I2ABc++"
    354       "xzOLcv+//YfibtjKtYggC6/3rv0XCc7xu6d/"
    355       "O6xO+XOBhOWAQ+IHJVHf7wZnDxIXB8AUHsnjEISKj7823biqXjyP3g==",
    356       uint64_t{0x3da6830a9e32631e}},
    357      {"f3LlpcPElMkspNtDq5xXyWU62erEaKn7RWKlo540gR6mZsNpK1czV/"
    358       "sOmqaq8XAQLEn68LKj6/"
    359       "cFkJukxRzCa4OF1a7cCAXYFp9+wZDu0bw4y63qbpjhdCl8GO6Z2lkcXy7KOzbPE01ukg7+"
    360       "gN+7uKpoohgAhIwpAKQXmX5xtd0=",
    361       uint64_t{0xc9ae5c8759b4877a}},
    362  };
    363 
    364 #if defined(ABSL_IS_BIG_ENDIAN)
    365  constexpr uint64_t kGolden[kNumGoldenOutputs] = {};
    366  GTEST_SKIP() << "We only maintain golden data for little endian systems.";
    367 #else
    368  constexpr uint64_t kGolden[kNumGoldenOutputs] = {
    369      0x59b1542b0ff6b7b8, 0x3fb979d297096db9, 0xb391802c536343a9,
    370      0x94e0f7e4331081c4, 0x234d95e49e3ce30e, 0xca6351a3e568ed17,
    371      0xa62fcf7fa334293d, 0xb03111035f546067, 0x97b8c861e013d558,
    372      0xb6683803d9387949, 0xce5d907e0b3cb6a1, 0xab7466fae53ed201,
    373      0x8f13ca3f1cac3edd, 0xa2684a99cd909a2a, 0x03194f86b9440843,
    374      0xab3a745d96f75a66, 0xef2448606760ec3d, 0xd999e03247d5d5c5,
    375      0x4a25ab345d53f926, 0xa511b829ce9fc919, 0x4b76517f8e806cbf,
    376      0x006efd7ee09ff8d4, 0x790a4978bd0170a1, 0xc14f6e4b2dff057e,
    377      0xe0d2f4ae7c836d09, 0x4e2038a491ed939d, 0x23fd6f408e9598e0,
    378      0xa91cf8f1d92bcb08, 0x555cdec06df49d58, 0xe7d3e14bd6a8f3bd,
    379      0x4fdd25c1e75c009a, 0x3dffb8acf1ffbd17, 0x56946f33ed73a705,
    380      0x154c633d7690f3b0, 0x3e96f8e9a58a04e0, 0xb0279b244d3ccf9c,
    381      0x8571e87c882b2142, 0x9d9ada45132e7b41, 0xd5667655533f1dec,
    382      0x70607ace4ec36463, 0x691418d2eb63116c, 0xa70179d8e7142980,
    383      0xf8388d756bea25a7, 0xe5127c736d9826de, 0x7f1c95f9b6b656b6,
    384      0x66ab835b7bf4c7b3, 0xc03423b9a6db9728, 0xe88415a2b416b76d,
    385      0x8afd8c14d0b56c36, 0xe9a252b3ba217dad, 0x710150f5cd87a9ff,
    386      0xd66b147837fad9ae, 0x1af5f8ffbaa717a7, 0xe01f88d7a9a8ac17,
    387      0xd67870a7251fde72, 0xf32b837f845a676b, 0x0827717b1ffe59f7,
    388      0x80307212ca7645fb, 0xf0d22af71ea57c80, 0x459373765f2c114b,
    389      0x54d26109fab9cbaf, 0xc603da4e257b93db, 0x57fa334b5689d7d5,
    390      0x41cd1b2a8a91f620, 0xe1d6e7cd0fb015af, 0x8608e9035eb9d795,
    391      0x45c7b9fae739fee1, 0x9f5ae4f7a6b597ee, 0xfb771b6e0017757d,
    392      0x8dac6d29cfd8d027, 0x3c9ba4fb62ce6508, 0xa971fad8243844a7,
    393      0xd2126f49b2ea3b64, 0x5dd78fe7ac436861, 0xfe4004a6bb3494a8,
    394      0xe7c01cc63d770d7c, 0xa117075b8c801d37, 0xdf1dfe75f0e73069,
    395      0x7285b39700cefb98, 0x5e97ea1aa9a670eb, 0xe21872db2b9137a3,
    396      0x12630b02c6ca405e, 0xfe1f2d802151f97a, 0xb53b0ed3dea4fb02,
    397      0xc6d5ed56d1dbf9fd, 0xe5b92b558a5c70cb, 0xccd6eedf97277d08,
    398      0x08582fff2e1494ed, 0xa41f2b3d17f1c4c7, 0x29ec07e5ef950f3d,
    399      0x96aba32565a97084, 0xf26870eca10cebcd, 0xbe1432feb4d33361,
    400      0x21993a779845e6eb,
    401  };
    402 #endif
    403 
    404 #if UPDATE_GOLDEN
    405  (void)kGolden;  // Silence warning.
    406  for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
    407    std::string str;
    408    ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
    409    ASSERT_GT(str.size(), 32);
    410    uint64_t h = absl::hash_internal::LowLevelHashLenGt32(
    411        str.data(), str.size(), cases[i].seed, kSalt);
    412    printf("0x%016" PRIx64 ", ", h);
    413    if (i % 3 == 2) {
    414      printf("\n");
    415    }
    416  }
    417  printf("\n\n\n");
    418  EXPECT_FALSE(true);
    419 #else
    420  for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
    421    SCOPED_TRACE(::testing::Message()
    422                 << "i = " << i << "; input = " << cases[i].base64_data);
    423    std::string str;
    424    ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
    425    ASSERT_GT(str.size(), 32);
    426    EXPECT_EQ(absl::hash_internal::LowLevelHashLenGt32(str.data(), str.size(),
    427                                                       cases[i].seed, kSalt),
    428              kGolden[i]);
    429  }
    430 #endif
    431 }
    432 
    433 }  // namespace