Home | History | Annotate | Line # | Download | only in default
      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
     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