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 23:55:35 +0300
committerJP Aumasson <jeanphilippe.aumasson@gmail.com>2016-10-11 23:55:35 +0300
commit8b6442c3af3f1b21dccec576c74ace5adc873507 (patch)
treef8cece94d6895132b48a76cf92166a68d2f8df7a
parent25f38cbc5e727bc53c1badd511dbe57d145e682a (diff)
sse genkats
-rw-r--r--sse/genkat-c.c52
-rw-r--r--sse/genkat-json.c56
-rw-r--r--sse/makefile2
3 files changed, 107 insertions, 3 deletions
diff --git a/sse/genkat-c.c b/sse/genkat-c.c
index 1525f8d..9dc7470 100644
--- a/sse/genkat-c.c
+++ b/sse/genkat-c.c
@@ -65,12 +65,58 @@ do \
\
} while (0)
+#define MAKE_XOF_KAT(name) \
+do \
+{ \
+ printf( "static const uint8_t " #name "_kat[BLAKE2_KAT_LENGTH][BLAKE2_KAT_LENGTH] = \n{\n" ); \
+ \
+ for( size_t i = 1; i <= LENGTH; ++i ) \
+ { \
+ name( hash, i, in, LENGTH, NULL, 0 ); \
+ printf( "\t{\n\t\t" ); \
+ \
+ for( int j = 0; j < i; ++j ) \
+ printf( "0x%02X%s", hash[j], ( j + 1 ) == LENGTH ? "\n" : j && !( ( j + 1 ) % 8 ) ? ",\n\t\t" : ", " ); \
+ \
+ for( int j = i; j < LENGTH; ++j ) \
+ printf( "0x00%s", ( j + 1 ) == LENGTH ? "\n" : j && !( ( j + 1 ) % 8 ) ? ",\n\t\t" : ", " ); \
+ \
+ printf( "\t},\n" ); \
+ } \
+ \
+ printf( "};\n\n\n\n\n" ); \
+ \
+} while (0)
+
+#define MAKE_XOF_KEYED_KAT(name,size_prefix) \
+do \
+{ \
+ printf( "static const uint8_t " #name "_keyed_kat[BLAKE2_KAT_LENGTH][BLAKE2_KAT_LENGTH] = \n{\n" ); \
+ \
+ for( size_t i = 1; i <= LENGTH; ++i ) \
+ { \
+ name( hash, i, in, LENGTH, key, size_prefix ## _KEYBYTES ); \
+ printf( "\t{\n\t\t" ); \
+ \
+ for( int j = 0; j < i; ++j ) \
+ printf( "0x%02X%s", hash[j], ( j + 1 ) == LENGTH ? "\n" : j && !( ( j + 1 ) % 8 ) ? ",\n\t\t" : ", " ); \
+ \
+ for( int j = i; j < LENGTH; ++j ) \
+ printf( "0x00%s", ( j + 1 ) == LENGTH ? "\n" : j && !( ( j + 1 ) % 8 ) ? ",\n\t\t" : ", " ); \
+ \
+ printf( "\t},\n" ); \
+ } \
+ \
+ printf( "};\n\n\n\n\n" ); \
+ \
+} while (0)
+
int main( int argc, char **argv )
{
uint8_t key[64] = {0};
uint8_t in[LENGTH] = {0};
- uint8_t hash[64] = {0};
+ uint8_t hash[LENGTH] = {0};
for( size_t i = 0; i < sizeof( in ); ++i )
in[i] = i;
@@ -90,6 +136,10 @@ int main( int argc, char **argv )
MAKE_KEYED_KAT( blake2sp, BLAKE2S );
MAKE_KAT( blake2bp, BLAKE2B );
MAKE_KEYED_KAT( blake2bp, BLAKE2B );
+ MAKE_XOF_KAT( blake2xs );
+ MAKE_XOF_KEYED_KAT( blake2xs, BLAKE2S );
+ MAKE_XOF_KAT( blake2xb );
+ MAKE_XOF_KEYED_KAT( blake2xb, BLAKE2B );
puts( "#endif" );
return 0;
}
diff --git a/sse/genkat-json.c b/sse/genkat-json.c
index f230928..8362942 100644
--- a/sse/genkat-json.c
+++ b/sse/genkat-json.c
@@ -75,12 +75,62 @@ do \
}\
} while (0)
+#define MAKE_XOF_KAT(name) \
+do \
+{ \
+ for( size_t i = 1; i <= LENGTH; ++i ) \
+ { \
+ printf("\n{\n");\
+ \
+ printf(" \"hash\": \"" #name "\",\n");\
+ printf(" \"in\": \"");\
+ for( int j = 0; j < LENGTH; ++j ) printf( "%02x", in[j]);\
+ \
+ printf( "\",\n" ); \
+ printf(" \"key\": \"\",\n");\
+ printf(" \"out\": \"");\
+ \
+ name( hash, i, in, LENGTH, NULL, 0 ); \
+ \
+ for( int j = 0; j < i; ++j ) \
+ printf( "%02x", hash[j]);\
+ printf( "\"\n" ); \
+ printf( "}," ); \
+ }\
+} while (0)
+
+#define MAKE_XOF_KEYED_KAT(name,size_prefix) \
+do \
+{ \
+ for( size_t i = 1; i <= LENGTH; ++i ) \
+ { \
+ printf("\n{\n");\
+ \
+ printf(" \"hash\": \"" #name "\",\n");\
+ printf(" \"in\": \"");\
+ for( int j = 0; j < LENGTH; ++j ) printf( "%02x", in[j]);\
+ \
+ printf( "\",\n" ); \
+ printf(" \"key\": \"");\
+ for( int j = 0; j < size_prefix ## _KEYBYTES; ++j ) printf( "%02x", key[j]);\
+ printf("\",\n");\
+ printf(" \"out\": \"");\
+ \
+ name( hash, i, in, LENGTH, key, size_prefix ## _KEYBYTES ); \
+ \
+ for( int j = 0; j < i; ++j ) \
+ printf( "%02x", hash[j]);\
+ printf( "\"\n" ); \
+ printf( "}," ); \
+ }\
+} while (0)
+
int main( int argc, char **argv )
{
uint8_t key[64] = {0};
uint8_t in[LENGTH] = {0};
- uint8_t hash[64] = {0};
+ uint8_t hash[LENGTH] = {0};
for( size_t i = 0; i < sizeof( in ); ++i )
in[i] = i;
@@ -97,6 +147,10 @@ int main( int argc, char **argv )
MAKE_KEYED_KAT( blake2sp, BLAKE2S );
MAKE_KAT( blake2bp, BLAKE2B );
MAKE_KEYED_KAT( blake2bp, BLAKE2B );
+ MAKE_XOF_KAT( blake2xs );
+ MAKE_XOF_KEYED_KAT( blake2xs, BLAKE2S );
+ MAKE_XOF_KAT( blake2xb );
+ MAKE_XOF_KEYED_KAT( blake2xb, BLAKE2B );
printf("\n]\n");
fflush(stdout);
return 0;
diff --git a/sse/makefile b/sse/makefile
index 5ff54d7..566de88 100644
--- a/sse/makefile
+++ b/sse/makefile
@@ -37,4 +37,4 @@ kat:
./genkat-json > blake2-kat.json
clean:
- rm -rf *.o genkat-c genkat-json $(BLAKE2BINS)
+ rm -rf *.o genkat-c genkat-json $(BLAKEBINS)