1=pod
2
3=head1 NAME
4
5EVP_MD-SHAKE, EVP_MD-KECCAK-KMAC
6- The SHAKE / KECCAK family EVP_MD implementations
7
8=head1 DESCRIPTION
9
10Support for computing SHAKE or KECCAK-KMAC digests through the
11B<EVP_MD> API.
12
13KECCAK-KMAC is a special digest that's used by the KMAC EVP_MAC
14implementation (see L<EVP_MAC-KMAC(7)>).
15
16=head2 Identities
17
18This implementation is available in the FIPS provider as well as the default
19provider, and includes the following varieties:
20
21=over 4
22
23=item KECCAK-KMAC-128
24
25Known names are "KECCAK-KMAC-128" and "KECCAK-KMAC128"
26This is used by L<EVP_MAC-KMAC128(7)>
27
28=item KECCAK-KMAC-256
29
30Known names are "KECCAK-KMAC-256" and "KECCAK-KMAC256"
31This is used by L<EVP_MAC-KMAC256(7)>
32
33=item SHAKE-128
34
35Known names are "SHAKE-128" and "SHAKE128"
36
37=item SHAKE-256
38
39Known names are "SHAKE-256" and "SHAKE256"
40
41=back
42
43=head2 Gettable Parameters
44
45This implementation supports the common gettable parameters described
46in L<EVP_MD-common(7)>.
47
48=head2 Settable Context Parameters
49
50These implementations support the following L<OSSL_PARAM(3)> entries,
51settable for an B<EVP_MD_CTX> with L<EVP_MD_CTX_set_params(3)>:
52
53=over 4
54
55=item "xoflen" (B<OSSL_DIGEST_PARAM_XOFLEN>) <unsigned integer>
56
57Sets the digest length for extendable output functions.
58The length of the "xoflen" parameter should not exceed that of a B<size_t>.
59
60For backwards compatibility reasons the default xoflen length for SHAKE-128 is
6116 (bytes) which results in a security strength of only 64 bits. To ensure the
62maximum security strength of 128 bits, the xoflen should be set to at least 32.
63
64For backwards compatibility reasons the default xoflen length for SHAKE-256 is
6532 (bytes) which results in a security strength of only 128 bits. To ensure the
66maximum security strength of 256 bits, the xoflen should be set to at least 64.
67
68=back
69
70=head1 SEE ALSO
71
72L<EVP_MD_CTX_set_params(3)>, L<provider-digest(7)>, L<OSSL_PROVIDER-default(7)>
73
74=head1 COPYRIGHT
75
76Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
77
78Licensed under the Apache License 2.0 (the "License").  You may not use
79this file except in compliance with the License.  You can obtain a copy
80in the file LICENSE in the source distribution or at
81L<https://www.openssl.org/source/license.html>.
82
83=cut
84