SHAKE(3) Library Functions Manual SHAKE(3)

# [NAME](#NAME)

`SHAKE` — NIST FIPS PUB 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions

# [LIBRARY](#LIBRARY)

Message Digest (MD4, MD5, etc.) Support Library (libmd, -lmd)

# [SYNOPSIS](#SYNOPSIS)

`#include <sha3.h>`

`void`  
`SHAKE128_Init`(`SHAKE128_CTX *ctx`);

`void`  
`SHAKE128_Update`(`SHAKE128_CTX *ctx`, `const uint8_t *buf`, `size_t len`);

`void`  
`SHAKE128_Final`(`uint8_t *output[]`, `size_t outlen`, `SHAKE128_CTX *ctx`);

`void`  
`SHAKE256_Init`(`SHAKE256_CTX *ctx`);

`void`  
`SHAKE256_Update`(`SHAKE256_CTX *ctx`, `const uint8_t *buf`, `size_t len`);

`void`  
`SHAKE256_Final`(`uint8_t *output[]`, `size_t outlen`, `SHAKE256_CTX *ctx`);

# [DESCRIPTION](#DESCRIPTION)

The `SHAKE` functions implement the extendable-output functions of the NIST SHA-3 standard, FIPS PUB 202. The `SHAKE` functions absorb an arbitrary-length message m and yield an arbitrary-length output SHAKE128(m) or SHAKE256(m), truncated to a specified number of octets.

Before using the `SHAKE` functions, applications should first call [SHA3\_Selftest(3)](/man/os/libmd/SHA3_Selftest.3) and confirm that it succeeded.

Only the `SHAKE128` functions are specified in detail; the `SHAKE256` functions are analogous.

The caller must allocate memory for a `SHAKE128_CTX` object to hold the state of a SHAKE128 computation over a message. `SHAKE128_CTX` objects may be copied or relocated in memory.

[`SHAKE128_Init`](#SHAKE128_Init)(`ctx`)

Initialize a SHAKE128 context. Must be done before any other operations on `ctx`.

[`SHAKE128_Update`](#SHAKE128_Update)(`ctx`, `data`, `len`)

Append `len` octets at `data` to the message.

[`SHAKE128_Final`](#SHAKE128_Final)(`output`, `outlen`, `ctx`)

Store at `output` the first `outlen` octets of the SHAKE128 output for the message obtained by concatenating all prior inputs to `SHAKE128_Update`() on `ctx`.

Subsequent use of `ctx` is not allowed, unless it is reinitialized with [`SHAKE128_Init`](#SHAKE128_Init~2)().

# [SEE ALSO](#SEE_ALSO)

[sha3(3)](/man/os/libmd/sha3.3), [SHA3\_Selftest(3)](/man/os/libmd/SHA3_Selftest.3)

# [STANDARDS](#STANDARDS)

National Institute of Standards and Technology, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, August 2015, FIPS PUB 202.

# [AUTHORS](#AUTHORS)

Taylor R Campbell ⟨campbell+sha3@mumble.net⟩

October 14, 2015 Linux 4.19.0-gvisor

---

Document: shake(3) from libmd 1.3.0-r0 (Chainguard OS)
Source: https://gitlab.freedesktop.org/libbsd/libmd.git
