libsodium 1.0.8
[tomato.git] / release / src / router / libsodium / test / default / generichash3.c
blobe430b725af049347a7baa8147577b752323f06ac
2 #define TEST_NAME "generichash3"
3 #include "cmptest.h"
5 int
6 main(void)
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;
23 for (h = 0; h < crypto_generichash_blake2b_KEYBYTES_MAX; ++h) {
24 k[h] = (unsigned char) h;
27 for (i = 0; i < MAXLEN; ++i) {
28 in[i] = (unsigned char) i;
29 crypto_generichash_blake2b_init_salt_personal(
30 &st, k, 1 + i % crypto_generichash_blake2b_KEYBYTES_MAX,
31 1 + i % crypto_generichash_blake2b_BYTES_MAX, salt, personal);
32 crypto_generichash_blake2b_update(&st, in, (unsigned long long) i);
33 crypto_generichash_blake2b_final(
34 &st, out, 1 + i % crypto_generichash_blake2b_BYTES_MAX);
35 for (j = 0; j < 1 + i % crypto_generichash_blake2b_BYTES_MAX; ++j) {
36 printf("%02x", (unsigned int) out[j]);
38 printf("\n");
41 memset(out, 0, sizeof out);
42 crypto_generichash_blake2b_init_salt_personal(
43 &st, k, 0U, crypto_generichash_blake2b_BYTES_MAX, salt, personal);
44 crypto_generichash_blake2b_update(&st, in, MAXLEN);
45 crypto_generichash_blake2b_final(&st, out,
46 crypto_generichash_blake2b_BYTES_MAX);
47 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
48 printf("%02x", (unsigned int) out[j]);
50 printf("\n");
52 memset(out, 0, sizeof out);
53 crypto_generichash_blake2b_init_salt_personal(
54 &st, NULL, 1U, crypto_generichash_blake2b_BYTES_MAX, salt, personal);
55 crypto_generichash_blake2b_update(&st, in, MAXLEN);
56 crypto_generichash_blake2b_final(&st, out,
57 crypto_generichash_blake2b_BYTES_MAX);
58 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
59 printf("%02x", (unsigned int) out[j]);
61 printf("\n");
63 memset(out, 0, sizeof out);
64 crypto_generichash_blake2b_init_salt_personal(
65 &st, k, crypto_generichash_blake2b_KEYBYTES_MAX,
66 crypto_generichash_blake2b_BYTES_MAX, NULL, personal);
67 crypto_generichash_blake2b_update(&st, in, MAXLEN);
68 crypto_generichash_blake2b_final(&st, out,
69 crypto_generichash_blake2b_BYTES_MAX);
70 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
71 printf("%02x", (unsigned int) out[j]);
73 printf("\n");
75 memset(out, 0, sizeof out);
76 crypto_generichash_blake2b_init_salt_personal(
77 &st, k, crypto_generichash_blake2b_KEYBYTES_MAX,
78 crypto_generichash_blake2b_BYTES_MAX, salt, NULL);
79 crypto_generichash_blake2b_update(&st, in, MAXLEN);
80 crypto_generichash_blake2b_final(
81 &st, out, crypto_generichash_blake2b_BYTES_MAX);
82 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
83 printf("%02x", (unsigned int) out[j]);
85 printf("\n");
87 memset(out, 0, sizeof out);
88 crypto_generichash_blake2b_salt_personal(
89 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
90 k, 0U, salt, personal);
91 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
92 printf("%02x", (unsigned int) out[j]);
94 printf("\n");
96 memset(out, 0, sizeof out);
97 crypto_generichash_blake2b_salt_personal(
98 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
99 NULL, 0U, salt, personal);
100 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
101 printf("%02x", (unsigned int) out[j]);
103 printf("\n");
105 memset(out, 0, sizeof out);
106 crypto_generichash_blake2b_salt_personal(
107 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
108 k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, personal);
109 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
110 printf("%02x", (unsigned int) out[j]);
112 printf("\n");
114 memset(out, 0, sizeof out);
115 crypto_generichash_blake2b_salt_personal(
116 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
117 k, crypto_generichash_blake2b_KEYBYTES_MAX, NULL, personal);
118 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
119 printf("%02x", (unsigned int) out[j]);
121 printf("\n");
123 memset(out, 0, sizeof out);
124 crypto_generichash_blake2b_salt_personal(
125 out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
126 k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, NULL);
127 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
128 printf("%02x", (unsigned int) out[j]);
130 printf("\n");
132 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
133 NULL, personal);
134 crypto_generichash_blake2b_update(&st, in, MAXLEN);
135 crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX);
136 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
137 printf("%02x", (unsigned int) out[j]);
139 printf("\n");
141 crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
142 salt, NULL);
143 crypto_generichash_blake2b_update(&st, in, MAXLEN);
144 crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX);
145 for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
146 printf("%02x", (unsigned int) out[j]);
148 printf("\n");
150 assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES,
151 NULL, personal) == 0);
152 assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES,
153 salt, NULL) == 0);
154 return 0;