quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

unit1615.c (7658B)


      1 /***************************************************************************
      2  *                                  _   _ ____  _
      3  *  Project                     ___| | | |  _ \| |
      4  *                             / __| | | | |_) | |
      5  *                            | (__| |_| |  _ <| |___
      6  *                             \___|\___/|_| \_\_____|
      7  *
      8  * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
      9  * Copyright (C) Evgeny Grin (Karlson2k), <k2k@narod.ru>.
     10  *
     11  * This software is licensed as described in the file COPYING, which
     12  * you should have received as part of this distribution. The terms
     13  * are also available at https://curl.se/docs/copyright.html.
     14  *
     15  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     16  * copies of the Software, and permit persons to whom the Software is
     17  * furnished to do so, under the terms of the COPYING file.
     18  *
     19  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     20  * KIND, either express or implied.
     21  *
     22  * SPDX-License-Identifier: curl
     23  *
     24  ***************************************************************************/
     25 #include "unitcheck.h"
     26 
     27 #include "curl_sha512_256.h"
     28 
     29 static CURLcode test_unit1615(char *arg)
     30 {
     31   UNITTEST_BEGIN_SIMPLE
     32 
     33 #ifdef CURL_HAVE_SHA512_256
     34 
     35   static const char test_str1[] = "1";
     36   static const unsigned char precomp_hash1[CURL_SHA512_256_DIGEST_LENGTH] = {
     37      0x18, 0xd2, 0x75, 0x66, 0xbd, 0x1a, 0xc6, 0x6b, 0x23, 0x32, 0xd8,
     38      0xc5, 0x4a, 0xd4, 0x3f, 0x7b, 0xb2, 0x20, 0x79, 0xc9, 0x06, 0xd0,
     39      0x5f, 0x49, 0x1f, 0x3f, 0x07, 0xa2, 0x8d, 0x5c, 0x69, 0x90
     40   };
     41   static const char test_str2[] = "hello-you-fool";
     42   static const unsigned char precomp_hash2[CURL_SHA512_256_DIGEST_LENGTH] = {
     43       0xaf, 0x6f, 0xb4, 0xb0, 0x13, 0x9b, 0xee, 0x13, 0xd1, 0x95, 0x3c,
     44       0xb8, 0xc7, 0xcd, 0x5b, 0x19, 0xf9, 0xcd, 0xcd, 0x21, 0xef, 0xdf,
     45       0xa7, 0x42, 0x5c, 0x07, 0x13, 0xea, 0xcc, 0x1a, 0x39, 0x76
     46   };
     47   static const char test_str3[] = "abc";
     48   static const unsigned char precomp_hash3[CURL_SHA512_256_DIGEST_LENGTH] = {
     49       0x53, 0x04, 0x8E, 0x26, 0x81, 0x94, 0x1E, 0xF9, 0x9B, 0x2E, 0x29,
     50       0xB7, 0x6B, 0x4C, 0x7D, 0xAB, 0xE4, 0xC2, 0xD0, 0xC6, 0x34, 0xFC,
     51       0x6D, 0x46, 0xE0, 0xE2, 0xF1, 0x31, 0x07, 0xE7, 0xAF, 0x23
     52   };
     53   static const char test_str4[] = ""; /* empty, zero size input */
     54   static const unsigned char precomp_hash4[CURL_SHA512_256_DIGEST_LENGTH] = {
     55       0xc6, 0x72, 0xb8, 0xd1, 0xef, 0x56, 0xed, 0x28, 0xab, 0x87, 0xc3,
     56       0x62, 0x2c, 0x51, 0x14, 0x06, 0x9b, 0xdd, 0x3a, 0xd7, 0xb8, 0xf9,
     57       0x73, 0x74, 0x98, 0xd0, 0xc0, 0x1e, 0xce, 0xf0, 0x96, 0x7a
     58   };
     59   static const char test_str5[] =
     60       "abcdefghijklmnopqrstuvwxyzzyxwvutsrqponMLKJIHGFEDCBA" \
     61       "abcdefghijklmnopqrstuvwxyzzyxwvutsrqponMLKJIHGFEDCBA";
     62   static const unsigned char precomp_hash5[CURL_SHA512_256_DIGEST_LENGTH] = {
     63       0xad, 0xe9, 0x5d, 0x55, 0x3b, 0x9e, 0x45, 0x69, 0xdb, 0x53, 0xa4,
     64       0x04, 0x92, 0xe7, 0x87, 0x94, 0xff, 0xc9, 0x98, 0x5f, 0x93, 0x03,
     65       0x86, 0x45, 0xe1, 0x97, 0x17, 0x72, 0x7c, 0xbc, 0x31, 0x15
     66   };
     67   static const char test_str6[] =
     68       "/long/long/long/long/long/long/long/long/long/long/long" \
     69       "/long/long/long/long/long/long/long/long/long/long/long" \
     70       "/long/long/long/long/long/long/long/long/long/long/long" \
     71       "/long/long/long/long/long/long/long/long/long/long/long" \
     72       "/long/long/long/long/long/long/long/long/long/long/long" \
     73       "/long/long/long/long/long/long/long/long/long/long/long" \
     74       "/long/long/long/long/path?with%20some=parameters";
     75   static const unsigned char precomp_hash6[CURL_SHA512_256_DIGEST_LENGTH] = {
     76       0xbc, 0xab, 0xc6, 0x2c, 0x0a, 0x22, 0xd5, 0xcb, 0xac, 0xac, 0xe9,
     77       0x25, 0xcf, 0xce, 0xaa, 0xaf, 0x0e, 0xa1, 0xed, 0x42, 0x46, 0x8a,
     78       0xe2, 0x01, 0xee, 0x2f, 0xdb, 0x39, 0x75, 0x47, 0x73, 0xf1
     79   };
     80   static const char test_str7[] = "Simple string.";
     81   static const unsigned char precomp_hash7[CURL_SHA512_256_DIGEST_LENGTH] = {
     82       0xde, 0xcb, 0x3c, 0x81, 0x65, 0x4b, 0xa0, 0xf5, 0xf0, 0x45, 0x6b,
     83       0x7e, 0x61, 0xf5, 0x0d, 0xf5, 0x38, 0xa4, 0xfc, 0xb1, 0x8a, 0x95,
     84       0xff, 0x59, 0xbc, 0x04, 0x82, 0xcf, 0x23, 0xb2, 0x32, 0x56
     85   };
     86   static const unsigned char test_seq8[]= {
     87       255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242,
     88       241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228,
     89       227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214,
     90       213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200,
     91       199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186,
     92       185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172,
     93       171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158,
     94       157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
     95       143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130,
     96       129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116,
     97       115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102,
     98       101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85,
     99       84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,
    100       66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
    101       48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31,
    102       30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
    103       12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; /* 255..1 sequence */
    104   static const unsigned char precomp_hash8[CURL_SHA512_256_DIGEST_LENGTH] = {
    105       0x22, 0x31, 0xf2, 0xa1, 0xb4, 0x89, 0xb2, 0x44, 0xf7, 0x66, 0xa0,
    106       0xb8, 0x31, 0xed, 0xb7, 0x73, 0x8a, 0x34, 0xdc, 0x11, 0xc8, 0x2c,
    107       0xf2, 0xb5, 0x88, 0x60, 0x39, 0x6b, 0x5c, 0x06, 0x70, 0x37
    108   };
    109 
    110   unsigned char output_buf[CURL_SHA512_256_DIGEST_LENGTH];
    111   unsigned char *computed_hash; /* Just to mute compiler warning */
    112 
    113   /* Mute compiler warnings in 'verify_memory' macros below */
    114   computed_hash = output_buf;
    115 
    116   Curl_sha512_256it(output_buf, (const unsigned char *) test_str1,
    117                     CURL_ARRAYSIZE(test_str1) - 1);
    118   verify_memory(computed_hash, precomp_hash1, CURL_SHA512_256_DIGEST_LENGTH);
    119 
    120   Curl_sha512_256it(output_buf, (const unsigned char *) test_str2,
    121                     CURL_ARRAYSIZE(test_str2) - 1);
    122   verify_memory(computed_hash, precomp_hash2, CURL_SHA512_256_DIGEST_LENGTH);
    123 
    124   Curl_sha512_256it(output_buf, (const unsigned char *) test_str3,
    125                     CURL_ARRAYSIZE(test_str3) - 1);
    126   verify_memory(computed_hash, precomp_hash3, CURL_SHA512_256_DIGEST_LENGTH);
    127 
    128   Curl_sha512_256it(output_buf, (const unsigned char *) test_str4,
    129                     CURL_ARRAYSIZE(test_str4) - 1);
    130   verify_memory(computed_hash, precomp_hash4, CURL_SHA512_256_DIGEST_LENGTH);
    131 
    132   Curl_sha512_256it(output_buf, (const unsigned char *) test_str5,
    133                     CURL_ARRAYSIZE(test_str5) - 1);
    134   verify_memory(computed_hash, precomp_hash5, CURL_SHA512_256_DIGEST_LENGTH);
    135 
    136   Curl_sha512_256it(output_buf, (const unsigned char *) test_str6,
    137                     CURL_ARRAYSIZE(test_str6) - 1);
    138   verify_memory(computed_hash, precomp_hash6, CURL_SHA512_256_DIGEST_LENGTH);
    139 
    140   Curl_sha512_256it(output_buf, (const unsigned char *) test_str7,
    141                     CURL_ARRAYSIZE(test_str7) - 1);
    142   verify_memory(computed_hash, precomp_hash7, CURL_SHA512_256_DIGEST_LENGTH);
    143 
    144   Curl_sha512_256it(output_buf, test_seq8,
    145                     CURL_ARRAYSIZE(test_seq8));
    146   verify_memory(computed_hash, precomp_hash8, CURL_SHA512_256_DIGEST_LENGTH);
    147 
    148 #endif /* CURL_HAVE_SHA512_256 */
    149 
    150   UNITTEST_END_SIMPLE
    151 }