generichash3.c revision 1.1 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