1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-24 12:36:01 -07:00
libsodium/test/default/auth.c

69 lines
2.3 KiB
C
Raw Normal View History

2013-01-20 16:25:22 -07:00
2013-01-20 16:55:10 -07:00
#define TEST_NAME "auth"
#include "cmptest.h"
2013-01-20 16:25:22 -07:00
/* "Test Case 2" from RFC 4231 */
unsigned char key[32] = "Jefe";
2013-04-26 21:52:21 -07:00
unsigned char c[] = "what do ya want for nothing?";
2013-01-20 16:25:22 -07:00
/* Hacker manifesto */
unsigned char key2[] = "Another one got caught today, it's all over the papers. \"Teenager Arrested in Computer Crime Scandal\", \"Hacker Arrested after Bank Tampering\"... Damn kids. They're all alike.";
unsigned char a[crypto_auth_BYTES];
unsigned char a2[crypto_auth_hmacsha512_BYTES];
2013-01-20 16:25:22 -07:00
2013-01-20 16:48:08 -07:00
int main(void)
2013-01-20 16:25:22 -07:00
{
crypto_auth_hmacsha512_state st;
int i;
2015-01-23 15:08:49 -07:00
assert(crypto_auth_hmacsha512_statebytes() ==
sizeof(crypto_auth_hmacsha512_state));
2014-09-14 11:32:55 -07:00
crypto_auth(a, c, sizeof c - 1U, key);
for (i = 0; i < sizeof a; ++i) {
2014-09-14 11:32:55 -07:00
printf(",0x%02x", (unsigned int)a[i]);
if (i % 8 == 7)
printf("\n");
}
printf("\n");
crypto_auth_hmacsha512_init(&st, key, sizeof key);
crypto_auth_hmacsha512_update(&st, c, 1U);
crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U);
crypto_auth_hmacsha512_final(&st, a2);
for (i = 0; i < sizeof a2; ++i) {
printf(",0x%02x", (unsigned int)a2[i]);
if (i % 8 == 7)
printf("\n");
}
printf("\n");
crypto_auth_hmacsha512_init(&st, key2, sizeof key2);
crypto_auth_hmacsha512_update(&st, c, 1U);
crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U);
crypto_auth_hmacsha512_final(&st, a2);
for (i = 0; i < sizeof a2; ++i) {
printf(",0x%02x", (unsigned int)a2[i]);
if (i % 8 == 7)
printf("\n");
}
assert(crypto_auth_bytes() > 0U);
assert(crypto_auth_keybytes() > 0U);
assert(strcmp(crypto_auth_primitive(), "hmacsha512256") == 0);
assert(crypto_auth_hmacsha256_bytes() > 0U);
assert(crypto_auth_hmacsha256_keybytes() > 0U);
assert(crypto_auth_hmacsha512_bytes() > 0U);
assert(crypto_auth_hmacsha512_keybytes() > 0U);
assert(crypto_auth_hmacsha512256_bytes() == crypto_auth_bytes());
assert(crypto_auth_hmacsha512256_keybytes() == crypto_auth_keybytes());
assert(crypto_auth_hmacsha512256_statebytes() >=
crypto_auth_hmacsha512256_keybytes());
2015-01-23 15:08:49 -07:00
assert(crypto_auth_hmacsha256_statebytes() ==
sizeof(crypto_auth_hmacsha256_state));
assert(crypto_auth_hmacsha512_statebytes() ==
sizeof(crypto_auth_hmacsha512_state));
return 0;
2013-01-20 16:25:22 -07:00
}