Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/BLAKE2/BLAKE2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJP Aumasson <jeanphilippe.aumasson@gmail.com>2016-10-11 21:25:14 +0300
committerJP Aumasson <jeanphilippe.aumasson@gmail.com>2016-10-11 21:25:14 +0300
commitae633ca8e2220236e28953299194bf0656da5d25 (patch)
tree4006d3c036b276edf1f71896eb82bf8cc7c5e40f
parent73bd0dc6529657b972cdd00b16bfe7d788d73f8c (diff)
b2xs test procedures
-rw-r--r--ref/blake2xs-ref.c63
1 files changed, 53 insertions, 10 deletions
diff --git a/ref/blake2xs-ref.c b/ref/blake2xs-ref.c
index 33708d2..817e39e 100644
--- a/ref/blake2xs-ref.c
+++ b/ref/blake2xs-ref.c
@@ -17,7 +17,7 @@ int blake2xs_init( blake2xs_state *S, const size_t outlen, const void *key, size
return -1;
}
- if (key == NULL || keylen > BLAKE2S_KEYBYTES) {
+ if (NULL == key || keylen > BLAKE2S_KEYBYTES) {
return -1;
}
@@ -60,7 +60,7 @@ int blake2xs_final(blake2xs_state *S, void *out, size_t outlen)
uint8_t root[BLAKE2S_BLOCKBYTES];
size_t i;
- if (out == NULL) {
+ if (NULL == out) {
return -1;
}
@@ -149,28 +149,71 @@ int main( void )
{
uint8_t key[BLAKE2S_KEYBYTES];
uint8_t buf[BLAKE2_KAT_LENGTH];
+ size_t i, step;
- for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i ) {
+ for( i = 0; i < BLAKE2S_KEYBYTES; ++i ) {
key[i] = ( uint8_t )i;
}
- for( size_t i = 0; i < BLAKE2_KAT_LENGTH; ++i ) {
+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) {
buf[i] = ( uint8_t )i;
}
- for( size_t i = 1; i < BLAKE2_KAT_LENGTH; ++i )
+ /* Testing length of ouputs rather than inputs */
+ /* (Test of input lengths mostly covered by blake2s tests) */
+
+ /* Test simple API */
+ for( size_t outlen = 1; outlen <= BLAKE2_KAT_LENGTH; ++outlen )
{
uint8_t hash[BLAKE2_KAT_LENGTH] = {0};
- blake2xs( hash, i, buf, BLAKE2_KAT_LENGTH, key, BLAKE2S_KEYBYTES );
+ blake2xs( hash, outlen, buf, BLAKE2_KAT_LENGTH, key, BLAKE2S_KEYBYTES );
+
+#if 0
+ if( 0 != memcmp( hash, blake2xs_keyed_kat[i-1], i ) )
+ {
+ goto fail;
+ }
+#endif
+ }
+
+ /* Test streaming API */
+ for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {
+ for (size_t outlen = 1; outlen <= BLAKE2_KAT_LENGTH; ++outlen) {
+ uint8_t hash[BLAKE2S_OUTBYTES];
+ blake2xs_state S;
+ uint8_t * p = buf;
+ size_t mlen = BLAKE2_KAT_LENGTH;
+ int err = 0;
+
+ if( (err = blake2xs_init(&S, outlen, key, BLAKE2S_KEYBYTES)) < 0 ) {
+ goto fail;
+ }
+
+ while (mlen >= step) {
+ if ( (err = blake2xs_update(&S, p, step)) < 0 ) {
+ goto fail;
+ }
+ mlen -= step;
+ p += step;
+ }
+ if ( (err = blake2xs_update(&S, p, mlen)) < 0) {
+ goto fail;
+ }
+ if ( (err = blake2xs_final(&S, hash, outlen)) < 0) {
+ goto fail;
+ }
- for( size_t j = 0; j < i; ++j ) {
- printf("%02x", hash[j]);
+ if (0 != memcmp(hash, blake2s_keyed_kat[outlen-1], outlen)) {
+ goto fail;
}
- printf("\n");
+ }
}
- //puts( "ok" );
+ puts( "ok" );
return 0;
+fail:
+ puts("error");
+ return -1;
}
#endif