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 }