1*f447f37aSriastradh
2*f447f37aSriastradh #define TEST_NAME "auth"
3*f447f37aSriastradh #include "cmptest.h"
4*f447f37aSriastradh
5*f447f37aSriastradh /* "Test Case 2" from RFC 4231 */
6*f447f37aSriastradh static unsigned char key[32] = "Jefe";
7*f447f37aSriastradh static unsigned char c[] = "what do ya want for nothing?";
8*f447f37aSriastradh
9*f447f37aSriastradh /* Hacker manifesto */
10*f447f37aSriastradh static unsigned char key2[] =
11*f447f37aSriastradh "Another one got caught today, it's all over the papers. \"Teenager "
12*f447f37aSriastradh "Arrested in Computer Crime Scandal\", \"Hacker Arrested after Bank "
13*f447f37aSriastradh "Tampering\"... Damn kids. They're all alike.";
14*f447f37aSriastradh
15*f447f37aSriastradh static unsigned char a[crypto_auth_BYTES];
16*f447f37aSriastradh static unsigned char a2[crypto_auth_hmacsha512_BYTES];
17*f447f37aSriastradh
18*f447f37aSriastradh int
main(void)19*f447f37aSriastradh main(void)
20*f447f37aSriastradh {
21*f447f37aSriastradh crypto_auth_hmacsha512_state st;
22*f447f37aSriastradh crypto_auth_hmacsha256_state st256;
23*f447f37aSriastradh size_t i;
24*f447f37aSriastradh
25*f447f37aSriastradh assert(crypto_auth_hmacsha512_statebytes() ==
26*f447f37aSriastradh sizeof(crypto_auth_hmacsha512_state));
27*f447f37aSriastradh crypto_auth(a, c, sizeof c - 1U, key);
28*f447f37aSriastradh for (i = 0; i < sizeof a; ++i) {
29*f447f37aSriastradh printf(",0x%02x", (unsigned int) a[i]);
30*f447f37aSriastradh if (i % 8 == 7)
31*f447f37aSriastradh printf("\n");
32*f447f37aSriastradh }
33*f447f37aSriastradh printf("\n");
34*f447f37aSriastradh
35*f447f37aSriastradh crypto_auth_hmacsha512_init(&st, key, sizeof key);
36*f447f37aSriastradh crypto_auth_hmacsha512_update(&st, c, 1U);
37*f447f37aSriastradh crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U);
38*f447f37aSriastradh crypto_auth_hmacsha512_final(&st, a2);
39*f447f37aSriastradh for (i = 0; i < sizeof a2; ++i) {
40*f447f37aSriastradh printf(",0x%02x", (unsigned int) a2[i]);
41*f447f37aSriastradh if (i % 8 == 7)
42*f447f37aSriastradh printf("\n");
43*f447f37aSriastradh }
44*f447f37aSriastradh printf("\n");
45*f447f37aSriastradh
46*f447f37aSriastradh crypto_auth_hmacsha512_init(&st, key2, sizeof key2);
47*f447f37aSriastradh crypto_auth_hmacsha512_update(&st, c, 1U);
48*f447f37aSriastradh crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U);
49*f447f37aSriastradh crypto_auth_hmacsha512_final(&st, a2);
50*f447f37aSriastradh for (i = 0; i < sizeof a2; ++i) {
51*f447f37aSriastradh printf(",0x%02x", (unsigned int) a2[i]);
52*f447f37aSriastradh if (i % 8 == 7)
53*f447f37aSriastradh printf("\n");
54*f447f37aSriastradh }
55*f447f37aSriastradh
56*f447f37aSriastradh memset(a2, 0, sizeof a2);
57*f447f37aSriastradh crypto_auth_hmacsha256_init(&st256, key2, sizeof key2);
58*f447f37aSriastradh crypto_auth_hmacsha256_update(&st256, NULL, 0U);
59*f447f37aSriastradh crypto_auth_hmacsha256_update(&st256, c, 1U);
60*f447f37aSriastradh crypto_auth_hmacsha256_update(&st256, c, sizeof c - 2U);
61*f447f37aSriastradh crypto_auth_hmacsha256_final(&st256, a2);
62*f447f37aSriastradh for (i = 0; i < sizeof a2; ++i) {
63*f447f37aSriastradh printf(",0x%02x", (unsigned int) a2[i]);
64*f447f37aSriastradh if (i % 8 == 7)
65*f447f37aSriastradh printf("\n");
66*f447f37aSriastradh }
67*f447f37aSriastradh
68*f447f37aSriastradh assert(crypto_auth_bytes() > 0U);
69*f447f37aSriastradh assert(crypto_auth_keybytes() > 0U);
70*f447f37aSriastradh assert(strcmp(crypto_auth_primitive(), "hmacsha512256") == 0);
71*f447f37aSriastradh assert(crypto_auth_hmacsha256_bytes() > 0U);
72*f447f37aSriastradh assert(crypto_auth_hmacsha256_keybytes() > 0U);
73*f447f37aSriastradh assert(crypto_auth_hmacsha512_bytes() > 0U);
74*f447f37aSriastradh assert(crypto_auth_hmacsha512_keybytes() > 0U);
75*f447f37aSriastradh assert(crypto_auth_hmacsha512256_bytes() == crypto_auth_bytes());
76*f447f37aSriastradh assert(crypto_auth_hmacsha512256_keybytes() == crypto_auth_keybytes());
77*f447f37aSriastradh assert(crypto_auth_hmacsha512256_statebytes() >=
78*f447f37aSriastradh crypto_auth_hmacsha512256_keybytes());
79*f447f37aSriastradh assert(crypto_auth_hmacsha256_statebytes() ==
80*f447f37aSriastradh sizeof(crypto_auth_hmacsha256_state));
81*f447f37aSriastradh assert(crypto_auth_hmacsha512_statebytes() ==
82*f447f37aSriastradh sizeof(crypto_auth_hmacsha512_state));
83*f447f37aSriastradh
84*f447f37aSriastradh return 0;
85*f447f37aSriastradh }
86