LIBKECCAK_UPDATE(3) Library Functions Manual LIBKECCAK_UPDATE(3) NAME libkeccak_update - Partially hash a message with erasure SYNOPSIS #include int libkeccak_update(struct libkeccak_state *state, const void *msg, size_t msglen); Link with -lkeccak. DESCRIPTION The libkeccak_update() function continues (or starts) hashing a message. The current state of the hashing is stored in *state, and will be updated. The message specified by the msg parameter with the byte-size specified by the msglen parameter, will be hashed. The libkeccak_update() function may reallocate the state's message chunk buffer. When doing so, it attempts to do so as securely as possible, rather than as fast as possible. RETURN VALUES The libkeccak_update() function returns 0 upon successful completion. On error, -1 is returned and errno is set to describe the error. ERRORS The libkeccak_update() function may fail for any reason specified by the function malloc(3). NOTES Neither parameter by be NULL or 0. EXAMPLE This example calculates the Keccak[b = 1024, c = 576, n = 256] hash of the input from stdin, and prints the hash, in hexadecimal form, to stdout. struct libkeccak_state state; struct libkeccak_spec spec; char binhash[256 / 8]; char hexhash[256 / 8 * 2 + 1]; char chunk[4 << 10]; ssize_t len; spec.bitrate = 1024; spec.capacity = 576; spec.output = 256; if (libkeccak_state_initialise(&state, &spec) < 0) goto fail; for (;;) { len = read(STDIN_FILENO, chunk, sizeof(chunk)); if ((len < 0) && (errno == EINTR)) continue; if (len < 0) goto fail; if (len == 0) break; if (libkeccak_update(&state, chunk, (size_t)len) < 0) goto fail; } if (libkeccak_digest(&state, NULL, 0, 0, "", binhash) < 0) goto fail; libkeccak_behex_lower(hexhash, binhash, sizeof(binhash)); printf("%s\n", hexhash); libkeccak_state_destroy(&state); NOTES For cSHAKE, the libkeccak_cshake_initialise(3), must be called, once, immediately after state initialisation; before the first call to the libkeccak_update() function. SEE ALSO libkeccak_state_initialise(3), libkeccak_cshake_initialise(3), libkeccak_fast_update(3), libkeccak_zerocopy_update(3), libkeccak_fast_digest(3), libkeccak_zerocopy_digest(3), libkeccak_digest(3) LIBKECCAK LIBKECCAK_UPDATE(3)