diff options
author | Mattias Andrée <maandree@kth.se> | 2024-08-31 07:41:27 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2024-08-31 07:41:27 +0200 |
commit | d1acc40f9361cf5d1f0e92a0a2569b518b29b1cf (patch) | |
tree | a0538a97e06b8783f07eeed5cc3d686e3a8a686f /libhashsum_init_shake128_hasher.3 | |
parent | Add more tests + m fixes (diff) | |
download | libhashsum-d1acc40f9361cf5d1f0e92a0a2569b518b29b1cf.tar.gz libhashsum-d1acc40f9361cf5d1f0e92a0a2569b518b29b1cf.tar.bz2 libhashsum-d1acc40f9361cf5d1f0e92a0a2569b518b29b1cf.tar.xz |
Add support for extended hash + add support for output hash to custom buffer when supported
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libhashsum_init_shake128_hasher.3')
-rw-r--r-- | libhashsum_init_shake128_hasher.3 | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/libhashsum_init_shake128_hasher.3 b/libhashsum_init_shake128_hasher.3 index e69fabe..f852491 100644 --- a/libhashsum_init_shake128_hasher.3 +++ b/libhashsum_init_shake128_hasher.3 @@ -16,6 +16,7 @@ libhashsum_init_shake128_hasher - initialise state for SHAKE128 hashing size_t (*\fIprocess\fP)(struct libhashsum_hasher *\fPthis\fP, const void *\fPdata\fP, size_t \fPbytes\fP); int (*\fIfinalise_const\fP)(struct libhashsum_hasher *\fPthis\fP, const void *\fPdata\fP, size_t \fPbytes\fP, unsigned \fPextra_bits\fP); int (*\fIfinalise\fP)(struct libhashsum_hasher *\fPthis\fP, void *\fPdata\fP, size_t \fPbytes\fP, unsigned \fPextra_bits\fP, size_t \fPsize\fP); + void (*\fIstretch\fP)(struct libhashsum_hasher *\fPthis\fP, int \fPskip\fP, void *\fPbuffer\fP); void (*\fIdestroy\fP)(struct libhashsum_hasher *\fPthis\fP); union libhashsum_state { /* definition omitted */ } \fIstate\fP; }; @@ -106,7 +107,7 @@ no greater than .I hasher->finalise_const will be set to a pointer to the function to call once the entire text being hashed has been loaded, -and to get the hash of the text. It's parameter +and to get the hash of the text. Its parameter .I this shall be set to .IR hasher . @@ -132,8 +133,16 @@ to a pointer to a buffer in containing the binary hash of the processed data. Otherwise, the function will return -1, and set .I errno -to indicate the error. The function will failure -if: +to indicate the error. However, if the user has +already set +.I hasher->hash_output +to a +.RI non- NULL +pointer, the function will output the binary hash +to that pointer instead without redirecting +.I hasher->hash_output +(the application must make sure this buffer is +sufficiently large). The function will failure if: .RS .TP .B EINVAL @@ -165,6 +174,52 @@ shall be set to the size of the buffer is otherwise identical to .IR *hasher->finalise_const . .PP +.I hasher->stretch +will be set to +.IR NULL , +however upon successful completion of +.I *hasher->finalise +or +.IR *hasher->finalise_const , +.I hasher->stretch +will be set to point to a function that can be +used to extend the hash by +.I hasher->hash_size +bytes, and can be called repeated without limitation. +The hash extent will be written to a buffer in +.I hasher->state +(which +.I *hasher->finalize +and +.I *hasher->finalize_const +also write the hash to), and +.I hasher->hash_output +will be set to point to this buffer. +.IR *hasher->stretch 's +parameter +.I this +shall be +.IR hasher . +Its parameter +.I skip +can be set to non-zero if the hash extent should +be discarded +.RI ( hasher->hash_output +will not be set in this case). +Its parameter +.I buffer +shall be +.I NULL +for the above described behaviour, or an sufficiently +large buffer the function shall output the hash extent +to. If +.I buffer +is +.RI non- NULL , +.I hasher->hash_output +will be set to +.IR NULL ). +.PP .I hasher->destroy will be set to a pointer to a function to to call, with |