int blake2b_salt_personal( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen, const void *salt, const void *personal ) { blake2b_state S[1]; /* Verify parameters */ if( NULL == in && inlen > 0 ) abort(); if( NULL == out ) abort(); if( !outlen || outlen > BLAKE2B_OUTBYTES ) abort(); if( NULL == key && keylen > 0 ) abort(); if( keylen > BLAKE2B_KEYBYTES ) abort(); if( keylen > 0 ) { if( blake2b_init_key_salt_personal( S, outlen, key, keylen, salt, personal ) < 0 ) abort(); } else { if( blake2b_init_salt_personal( S, outlen, salt, personal ) < 0 ) abort(); } blake2b_update( S, ( const uint8_t * )in, inlen ); blake2b_final( S, out, outlen ); return 0; }
int blake2b_salt_personal( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen, const void *salt, const void *personal ) { blake2b_state S[1]; /* Verify parameters */ if ( NULL == in ) return -1; if ( NULL == out ) return -1; if( NULL == key ) keylen = 0; if( keylen > 0 ) { if( blake2b_init_key_salt_personal( S, outlen, key, keylen, salt, personal ) < 0 ) return -1; } else { if( blake2b_init_salt_personal( S, outlen, salt, personal ) < 0 ) return -1; } blake2b_update( S, ( const uint8_t * )in, inlen ); blake2b_final( S, out, outlen ); return 0; }
int crypto_generichash_blake2b_init_salt_personal( crypto_generichash_blake2b_state *state, const unsigned char *key, const size_t keylen, const size_t outlen, const unsigned char *salt, const unsigned char *personal) { if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || keylen > BLAKE2B_KEYBYTES) { return -1; } assert(outlen <= UINT8_MAX); assert(keylen <= UINT8_MAX); if (key == NULL || keylen <= 0U) { if (blake2b_init_salt_personal((blake2b_state *) (void *) state, (uint8_t) outlen, salt, personal) != 0) { return -1; /* LCOV_EXCL_LINE */ } } else if (blake2b_init_key_salt_personal((blake2b_state *) (void *) state, (uint8_t) outlen, key, (uint8_t) keylen, salt, personal) != 0) { return -1; /* LCOV_EXCL_LINE */ } return 0; }