diff options
author | Samuel Neves <sneves@dei.uc.pt> | 2016-06-11 14:22:35 +0300 |
---|---|---|
committer | Samuel Neves <sneves@dei.uc.pt> | 2016-06-11 14:22:35 +0300 |
commit | 64cafcff1620ab778d23057e1c7559087d7bd4e6 (patch) | |
tree | 24e415f6b2a08f3381427c37ca25a0df87df5ef7 /sse/blake2b.c | |
parent | 8a007c8cbb18d860f5e6491b150f7d3bd3c9c616 (diff) |
test streaming api
Diffstat (limited to 'sse/blake2b.c')
-rw-r--r-- | sse/blake2b.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/sse/blake2b.c b/sse/blake2b.c index a855262..6271126 100644 --- a/sse/blake2b.c +++ b/sse/blake2b.c @@ -348,7 +348,7 @@ int main( void ) { uint8_t key[BLAKE2B_KEYBYTES]; uint8_t buf[BLAKE2_KAT_LENGTH]; - size_t i; + size_t i, step; for( i = 0; i < BLAKE2B_KEYBYTES; ++i ) key[i] = ( uint8_t )i; @@ -356,6 +356,7 @@ int main( void ) for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) buf[i] = ( uint8_t )i; + /* Test simple API */ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) { uint8_t hash[BLAKE2B_OUTBYTES]; @@ -363,13 +364,48 @@ int main( void ) if( 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) ) { - puts( "error" ); - return -1; + goto fail; + } + } + + /* Test streaming API */ + for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) { + for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) { + uint8_t hash[BLAKE2B_OUTBYTES]; + blake2b_state S; + uint8_t * p = buf; + size_t mlen = i; + int err = 0; + + if( (err = blake2b_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) { + goto fail; + } + + while (mlen >= step) { + if ( (err = blake2b_update(&S, p, step)) < 0 ) { + goto fail; + } + mlen -= step; + p += step; + } + if ( (err = blake2b_update(&S, p, mlen)) < 0) { + goto fail; + } + if ( (err = blake2b_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) { + goto fail; + } + + if (0 != memcmp(hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES)) { + goto fail; + } } } puts( "ok" ); return 0; +fail: + puts("error"); + return -1; } #endif |