2 #define TEST_NAME "generichash3"
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];
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;
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
133 assert(crypto_generichash_blake2b_salt_personal
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);
146 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
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]);
155 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
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]);
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);
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,