1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-21 23:18:13 +00:00

blake2b: Add init with personal key

Necessary for zcash hashing
This commit is contained in:
Karel Bilek 2018-06-14 04:08:33 +02:00 committed by Pavol Rusnak
parent dba2361728
commit a4c1d02865
2 changed files with 21 additions and 0 deletions

View File

@ -131,6 +131,26 @@ int blake2b_Init( blake2b_state *S, size_t outlen )
return blake2b_init_param( S, P );
}
int blake2b_InitPersonal( blake2b_state *S, size_t outlen, const void *personal )
{
blake2b_param P[1];
if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1;
P->digest_length = (uint8_t)outlen;
P->key_length = 0;
P->fanout = 1;
P->depth = 1;
store32( &P->leaf_length, 0 );
store32( &P->node_offset, 0 );
store32( &P->xof_length, 0 );
P->node_depth = 0;
P->inner_length = 0;
memset( P->reserved, 0, sizeof( P->reserved ) );
memset( P->salt, 0, sizeof( P->salt ) );
memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES );
return blake2b_init_param( S, P );
}
int blake2b_InitKey( blake2b_state *S, size_t outlen, const void *key, size_t keylen )
{

View File

@ -30,6 +30,7 @@ typedef struct __blake2b_state
#define BLAKE2B_KEY_LENGTH BLAKE2B_KEYBYTES
int blake2b_Init(blake2b_state *S, size_t outlen);
int blake2b_InitPersonal(blake2b_state *S, size_t outlen, const void *personal);
int blake2b_InitKey(blake2b_state *S, size_t outlen, const void *key, size_t keylen);
int blake2b_Update(blake2b_state *S, const void *pin, size_t inlen);
int blake2b_Final(blake2b_state *S, void *out, size_t outlen);