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