diff options
Diffstat (limited to '')
-rw-r--r-- | libhashsum_init_blake_hasher.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/libhashsum_init_blake_hasher.c b/libhashsum_init_blake_hasher.c index 645ab95..7b6d78e 100644 --- a/libhashsum_init_blake_hasher.c +++ b/libhashsum_init_blake_hasher.c @@ -4,17 +4,28 @@ int -libhashsum_init_blake_hasher(struct libhashsum_hasher *this, size_t hashbits) +libhashsum_init_blake_hasher(struct libhashsum_hasher *this, size_t hashbits, const void *salt, size_t salybytes) { + if (salt) { + if (hashbits == 224U || hashbits == 256U) { + if (salybytes != 16U) + goto einval; + } else if (hashbits == 384U || hashbits == 512U) { + if (salybytes != 32U) + goto einval; + } + } + if (hashbits == 224U) - return libhashsum_init_blake224_hasher(this); + return libhashsum_init_blake224_hasher(this, salt); if (hashbits == 256U) - return libhashsum_init_blake256_hasher(this); + return libhashsum_init_blake256_hasher(this, salt); if (hashbits == 384U) - return libhashsum_init_blake384_hasher(this); + return libhashsum_init_blake384_hasher(this, salt); if (hashbits == 512U) - return libhashsum_init_blake512_hasher(this); + return libhashsum_init_blake512_hasher(this, salt); +einval: errno = EINVAL; return -1; } @@ -22,10 +33,12 @@ libhashsum_init_blake_hasher(struct libhashsum_hasher *this, size_t hashbits) #else int -libhashsum_init_blake_hasher(struct libhashsum_hasher *this, size_t hashbits) +libhashsum_init_blake_hasher(struct libhashsum_hasher *this, size_t hashbits, const void *salt, size_t salybytes) { (void) this; (void) hashbits; + (void) salt; + (void) saltbytes; errno = ENOSYS; return -1; } |