2015-04-28 13:02:37 +00:00
/*
2015-05-19 07:57:10 +00:00
* BIRD Library - - SHA - 512 , SHA - 384 , HMAC - SHA - 512 and HMAC - SHA - 384 Tests
2015-04-28 13:02:37 +00:00
*
* ( c ) 2015 CZ . NIC z . s . p . o .
*
* Can be freely distributed and used under the terms of the GNU GPL .
*/
# include <stdlib.h>
# include "test/birdtest.h"
# include "sysdep/config.h"
# include "lib/sha512.h"
static void
byte_to_hex ( char * out , const byte * in , uint len )
{
int i ;
for ( i = 0 ; i < len ; i + + )
sprintf ( out + i * 2 , " %02x " , in [ i ] ) ;
}
static void
get_sha512 ( const char * str , char ( * out_hash ) [ SHA512_HEX_SIZE ] )
{
2015-05-19 07:57:10 +00:00
struct sha512_context ctx ;
2015-04-28 13:02:37 +00:00
sha512_init ( & ctx ) ;
sha512_update ( & ctx , str , strlen ( str ) ) ;
byte * hash = sha512_final ( & ctx ) ;
byte_to_hex ( ( char * ) out_hash , hash , SHA512_SIZE ) ;
}
static void
get_sha384 ( const char * str , char ( * out_hash ) [ SHA384_HEX_SIZE ] )
{
2015-05-19 07:57:10 +00:00
struct sha384_context ctx ;
2015-04-28 13:02:37 +00:00
sha384_init ( & ctx ) ;
sha384_update ( & ctx , str , strlen ( str ) ) ;
byte * hash = sha384_final ( & ctx ) ;
byte_to_hex ( ( char * ) out_hash , hash , SHA384_SIZE ) ;
}
static int
t_sha512 ( void )
{
struct in_out {
char * in ;
char out [ SHA512_HEX_SIZE ] ;
} in_out [ ] = {
{
. in = " " ,
. out = " cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e " ,
} ,
{
. in = " a " ,
. out = " 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75 " ,
} ,
{
. in = " abc " ,
. out = " ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f " ,
} ,
{
. in = " abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq " ,
. out = " 204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445 " ,
} ,
{
2015-05-12 10:27:47 +00:00
. in = " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " ,
. out = " 415509a1c345371acb3e27a88b3835e3b6dfebcbbab5134850596f4db64d7bb22ac42c3cd179446a80c92b8be955460eb536eac01389a7e1fdf09d1dca83922f " ,
2015-04-28 13:02:37 +00:00
} ,
} ;
bt_assert_fn_in_out ( get_sha512 , in_out , " '%s' " , " '%s' " ) ;
return BT_SUCCESS ;
}
static int
t_sha384 ( void )
{
struct in_out {
char * in ;
char out [ SHA384_HEX_SIZE ] ;
} in_out [ ] = {
{
. in = " " ,
. out = " 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b " ,
} ,
{
. in = " a " ,
. out = " 54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31 " ,
} ,
{
. in = " abc " ,
. out = " cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 " ,
} ,
{
. in = " abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq " ,
. out = " 3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b " ,
} ,
{
2015-05-12 10:27:47 +00:00
. in = " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " ,
. out = " 6452928a62ca915a60f2d16ea22cc832d8ecb35443d78a3ff6986e7def9174a1dc16ce2ff65d3ed1666db98357f3c05e " ,
2015-04-28 13:02:37 +00:00
} ,
} ;
bt_assert_fn_in_out ( get_sha384 , in_out , " '%s' " , " '%s' " ) ;
return BT_SUCCESS ;
}
2015-04-29 11:41:40 +00:00
static int
t_sha512_concating ( void )
{
char hash_a [ SHA512_HEX_SIZE ] ;
char hash_b [ SHA512_HEX_SIZE ] ;
char * str_a = " a " " bb " " ccc " " dddd " " eeeee " " ffffff " ;
char * str_b1 = " a " ;
char * str_b2 = " bb " ;
char * str_b3 = " ccc " ;
char * str_b4 = " dddd " ;
char * str_b5 = " eeeee " ;
char * str_b6 = " ffffff " ;
2015-05-19 07:57:10 +00:00
struct sha512_context ctx_a ;
2015-04-29 11:41:40 +00:00
sha512_init ( & ctx_a ) ;
sha512_update ( & ctx_a , str_a , strlen ( str_a ) ) ;
byte * hash_a_ = sha512_final ( & ctx_a ) ;
byte_to_hex ( hash_a , hash_a_ , SHA512_SIZE ) ;
2015-05-19 07:57:10 +00:00
struct sha512_context ctx_b ;
2015-04-29 11:41:40 +00:00
sha512_init ( & ctx_b ) ;
sha512_update ( & ctx_b , str_b1 , strlen ( str_b1 ) ) ;
sha512_update ( & ctx_b , str_b2 , strlen ( str_b2 ) ) ;
sha512_update ( & ctx_b , str_b3 , strlen ( str_b3 ) ) ;
sha512_update ( & ctx_b , str_b4 , strlen ( str_b4 ) ) ;
sha512_update ( & ctx_b , str_b5 , strlen ( str_b5 ) ) ;
sha512_update ( & ctx_b , str_b6 , strlen ( str_b6 ) ) ;
byte * hash_b_ = sha512_final ( & ctx_b ) ;
byte_to_hex ( hash_b , hash_b_ , SHA512_SIZE ) ;
int are_hash_a_b_equal = ( strncmp ( hash_a , hash_b , sizeof ( hash_a ) ) = = 0 ) ;
bt_assert_msg ( are_hash_a_b_equal , " Hashes are different: \n A: %s \n B: %s " , hash_a , hash_b ) ;
return BT_SUCCESS ;
}
# define HMAC_BUFFER_SIZE 160
struct hmac_data_in {
byte key [ HMAC_BUFFER_SIZE ] ;
uint key_len ;
byte data [ HMAC_BUFFER_SIZE ] ;
uint data_len ;
} ;
static void
get_sha512_hmac ( const struct hmac_data_in in , char ( * out_hash ) [ SHA512_HEX_SIZE ] )
{
2015-05-19 07:57:10 +00:00
struct sha512_hmac_context ctx ;
2015-04-29 11:41:40 +00:00
sha512_hmac_init ( & ctx , in . key , in . key_len ) ;
sha512_hmac_update ( & ctx , in . data , in . data_len ) ;
byte * hash_byte = sha512_hmac_final ( & ctx ) ;
byte_to_hex ( ( char * ) out_hash , hash_byte , SHA512_SIZE ) ;
}
static void
get_sha384_hmac ( const struct hmac_data_in in , char ( * out_hash ) [ SHA384_HEX_SIZE ] )
{
2015-05-19 07:57:10 +00:00
struct sha384_hmac_context ctx ;
2015-04-29 11:41:40 +00:00
sha384_hmac_init ( & ctx , in . key , in . key_len ) ;
sha384_hmac_update ( & ctx , in . data , in . data_len ) ;
byte * hash_byte = sha384_hmac_final ( & ctx ) ;
byte_to_hex ( ( char * ) out_hash , hash_byte , SHA384_SIZE ) ;
}
static int
t_sha512_hmac ( void )
{
struct in_out {
struct hmac_data_in in ;
char out [ SHA512_HEX_SIZE ] ;
} in_out [ ] = {
{
. in = {
. key = {
0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b ,
0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b ,
} ,
. key_len = 20 ,
. data = " Hi There " ,
. data_len = 8 ,
} ,
. out = " 87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854 " ,
} ,
{
. in = {
. key = " Jefe " ,
. key_len = 4 ,
. data = " what do ya want for nothing? " ,
. data_len = 28 ,
} ,
. out = " 164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737 " ,
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
} ,
. key_len = 20 ,
. data = {
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
} ,
. data_len = 50 ,
} ,
. out = " fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb " ,
} ,
{
. in = {
. key = {
0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a ,
0x0b , 0x0c , 0x0d , 0x0e , 0x0f , 0x10 , 0x11 , 0x12 , 0x13 , 0x14 ,
0x15 , 0x16 , 0x17 , 0x18 , 0x19 ,
} ,
. key_len = 25 ,
. data = {
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
} ,
. data_len = 50 ,
} ,
. out = " b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd " ,
} ,
{
. in = {
. key = {
0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c ,
0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c ,
} ,
. key_len = 20 ,
. data = " Test With Truncation " ,
. data_len = 20 ,
} ,
2015-05-12 10:29:45 +00:00
. out = " 415fad6271580a531d4179bc891d87a650188707922a4fbb36663a1eb16da008711c5b50ddd0fc235084eb9d3364a1454fb2ef67cd1d29fe6773068ea266e96b " ,
2015-04-29 11:41:40 +00:00
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa ,
} ,
. key_len = 131 ,
. data = " Test Using Larger Than Block-Size Key - Hash Key First " ,
. data_len = 54 ,
} ,
. out = " 80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598 " ,
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa ,
} ,
. key_len = 131 ,
. data = " This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm. " ,
. data_len = 152 ,
} ,
. out = " e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58 " ,
} ,
} ;
bt_assert_fn_in_out ( get_sha512_hmac , in_out , NULL , " '%s' " ) ;
return BT_SUCCESS ;
}
static int
t_sha384_hmac ( void )
{
struct in_out {
struct hmac_data_in in ;
char out [ SHA384_HEX_SIZE ] ;
} in_out [ ] = {
{
. in = {
. key = {
0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b ,
0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b , 0x0b ,
} ,
. key_len = 20 ,
. data = " Hi There " ,
. data_len = 8 ,
} ,
. out = " afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6 " ,
} ,
{
. in = {
. key = " Jefe " ,
. key_len = 4 ,
. data = " what do ya want for nothing? " ,
. data_len = 28 ,
} ,
. out = " af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649 " ,
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
} ,
. key_len = 20 ,
. data = {
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd , 0xdd ,
} ,
. data_len = 50 ,
} ,
. out = " 88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27 " ,
} ,
{
. in = {
. key = {
0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a ,
0x0b , 0x0c , 0x0d , 0x0e , 0x0f , 0x10 , 0x11 , 0x12 , 0x13 , 0x14 ,
0x15 , 0x16 , 0x17 , 0x18 , 0x19 ,
} ,
. key_len = 25 ,
. data = {
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd , 0xcd ,
} ,
. data_len = 50 ,
} ,
. out = " 3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb " ,
} ,
{
. in = {
. key = {
0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c ,
0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c , 0x0c ,
} ,
. key_len = 20 ,
. data = " Test With Truncation " ,
. data_len = 20 ,
} ,
2015-05-12 10:29:45 +00:00
. out = " 3abf34c3503b2a23a46efc619baef897f4c8e42c934ce55ccbae9740fcbc1af4ca62269e2a37cd88ba926341efe4aeea " ,
2015-04-29 11:41:40 +00:00
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa ,
} ,
. key_len = 131 ,
. data = " Test Using Larger Than Block-Size Key - Hash Key First " ,
. data_len = 54 ,
} ,
. out = " 4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952 " ,
} ,
{
. in = {
. key = {
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa , 0xaa ,
0xaa ,
} ,
. key_len = 131 ,
. data = " This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm. " ,
. data_len = 152 ,
} ,
2015-05-12 10:29:45 +00:00
. out = " 6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e " ,
2015-04-29 11:41:40 +00:00
} ,
} ;
bt_assert_fn_in_out ( get_sha384_hmac , in_out , NULL , " '%s' " ) ;
return BT_SUCCESS ;
}
2015-04-28 13:02:37 +00:00
int
main ( int argc , char * argv [ ] )
{
bt_init ( argc , argv ) ;
bt_test_suite ( t_sha512 , " Testing SHA512 " ) ;
bt_test_suite ( t_sha384 , " Testing SHA384 " ) ;
2015-04-29 11:41:40 +00:00
bt_test_suite ( t_sha512_concating , " Testing concating input string to hash process via sha512_update " ) ;
bt_test_suite ( t_sha512_hmac , " Test Suite by RFC 4231 " ) ;
bt_test_suite ( t_sha384_hmac , " Test Suite by RFC 4231 " ) ;
2015-04-28 13:02:37 +00:00
return bt_end ( ) ;
}