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:
Diffstat (limited to 'sse/genkat-c.c')
-rw-r--r--sse/genkat-c.c52
1 files changed, 51 insertions, 1 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;
}