1 2 #define TEST_NAME "generichash3" 3 #include "cmptest.h" 4 5 int 6 main(void) 7 { 8 #define MAXLEN 64 9 crypto_generichash_blake2b_state st; 10 unsigned char salt[crypto_generichash_blake2b_SALTBYTES] 11 = { '5', 'b', '6', 'b', '4', '1', 'e', 'd', 12 '9', 'b', '3', '4', '3', 'f', 'e', '0' }; 13 unsigned char personal[crypto_generichash_blake2b_PERSONALBYTES] 14 = { '5', '1', '2', '6', 'f', 'b', '2', 'a', 15 '3', '7', '4', '0', '0', 'd', '2', 'a' }; 16 unsigned char in[MAXLEN]; 17 unsigned char out[crypto_generichash_blake2b_BYTES_MAX]; 18 unsigned char k[crypto_generichash_blake2b_KEYBYTES_MAX]; 19 size_t h; 20 size_t i; 21 size_t j; 22 23 assert(crypto_generichash_blake2b_statebytes() >= sizeof st); 24 for (h = 0; h < crypto_generichash_blake2b_KEYBYTES_MAX; ++h) { 25 k[h] = (unsigned char) h; 26 } 27 28 for (i = 0; i < MAXLEN; ++i) { 29 in[i] = (unsigned char) i; 30 crypto_generichash_blake2b_init_salt_personal( 31 &st, k, 1 + i % crypto_generichash_blake2b_KEYBYTES_MAX, 32 1 + i % crypto_generichash_blake2b_BYTES_MAX, salt, personal); 33 crypto_generichash_blake2b_update(&st, in, (unsigned long long) i); 34 crypto_generichash_blake2b_final( 35 &st, out, 1 + i % crypto_generichash_blake2b_BYTES_MAX); 36 for (j = 0; j < 1 + i % crypto_generichash_blake2b_BYTES_MAX; ++j) { 37 printf("%02x", (unsigned int) out[j]); 38 } 39 printf("\n"); 40 } 41 42 memset(out, 0, sizeof out); 43 crypto_generichash_blake2b_init_salt_personal( 44 &st, k, 0U, crypto_generichash_blake2b_BYTES_MAX, salt, personal); 45 crypto_generichash_blake2b_update(&st, in, MAXLEN); 46 crypto_generichash_blake2b_final(&st, out, 47 crypto_generichash_blake2b_BYTES_MAX); 48 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 49 printf("%02x", (unsigned int) out[j]); 50 } 51 printf("\n"); 52 53 memset(out, 0, sizeof out); 54 crypto_generichash_blake2b_init_salt_personal( 55 &st, NULL, 1U, crypto_generichash_blake2b_BYTES_MAX, salt, personal); 56 crypto_generichash_blake2b_update(&st, in, MAXLEN); 57 crypto_generichash_blake2b_final(&st, out, 58 crypto_generichash_blake2b_BYTES_MAX); 59 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 60 printf("%02x", (unsigned int) out[j]); 61 } 62 printf("\n"); 63 64 memset(out, 0, sizeof out); 65 crypto_generichash_blake2b_init_salt_personal( 66 &st, k, crypto_generichash_blake2b_KEYBYTES_MAX, 67 crypto_generichash_blake2b_BYTES_MAX, NULL, personal); 68 crypto_generichash_blake2b_update(&st, in, MAXLEN); 69 crypto_generichash_blake2b_final(&st, out, 70 crypto_generichash_blake2b_BYTES_MAX); 71 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 72 printf("%02x", (unsigned int) out[j]); 73 } 74 printf("\n"); 75 76 memset(out, 0, sizeof out); 77 crypto_generichash_blake2b_init_salt_personal( 78 &st, k, crypto_generichash_blake2b_KEYBYTES_MAX, 79 crypto_generichash_blake2b_BYTES_MAX, salt, NULL); 80 crypto_generichash_blake2b_update(&st, in, MAXLEN); 81 crypto_generichash_blake2b_final( 82 &st, out, crypto_generichash_blake2b_BYTES_MAX); 83 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 84 printf("%02x", (unsigned int) out[j]); 85 } 86 printf("\n"); 87 88 memset(out, 0, sizeof out); 89 crypto_generichash_blake2b_salt_personal( 90 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, 91 k, 0U, salt, personal); 92 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 93 printf("%02x", (unsigned int) out[j]); 94 } 95 printf("\n"); 96 97 memset(out, 0, sizeof out); 98 crypto_generichash_blake2b_salt_personal( 99 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, 100 NULL, 0U, salt, personal); 101 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 102 printf("%02x", (unsigned int) out[j]); 103 } 104 printf("\n"); 105 106 memset(out, 0, sizeof out); 107 crypto_generichash_blake2b_salt_personal( 108 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, 109 k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, personal); 110 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 111 printf("%02x", (unsigned int) out[j]); 112 } 113 printf("\n"); 114 115 memset(out, 0, sizeof out); 116 crypto_generichash_blake2b_salt_personal( 117 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, 118 k, crypto_generichash_blake2b_KEYBYTES_MAX, NULL, personal); 119 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 120 printf("%02x", (unsigned int) out[j]); 121 } 122 printf("\n"); 123 124 memset(out, 0, sizeof out); 125 crypto_generichash_blake2b_salt_personal( 126 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, 127 k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, NULL); 128 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 129 printf("%02x", (unsigned int) out[j]); 130 } 131 printf("\n"); 132 133 assert(crypto_generichash_blake2b_salt_personal 134 (NULL, 0, 135 in, (unsigned long long) sizeof in, 136 k, sizeof k, NULL, NULL) == -1); 137 assert(crypto_generichash_blake2b_salt_personal 138 (NULL, crypto_generichash_BYTES_MAX + 1, 139 in, (unsigned long long) sizeof in, 140 k, sizeof k, NULL, NULL) == -1); 141 assert(crypto_generichash_blake2b_salt_personal 142 (NULL, (unsigned long long) sizeof in, 143 in, (unsigned long long) sizeof in, 144 k, crypto_generichash_KEYBYTES_MAX + 1, NULL, NULL) == -1); 145 146 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES, 147 NULL, personal); 148 crypto_generichash_blake2b_update(&st, in, MAXLEN); 149 crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX); 150 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 151 printf("%02x", (unsigned int) out[j]); 152 } 153 printf("\n"); 154 155 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES, 156 salt, NULL); 157 crypto_generichash_blake2b_update(&st, in, MAXLEN); 158 crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX); 159 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { 160 printf("%02x", (unsigned int) out[j]); 161 } 162 printf("\n"); 163 164 assert(crypto_generichash_blake2b_init_salt_personal 165 (&st, k, sizeof k, 0, NULL, NULL) == -1); 166 assert(crypto_generichash_blake2b_init_salt_personal 167 (&st, k, sizeof k, crypto_generichash_blake2b_BYTES_MAX + 1, NULL, NULL) == -1); 168 assert(crypto_generichash_blake2b_init_salt_personal 169 (&st, k, crypto_generichash_blake2b_KEYBYTES_MAX + 1, sizeof out, NULL, NULL) == -1); 170 171 assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES, 172 NULL, personal) == 0); 173 assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES, 174 salt, NULL) == 0); 175 return 0; 176 } 177