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