sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/crypto/sha3modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/crypto/sha3modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/crypto/sha3modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/crypto/sha3modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/crypto/sha3modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/crypto/sha3modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh9/var/lib/git/docbuild/linux/Documentation/crypto/sha3.rsthKubhsection)}(hhh](htitle)}(hSHA-3 Algorithm Collectionh]hSHA-3 Algorithm Collection}(hhhhhNhNubah}(h]h ]h"]h$]h&]refidid3uh1hhhhhhhhKubhtopic)}(h Contents h](h)}(hContentsh]hContents}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh bullet_list)}(hhh]h list_item)}(hhh](h paragraph)}(hhh]h reference)}(hhh]hSHA-3 Algorithm Collection}(hhhhhNhNubah}(h]hah ]h"]h$]h&]refidsha-3-algorithm-collectionuh1hhhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hhh](h)}(hhh]h)}(hhh]h)}(hhh]hOverview}(hjhhhNhNubah}(h]id4ah ]h"]h$]h&]refidoverviewuh1hhj ubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hDigests}(hj0hhhNhNubah}(h]id5ah ]h"]h$]h&]refiddigestsuh1hhj-ubah}(h]h ]h"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hExtendable-Output Functions}(hjRhhhNhNubah}(h]id6ah ]h"]h$]h&]refidextendable-output-functionsuh1hhjOubah}(h]h ]h"]h$]h&]uh1hhjLubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hTesting}(hjthhhNhNubah}(h]id7ah ]h"]h$]h&]refidtestinguh1hhjqubah}(h]h ]h"]h$]h&]uh1hhjnubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]h References}(hjhhhNhNubah}(h]id8ah ]h"]h$]h&]refid referencesuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hAPI Function Reference}(hjhhhNhNubah}(h]id9ah ]h"]h$]h&]refidapi-function-referenceuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubeh}(h]contentsah ]contentsah"]contentsah$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hOverviewh]hOverview}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK ubh)}(hXThe SHA-3 family of algorithms, as specified in NIST FIPS-202 [1]_, contains six algorithms based on the Keccak sponge function. The differences between them are: the "rate" (how much of the state buffer gets updated with new data between invocations of the Keccak function and analogous to the "block size"), what domain separation suffix gets appended to the input data, and how much output data is extracted at the end. The Keccak sponge function is designed such that arbitrary amounts of output can be obtained for certain algorithms.h](h>The SHA-3 family of algorithms, as specified in NIST FIPS-202 }(hjhhhNhNubhfootnote_reference)}(h[1]_h]h1}(hj hhhNhNubah}(h]id1ah ]h"]h$]h&]hɌid2docname crypto/sha3uh1jhjresolvedKubhX, contains six algorithms based on the Keccak sponge function. The differences between them are: the “rate” (how much of the state buffer gets updated with new data between invocations of the Keccak function and analogous to the “block size”), what domain separation suffix gets appended to the input data, and how much output data is extracted at the end. The Keccak sponge function is designed such that arbitrary amounts of output can be obtained for certain algorithms.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjhhubh)}(h$Four digest algorithms are provided:h]h$Four digest algorithms are provided:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(h,- SHA3-224 - SHA3-256 - SHA3-384 - SHA3-512 h]h)}(hhh](h)}(hSHA3-224h]h)}(hj@h]hSHA3-224}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1hhj;ubh)}(hSHA3-256h]h)}(hjWh]hSHA3-256}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjUubah}(h]h ]h"]h$]h&]uh1hhj;ubh)}(hSHA3-384h]h)}(hjnh]hSHA3-384}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjlubah}(h]h ]h"]h$]h&]uh1hhj;ubh)}(h SHA3-512 h]h)}(hSHA3-512h]hSHA3-512}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1j5hhhKhjhhubh)}(hBAdditionally, two Extendable-Output Functions (XOFs) are provided:h]hBAdditionally, two Extendable-Output Functions (XOFs) are provided:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj6)}(h- SHAKE128 - SHAKE256 h]h)}(hhh](h)}(hSHAKE128h]h)}(hjh]hSHAKE128}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h SHAKE256 h]h)}(hSHAKE256h]hSHAKE256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j5hhhKhjhhubh)}(hThe SHA-3 library API supports all six of these algorithms. The four digest algorithms are also supported by the crypto_shash and crypto_ahash APIs.h]hThe SHA-3 library API supports all six of these algorithms. The four digest algorithms are also supported by the crypto_shash and crypto_ahash APIs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjhhubh)}(h.This document describes the SHA-3 library API.h]h.This document describes the SHA-3 library API.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjhhubeh}(h]jah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hDigestsh]hDigests}(hjhhhNhNubah}(h]h ]h"]h$]h&]hj9uh1hhjhhhhhK'ubh)}(h/The following functions compute SHA-3 digests::h]h.The following functions compute SHA-3 digests:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh literal_block)}(hX'void sha3_224(const u8 *in, size_t in_len, u8 out[SHA3_224_DIGEST_SIZE]); void sha3_256(const u8 *in, size_t in_len, u8 out[SHA3_256_DIGEST_SIZE]); void sha3_384(const u8 *in, size_t in_len, u8 out[SHA3_384_DIGEST_SIZE]); void sha3_512(const u8 *in, size_t in_len, u8 out[SHA3_512_DIGEST_SIZE]);h]hX'void sha3_224(const u8 *in, size_t in_len, u8 out[SHA3_224_DIGEST_SIZE]); void sha3_256(const u8 *in, size_t in_len, u8 out[SHA3_256_DIGEST_SIZE]); void sha3_384(const u8 *in, size_t in_len, u8 out[SHA3_384_DIGEST_SIZE]); void sha3_512(const u8 *in, size_t in_len, u8 out[SHA3_512_DIGEST_SIZE]);}hj=sbah}(h]h ]h"]h$]h&]hhuh1j;hhhK+hjhhubh)}(hFor users that need to pass in data incrementally, an incremental API is also provided. The incremental API uses the following struct::h]hFor users that need to pass in data incrementally, an incremental API is also provided. The incremental API uses the following struct:}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjhhubj<)}(hstruct sha3_ctx { ... };h]hstruct sha3_ctx { ... };}hjYsbah}(h]h ]h"]h$]h&]hhuh1j;hhhK3hjhhubh)}(h$Initialization is done with one of::h]h#Initialization is done with one of:}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubj<)}(hvoid sha3_224_init(struct sha3_ctx *ctx); void sha3_256_init(struct sha3_ctx *ctx); void sha3_384_init(struct sha3_ctx *ctx); void sha3_512_init(struct sha3_ctx *ctx);h]hvoid sha3_224_init(struct sha3_ctx *ctx); void sha3_256_init(struct sha3_ctx *ctx); void sha3_384_init(struct sha3_ctx *ctx); void sha3_512_init(struct sha3_ctx *ctx);}hjusbah}(h]h ]h"]h$]h&]hhuh1j;hhhK7hjhhubh)}(h6Input data is then added with any number of calls to::h]h5Input data is then added with any number of calls to:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h(Finally, the digest is generated using::h]h'Finally, the digest is generated using:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjhhubj<)}(h/void sha3_final(struct sha3_ctx *ctx, u8 *out);h]h/void sha3_final(struct sha3_ctx *ctx, u8 *out);}hjsbah}(h]h ]h"]h$]h&]hhuh1j;hhhKBhjhhubh)}(hxwhich also zeroizes the context. The length of the digest is determined by the initialization function that was called.h]hxwhich also zeroizes the context. The length of the digest is determined by the initialization function that was called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjhhubeh}(h]j?ah ]h"]digestsah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(hExtendable-Output Functionsh]hExtendable-Output Functions}(hjhhhNhNubah}(h]h ]h"]h$]h&]hj[uh1hhjhhhhhKIubh)}(hNThe following functions compute the SHA-3 extendable-output functions (XOFs)::h]hMThe following functions compute the SHA-3 extendable-output functions (XOFs):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubj<)}(hvoid shake128(const u8 *in, size_t in_len, u8 *out, size_t out_len); void shake256(const u8 *in, size_t in_len, u8 *out, size_t out_len);h]hvoid shake128(const u8 *in, size_t in_len, u8 *out, size_t out_len); void shake256(const u8 *in, size_t in_len, u8 *out, size_t out_len);}hjsbah}(h]h ]h"]h$]h&]hhuh1j;hhhKMhjhhubh)}(hFor users that need to provide the input data incrementally and/or receive the output data incrementally, an incremental API is also provided. The incremental API uses the following struct::h]hFor users that need to provide the input data incrementally and/or receive the output data incrementally, an incremental API is also provided. The incremental API uses the following struct:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjhhubj<)}(hstruct shake_ctx { ... };h]hstruct shake_ctx { ... };}hj sbah}(h]h ]h"]h$]h&]hhuh1j;hhhKThjhhubh)}(h$Initialization is done with one of::h]h#Initialization is done with one of:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjhhubj<)}(hUvoid shake128_init(struct shake_ctx *ctx); void shake256_init(struct shake_ctx *ctx);h]hUvoid shake128_init(struct shake_ctx *ctx); void shake256_init(struct shake_ctx *ctx);}hj'sbah}(h]h ]h"]h$]h&]hhuh1j;hhhKXhjhhubh)}(h6Input data is then added with any number of calls to::h]h5Input data is then added with any number of calls to:}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjhhubj<)}(hFvoid shake_update(struct shake_ctx *ctx, const u8 *in, size_t in_len);h]hFvoid shake_update(struct shake_ctx *ctx, const u8 *in, size_t in_len);}hjCsbah}(h]h ]h"]h$]h&]hhuh1j;hhhK]hjhhubh)}(hCFinally, the output data is extracted with any number of calls to::h]hBFinally, the output data is extracted with any number of calls to:}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjhhubj<)}(hCvoid shake_squeeze(struct shake_ctx *ctx, u8 *out, size_t out_len);h]hCvoid shake_squeeze(struct shake_ctx *ctx, u8 *out, size_t out_len);}hj_sbah}(h]h ]h"]h$]h&]hhuh1j;hhhKahjhhubh)}(hand telling it how much data should be extracted. Note that performing multiple squeezes, with the output laid consecutively in a buffer, gets exactly the same output as doing a single squeeze for the combined amount over the same buffer.h]hand telling it how much data should be extracted. Note that performing multiple squeezes, with the output laid consecutively in a buffer, gets exactly the same output as doing a single squeeze for the combined amount over the same buffer.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjhhubh)}(hhj-hhhNhNubhdesc)}(hhh](hdesc_signature)}(hsha3_ctxh]hdesc_signature_line)}(hstruct sha3_ctxh](hdesc_sig_keyword)}(hstructh]hstruct}(hjbhhhNhNubah}(h]h ]kah"]h$]h&]uh1j`hj\hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubhdesc_sig_space)}(h h]h }(hjthhhNhNubah}(h]h ]wah"]h$]h&]uh1jrhj\hhhjqhKubh desc_name)}(hsha3_ctxh]h desc_sig_name)}(hjXh]hsha3_ctx}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhj\hhhjqhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jZsphinx_line_type declaratorhjVhhhjqhKubah}(h]jMah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jThjqhKhjQhhubh desc_content)}(hhh]h)}(h5Context for SHA3-224, SHA3-256, SHA3-384, or SHA3-512h]h5Context for SHA3-224, SHA3-256, SHA3-384, or SHA3-512}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKFhjhhubah}(h]h ]h"]h$]h&]uh1jhjQhhhjqhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jOhhhj-hNhNubh container)}(hg**Definition**:: struct sha3_ctx { struct __sha3_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKJhjubj<)}(h/struct sha3_ctx { struct __sha3_ctx ctx; };h]h/struct sha3_ctx { struct __sha3_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1j;hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKLhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKPhjubhdefinition_list)}(hhh]hdefinition_list_item)}(h``ctx`` privateh](hterm)}(h``ctx``h]hliteral)}(hj8h]hctx}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj6ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKGhj0ubh definition)}(hhh]h)}(hprivateh]hprivate}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKHhjRubah}(h]h ]h"]h$]h&]uh1jPhj0ubeh}(h]h ]h"]h$]h&]uh1j.hjOhKGhj+ubah}(h]h ]h"]h$]h&]uh1j)hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_zeroize_ctx (C function)c.sha3_zeroize_ctxhNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h,void sha3_zeroize_ctx (struct sha3_ctx *ctx)h]j[)}(h+void sha3_zeroize_ctx(struct sha3_ctx *ctx)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKNubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhjhKNubj)}(hsha3_zeroize_ctxh]j)}(hsha3_zeroize_ctxh]hsha3_zeroize_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKNubhdesc_parameterlist)}(h(struct sha3_ctx *ctx)h]hdesc_parameter)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjsbc.sha3_zeroize_ctxasbuh1hhjubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubhdesc_sig_punctuation)}(h*h]h*}(hj0hhhNhNubah}(h]h ]pah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKNubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhjhKNubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThjhKNhjhhubj)}(hhh]h)}(hZeroize a SHA-3 contexth]hZeroize a SHA-3 context}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKNhjfhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct sha3_ctx *ctx`` The context to zeroize **Description** This is already called by sha3_final(). Call this explicitly when abandoning a context without calling sha3_final().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKRhjubj*)}(hhh]j/)}(h0``struct sha3_ctx *ctx`` The context to zeroize h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hjh]hstruct sha3_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKOhjubjQ)}(hhh]h)}(hThe context to zeroizeh]hThe context to zeroize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKOhjubah}(h]h ]h"]h$]h&]uh1j)hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKQhjubh)}(huThis is already called by sha3_final(). Call this explicitly when abandoning a context without calling sha3_final().h]huThis is already called by sha3_final(). Call this explicitly when abandoning a context without calling sha3_final().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKPhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake_ctx (C struct) c.shake_ctxhNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h shake_ctxh]j[)}(hstruct shake_ctxh](ja)}(hjdh]hstruct}(hj*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj&hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKVubjs)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj&hhhj7hKVubj)}(h shake_ctxh]j)}(hj$h]h shake_ctx}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubah}(h]h ](jjeh"]h$]h&]hhuh1jhj&hhhj7hKVubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj"hhhj7hKVubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThj7hKVhjhhubj)}(hhh]h)}(h Context for SHAKE128 or SHAKE256h]h Context for SHAKE128 or SHAKE256}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKZhjihhubah}(h]h ]h"]h$]h&]uh1jhjhhhj7hKVubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(hh**Definition**:: struct shake_ctx { struct __sha3_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK^hjubj<)}(h0struct shake_ctx { struct __sha3_ctx ctx; };h]h0struct shake_ctx { struct __sha3_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1j;hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK`hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKdhjubj*)}(hhh]j/)}(h``ctx`` privateh](j5)}(h``ctx``h]j;)}(hjh]hctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK[hjubjQ)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK\hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhK[hjubah}(h]h ]h"]h$]h&]uh1j)hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake_zeroize_ctx (C function)c.shake_zeroize_ctxhNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h.void shake_zeroize_ctx (struct shake_ctx *ctx)h]j[)}(h-void shake_zeroize_ctx(struct shake_ctx *ctx)h](j)}(hvoidh]hvoid}(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKbubjs)}(h h]h }(hjB hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj/ hhhjA hKbubj)}(hshake_zeroize_ctxh]j)}(hshake_zeroize_ctxh]hshake_zeroize_ctx}(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjP ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj/ hhhjA hKbubj)}(h(struct shake_ctx *ctx)h]j)}(hstruct shake_ctx *ctxh](ja)}(hjdh]hstruct}(hjp hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjl ubjs)}(h h]h }(hj} hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjl ubh)}(hhh]j)}(h shake_ctxh]h shake_ctx}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjV sbc.shake_zeroize_ctxasbuh1hhjl ubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjl ubj/)}(hj2h]h*}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjl ubj)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjh ubah}(h]h ]h"]h$]h&]hhuh1jhj/ hhhjA hKbubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj+ hhhjA hKbubah}(h]j& ah ](jjeh"]h$]h&]jj)jhuh1jThjA hKbhj( hhubj)}(hhh]h)}(hZeroize a SHAKE contexth]hZeroize a SHAKE context}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKbhj hhubah}(h]h ]h"]h$]h&]uh1jhj( hhhjA hKbubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jOhhhj-hNhNubj)}(hv**Parameters** ``struct shake_ctx *ctx`` The context to zeroize **Description** Call this after the last squeeze.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKfhj ubj*)}(hhh]j/)}(h1``struct shake_ctx *ctx`` The context to zeroize h](j5)}(h``struct shake_ctx *ctx``h]j;)}(hj4 h]hstruct shake_ctx *ctx}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj2 ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKchj. ubjQ)}(hhh]h)}(hThe context to zeroizeh]hThe context to zeroize}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI hKchjJ ubah}(h]h ]h"]h$]h&]uh1jPhj. ubeh}(h]h ]h"]h$]h&]uh1j.hjI hKchj+ ubah}(h]h ]h"]h$]h&]uh1j)hj ubh)}(h**Description**h]j)}(hjo h]h Description}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKehj ubh)}(h!Call this after the last squeeze.h]h!Call this after the last squeeze.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKdhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_224_init (C function)c.sha3_224_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h)void sha3_224_init (struct sha3_ctx *ctx)h]j[)}(h(void sha3_224_init(struct sha3_ctx *ctx)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKmubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj hhhj hKmubj)}(h sha3_224_inith]j)}(h sha3_224_inith]h sha3_224_init}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hKmubj)}(h(struct sha3_ctx *ctx)h]j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj ubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj ubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.sha3_224_initasbuh1hhj ubjs)}(h h]h }(hj/ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj ubj/)}(hj2h]h*}(hj= hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj ubj)}(hctxh]hctx}(hjJ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKmubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj hhhj hKmubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jThj hKmhj hhubj)}(hhh]h)}(h!Initialize a context for SHA3-224h]h!Initialize a context for SHA3-224}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKmhjq hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKmubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct sha3_ctx *ctx`` The context to initialize **Description** This begins a new SHA3-224 message digest computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKqhj ubj*)}(hhh]j/)}(h3``struct sha3_ctx *ctx`` The context to initialize h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hj h]hstruct sha3_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKnhj ubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKnhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubeh}(h]h ]h"]h$]h&]uh1j.hj hKnhj ubah}(h]h ]h"]h$]h&]uh1j)hj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKphj ubh)}(h6This begins a new SHA3-224 message digest computation.h]h6This begins a new SHA3-224 message digest computation.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKohj ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKqhj ubh)}(h Any context.h]h Any context.}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKrhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_256_init (C function)c.sha3_256_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h)void sha3_256_init (struct sha3_ctx *ctx)h]j[)}(h(void sha3_256_init(struct sha3_ctx *ctx)h](j)}(hvoidh]hvoid}(hj\ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK}ubjs)}(h h]h }(hjk hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjX hhhjj hK}ubj)}(h sha3_256_inith]j)}(h sha3_256_inith]h sha3_256_init}(hj} hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjX hhhjj hK}ubj)}(h(struct sha3_ctx *ctx)h]j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj ubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj ubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.sha3_256_initasbuh1hhj ubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj ubj/)}(hj2h]h*}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj ubj)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjX hhhjj hK}ubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjT hhhjj hK}ubah}(h]jO ah ](jjeh"]h$]h&]jj)jhuh1jThjj hK}hjQ hhubj)}(hhh]h)}(h!Initialize a context for SHA3-256h]h!Initialize a context for SHA3-256}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK}hj hhubah}(h]h ]h"]h$]h&]uh1jhjQ hhhjj hK}ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4 jj4 jjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct sha3_ctx *ctx`` The context to initialize **Description** This begins a new SHA3-256 message digest computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj> h]h Parameters}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj< ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj8 ubj*)}(hhh]j/)}(h3``struct sha3_ctx *ctx`` The context to initialize h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hj] h]hstruct sha3_ctx *ctx}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj[ ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhK~hjW ubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr hK~hjs ubah}(h]h ]h"]h$]h&]uh1jPhjW ubeh}(h]h ]h"]h$]h&]uh1j.hjr hK~hjT ubah}(h]h ]h"]h$]h&]uh1j)hj8 ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj8 ubh)}(h6This begins a new SHA3-256 message digest computation.h]h6This begins a new SHA3-256 message digest computation.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj8 ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj8 ubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj8 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_384_init (C function)c.sha3_384_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h)void sha3_384_init (struct sha3_ctx *ctx)h]j[)}(h(void sha3_384_init(struct sha3_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhjhKubj)}(h sha3_384_inith]j)}(h sha3_384_inith]h sha3_384_init}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(struct sha3_ctx *ctx)h]j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hjAhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj=ubjs)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj=ubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jj'sbc.sha3_384_initasbuh1hhj=ubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj=ubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj=ubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj hhhjhKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jThjhKhj hhubj)}(hhh]h)}(h!Initialize a context for SHA3-384h]h!Initialize a context for SHA3-384}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct sha3_ctx *ctx`` The context to initialize **Description** This begins a new SHA3-384 message digest computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubj*)}(hhh]j/)}(h3``struct sha3_ctx *ctx`` The context to initialize h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hjh]hstruct sha3_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1j)hjubh)}(h**Description**h]j)}(hj@h]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h6This begins a new SHA3-384 message digest computation.h]h6This begins a new SHA3-384 message digest computation.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h **Context**h]j)}(hjgh]hContext}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h Any context.h]h Any context.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_512_init (C function)c.sha3_512_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h)void sha3_512_init (struct sha3_ctx *ctx)h]j[)}(h(void sha3_512_init(struct sha3_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhjhKubj)}(h sha3_512_inith]j)}(h sha3_512_inith]h sha3_512_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(struct sha3_ctx *ctx)h]j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.sha3_512_initasbuh1hhjubjs)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hj5hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThjhKhjhhubj)}(hhh]h)}(h!Initialize a context for SHA3-512h]h!Initialize a context for SHA3-512}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjihhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct sha3_ctx *ctx`` The context to initialize **Description** This begins a new SHA3-512 message digest computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubj*)}(hhh]j/)}(h3``struct sha3_ctx *ctx`` The context to initialize h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hjh]hstruct sha3_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1j)hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h6This begins a new SHA3-512 message digest computation.h]h6This begins a new SHA3-512 message digest computation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h Any context.h]h Any context.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_update (C function) c.sha3_updatehNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hDvoid sha3_update (struct sha3_ctx *ctx, const u8 *in, size_t in_len)h]j[)}(hCvoid sha3_update(struct sha3_ctx *ctx, const u8 *in, size_t in_len)h](j)}(hvoidh]hvoid}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjPhhhjbhKubj)}(h sha3_updateh]j)}(h sha3_updateh]h sha3_update}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubah}(h]h ](jjeh"]h$]h&]hhuh1jhjPhhhjbhKubj)}(h3(struct sha3_ctx *ctx, const u8 *in, size_t in_len)h](j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjwsb c.sha3_updateasbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h const u8 *inh](ja)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(hu8h]hu8}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j c.sha3_updateasbuh1hhjubjs)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjNhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hinh]hin}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]j c.sha3_updateasbuh1hhjpubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjpubj)}(hin_lenh]hin_len}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjPhhhjbhKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjLhhhjbhKubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1jThjbhKhjIhhubj)}(hhh]h)}(h-Update a SHA-3 digest context with input datah]h-Update a SHA-3 digest context with input data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjbhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(hX{**Parameters** ``struct sha3_ctx *ctx`` The context to update; must have been initialized ``const u8 *in`` The input data ``size_t in_len`` Length of the input data in bytes **Description** This can be called any number of times to add data to a SHA3-224, SHA3-256, SHA3-384, or SHA3-512 digest (depending on which init function was called). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubj*)}(hhh](j/)}(hK``struct sha3_ctx *ctx`` The context to update; must have been initialized h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hjh]hstruct sha3_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(h1The context to update; must have been initializedh]h1The context to update; must have been initialized}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hKhj$ubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hj#hKhjubj/)}(h ``const u8 *in`` The input data h](j5)}(h``const u8 *in``h]j;)}(hjGh]h const u8 *in}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjEubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjAubjQ)}(hhh]h)}(hThe input datah]hThe input data}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj]ubah}(h]h ]h"]h$]h&]uh1jPhjAubeh}(h]h ]h"]h$]h&]uh1j.hj\hKhjubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hjh]h size_t in_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj~ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjzubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjzubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjubeh}(h]h ]h"]h$]h&]uh1j)hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(hThis can be called any number of times to add data to a SHA3-224, SHA3-256, SHA3-384, or SHA3-512 digest (depending on which init function was called).h]hThis can be called any number of times to add data to a SHA3-224, SHA3-256, SHA3-384, or SHA3-512 digest (depending on which init function was called).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_final (C function) c.sha3_finalhNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h/void sha3_final (struct sha3_ctx *ctx, u8 *out)h]j[)}(h.void sha3_final(struct sha3_ctx *ctx, u8 *out)h](j)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj#hhhj5hKubj)}(h sha3_finalh]j)}(h sha3_finalh]h sha3_final}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ](jjeh"]h$]h&]hhuh1jhj#hhhj5hKubj)}(h(struct sha3_ctx *ctx, u8 *out)h](j)}(hstruct sha3_ctx *ctxh](ja)}(hjdh]hstruct}(hjdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`ubjs)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj`ubh)}(hhh]j)}(hsha3_ctxh]hsha3_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjJsb c.sha3_finalasbuh1hhj`ubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj`ubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj`ubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hu8 *outh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.sha3_finalasbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(houth]hout}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubeh}(h]h ]h"]h$]h&]hhuh1jhj#hhhj5hKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhj5hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThj5hKhjhhubj)}(hhh]h)}(h'Finish computing a SHA-3 message digesth]h'Finish computing a SHA-3 message digest}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj9hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj5hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``struct sha3_ctx *ctx`` The context to finalize; must have been initialized ``u8 *out`` (output) The resulting SHA3-224, SHA3-256, SHA3-384, or SHA3-512 message digest, matching the init function that was called. Note that the size differs for each one; see SHA3_*_DIGEST_SIZE. **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjXubj*)}(hhh](j/)}(hM``struct sha3_ctx *ctx`` The context to finalize; must have been initialized h](j5)}(h``struct sha3_ctx *ctx``h]j;)}(hj}h]hstruct sha3_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj{ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjwubjQ)}(hhh]h)}(h3The context to finalize; must have been initializedh]h3The context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjwubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjtubj/)}(h``u8 *out`` (output) The resulting SHA3-224, SHA3-256, SHA3-384, or SHA3-512 message digest, matching the init function that was called. Note that the size differs for each one; see SHA3_*_DIGEST_SIZE. h](j5)}(h ``u8 *out``h]j;)}(hjh]hu8 *out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(h(output) The resulting SHA3-224, SHA3-256, SHA3-384, or SHA3-512 message digest, matching the init function that was called. Note that the size differs for each one; see SHA3_*_DIGEST_SIZE.h]h(output) The resulting SHA3-224, SHA3-256, SHA3-384, or SHA3-512 message digest, matching the init function that was called. Note that the size differs for each one; see SHA3_*_DIGEST_SIZE.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjtubeh}(h]h ]h"]h$]h&]uh1j)hjXubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjXubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjhhhNhNubj)}(h**ctx**h]hctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(. So the caller does not need to do it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjXubh)}(h **Context**h]j)}(hj+h]hContext}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjXubh)}(h Any context.h]h Any context.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake128_init (C function)c.shake128_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h*void shake128_init (struct shake_ctx *ctx)h]j[)}(h)void shake128_init(struct shake_ctx *ctx)h](j)}(hvoidh]hvoid}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjlhhhj~hKubj)}(h shake128_inith]j)}(h shake128_inith]h shake128_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjlhhhj~hKubj)}(h(struct shake_ctx *ctx)h]j)}(hstruct shake_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(h shake_ctxh]h shake_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.shake128_initasbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjlhhhj~hKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhhj~hKubah}(h]jcah ](jjeh"]h$]h&]jj)jhuh1jThj~hKhjehhubj)}(hhh]h)}(h!Initialize a context for SHAKE128h]h!Initialize a context for SHAKE128}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj-hhubah}(h]h ]h"]h$]h&]uh1jhjehhhj~hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct shake_ctx *ctx`` The context to initialize **Description** This begins a new SHAKE128 extendable-output function (XOF) computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjLubj*)}(hhh]j/)}(h4``struct shake_ctx *ctx`` The context to initialize h](j5)}(h``struct shake_ctx *ctx``h]j;)}(hjqh]hstruct shake_ctx *ctx}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjoubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjkubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjkubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjhubah}(h]h ]h"]h$]h&]uh1j)hjLubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjLubh)}(hHThis begins a new SHAKE128 extendable-output function (XOF) computation.h]hHThis begins a new SHAKE128 extendable-output function (XOF) computation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjLubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjLubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake256_init (C function)c.shake256_inithNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(h*void shake256_init (struct shake_ctx *ctx)h]j[)}(h)void shake256_init(struct shake_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhj&hKubj)}(h shake256_inith]j)}(h shake256_inith]h shake256_init}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj&hKubj)}(h(struct shake_ctx *ctx)h]j)}(hstruct shake_ctx *ctxh](ja)}(hjdh]hstruct}(hjUhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjQubjs)}(h h]h }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjQubh)}(hhh]j)}(h shake_ctxh]h shake_ctx}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}jj;sbc.shake256_initasbuh1hhjQubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjQubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjQubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj&hKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhj&hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jThj&hKhj hhubj)}(hhh]h)}(h!Initialize a context for SHAKE256h]h!Initialize a context for SHAKE256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj&hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(h**Parameters** ``struct shake_ctx *ctx`` The context to initialize **Description** This begins a new SHAKE256 extendable-output function (XOF) computation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubj*)}(hhh]j/)}(h4``struct shake_ctx *ctx`` The context to initialize h](j5)}(h``struct shake_ctx *ctx``h]j;)}(hjh]hstruct shake_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hKhj/ubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hj.hKhjubah}(h]h ]h"]h$]h&]uh1j)hjubh)}(h**Description**h]j)}(hjTh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(hHThis begins a new SHAKE256 extendable-output function (XOF) computation.h]hHThis begins a new SHAKE256 extendable-output function (XOF) computation.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h **Context**h]j)}(hj{h]hContext}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake_update (C function)c.shake_updatehNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hFvoid shake_update (struct shake_ctx *ctx, const u8 *in, size_t in_len)h]j[)}(hEvoid shake_update(struct shake_ctx *ctx, const u8 *in, size_t in_len)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhjhKubj)}(h shake_updateh]j)}(h shake_updateh]h shake_update}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h4(struct shake_ctx *ctx, const u8 *in, size_t in_len)h](j)}(hstruct shake_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(h shake_ctxh]h shake_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.shake_updateasbuh1hhjubjs)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjIhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h const u8 *inh](ja)}(hjh]hconst}(hjohhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubjs)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjkubh)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j7c.shake_updateasbuh1hhjkubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjkubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjkubj)}(hinh]hin}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j7c.shake_updateasbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj)}(hin_lenh]hin_len}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThjhKhjhhubj)}(hhh]h)}(h&Update a SHAKE context with input datah]h&Update a SHAKE context with input data}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj5hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjPjjPjjjuh1jOhhhj-hNhNubj)}(hXm**Parameters** ``struct shake_ctx *ctx`` The context to update; must have been initialized ``const u8 *in`` The input data ``size_t in_len`` Length of the input data in bytes **Description** This can be called any number of times to add more input data to SHAKE128 or SHAKE256. This cannot be called after squeezing has begun. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjZh]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjTubj*)}(hhh](j/)}(hL``struct shake_ctx *ctx`` The context to update; must have been initialized h](j5)}(h``struct shake_ctx *ctx``h]j;)}(hjyh]hstruct shake_ctx *ctx}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjwubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjsubjQ)}(hhh]h)}(h1The context to update; must have been initializedh]h1The context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjsubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjpubj/)}(h ``const u8 *in`` The input data h](j5)}(h``const u8 *in``h]j;)}(hjh]h const u8 *in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(hThe input datah]hThe input data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjpubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hjh]h size_t in_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhjpubeh}(h]h ]h"]h$]h&]uh1j)hjTubh)}(h**Description**h]j)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjTubh)}(hThis can be called any number of times to add more input data to SHAKE128 or SHAKE256. This cannot be called after squeezing has begun.h]hThis can be called any number of times to add more input data to SHAKE128 or SHAKE256. This cannot be called after squeezing has begun.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjTubh)}(h **Context**h]j)}(hjMh]hContext}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjTubh)}(h Any context.h]h Any context.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake_squeeze (C function)c.shake_squeezehNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hCvoid shake_squeeze (struct shake_ctx *ctx, u8 *out, size_t out_len)h]j[)}(hBvoid shake_squeeze(struct shake_ctx *ctx, u8 *out, size_t out_len)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjhhhjhKubj)}(h shake_squeezeh]j)}(h shake_squeezeh]h shake_squeeze}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h0(struct shake_ctx *ctx, u8 *out, size_t out_len)h](j)}(hstruct shake_ctx *ctxh](ja)}(hjdh]hstruct}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(h shake_ctxh]h shake_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.shake_squeezeasbuh1hhjubjs)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hctxh]hctx}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 *outh](h)}(hhh]j)}(hu8h]hu8}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]j c.shake_squeezeasbuh1hhj=ubjs)}(h h]h }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj=ubj/)}(hj2h]h*}(hjphhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj=ubj)}(houth]hout}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t out_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.shake_squeezeasbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj)}(hout_lenh]hout_len}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jThjhKhjhhubj)}(hhh]h)}(h)Generate output from SHAKE128 or SHAKE256h]h)Generate output from SHAKE128 or SHAKE256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jOhhhj-hNhNubj)}(hX'**Parameters** ``struct shake_ctx *ctx`` The context to squeeze; must have been initialized ``u8 *out`` Where to write the resulting output data ``size_t out_len`` The amount of data to extract to **out** in bytes **Description** This may be called multiple times. A number of consecutive squeezes laid end-to-end will yield the same output as one big squeeze generating the same total amount of output. More input cannot be provided after squeezing has begun. After the last squeeze, call shake_zeroize_ctx(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj ubj*)}(hhh](j/)}(hM``struct shake_ctx *ctx`` The context to squeeze; must have been initialized h](j5)}(h``struct shake_ctx *ctx``h]j;)}(hj0h]hstruct shake_ctx *ctx}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj.ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj*ubjQ)}(hhh]h)}(h2The context to squeeze; must have been initializedh]h2The context to squeeze; must have been initialized}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjFubah}(h]h ]h"]h$]h&]uh1jPhj*ubeh}(h]h ]h"]h$]h&]uh1j.hjEhKhj'ubj/)}(h5``u8 *out`` Where to write the resulting output data h](j5)}(h ``u8 *out``h]j;)}(hjih]hu8 *out}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjgubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjcubjQ)}(hhh]h)}(h(Where to write the resulting output datah]h(Where to write the resulting output data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKhjubah}(h]h ]h"]h$]h&]uh1jPhjcubeh}(h]h ]h"]h$]h&]uh1j.hj~hKhj'ubj/)}(hE``size_t out_len`` The amount of data to extract to **out** in bytes h](j5)}(h``size_t out_len``h]j;)}(hjh]hsize_t out_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhjubjQ)}(hhh]h)}(h1The amount of data to extract to **out** in bytesh](h!The amount of data to extract to }(hjhhhNhNubj)}(h**out**h]hout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh in bytes}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j.hjhKhj'ubeh}(h]h ]h"]h$]h&]uh1j)hj ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj ubh)}(hXThis may be called multiple times. A number of consecutive squeezes laid end-to-end will yield the same output as one big squeeze generating the same total amount of output. More input cannot be provided after squeezing has begun. After the last squeeze, call shake_zeroize_ctx().h]hXThis may be called multiple times. A number of consecutive squeezes laid end-to-end will yield the same output as one big squeeze generating the same total amount of output. More input cannot be provided after squeezing has begun. After the last squeeze, call shake_zeroize_ctx().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhKhj ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj ubh)}(h Any context.h]h Any context.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_224 (C function) c.sha3_224hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hIvoid sha3_224 (const u8 *in, size_t in_len, u8 out[SHA3_224_DIGEST_SIZE])h]j[)}(hHvoid sha3_224(const u8 *in, size_t in_len, u8 out[SHA3_224_DIGEST_SIZE])h](j)}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM ubjs)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjWhhhjihM ubj)}(hsha3_224h]j)}(hsha3_224h]hsha3_224}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]hhuh1jhjWhhhjihM ubj)}(h;(const u8 *in, size_t in_len, u8 out[SHA3_224_DIGEST_SIZE])h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubh)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj~sb c.sha3_224asbuh1hhjubjs)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjubj/)}(hj2h]h*}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(hinh]hin}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.sha3_224asbuh1hhj ubjs)}(h h]h }(hj+ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj ubj)}(hin_lenh]hin_len}(hj9 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 out[SHA3_224_DIGEST_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjW modnameN classnameNjj)}j]j c.sha3_224asbuh1hhjN ubjs)}(h h]h }(hjs hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjN ubj)}(houth]hout}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN ubj/)}(h[h]h[}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjN ubh)}(hhh]j)}(hSHA3_224_DIGEST_SIZEh]hSHA3_224_DIGEST_SIZE}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.sha3_224asbuh1hhjN ubj/)}(h]h]h]}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjN ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjWhhhjihM ubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhjShhhjihM ubah}(h]jNah ](jjeh"]h$]h&]jj)jhuh1jThjihM hjPhhubj)}(hhh]h)}(h#Compute SHA3-224 digest in one shoth]h#Compute SHA3-224 digest in one shot}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj hhubah}(h]h ]h"]h$]h&]uh1jhjPhhhjihM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj!jj!jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be digested ``size_t in_len`` Length of the input data in bytes ``u8 out[SHA3_224_DIGEST_SIZE]`` The buffer into which the digest will be stored **Description** Convenience function that computes a SHA3-224 digest. Use this instead of the incremental API if you're able to provide all the input at once. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj !h]h Parameters}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj!ubj*)}(hhh](j/)}(h/``const u8 *in`` The input data to be digested h](j5)}(h``const u8 *in``h]j;)}(hj)!h]h const u8 *in}(hj+!hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj'!ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj#!ubjQ)}(hhh]h)}(hThe input data to be digestedh]hThe input data to be digested}(hjB!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>!hM hj?!ubah}(h]h ]h"]h$]h&]uh1jPhj#!ubeh}(h]h ]h"]h$]h&]uh1j.hj>!hM hj !ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hjb!h]h size_t in_len}(hjd!hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj`!ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj\!ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hj{!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw!hM hjx!ubah}(h]h ]h"]h$]h&]uh1jPhj\!ubeh}(h]h ]h"]h$]h&]uh1j.hjw!hM hj !ubj/)}(hQ``u8 out[SHA3_224_DIGEST_SIZE]`` The buffer into which the digest will be stored h](j5)}(h ``u8 out[SHA3_224_DIGEST_SIZE]``h]j;)}(hj!h]hu8 out[SHA3_224_DIGEST_SIZE]}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj!ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj!ubjQ)}(hhh]h)}(h/The buffer into which the digest will be storedh]h/The buffer into which the digest will be stored}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hM hj!ubah}(h]h ]h"]h$]h&]uh1jPhj!ubeh}(h]h ]h"]h$]h&]uh1j.hj!hM hj !ubeh}(h]h ]h"]h$]h&]uh1j)hj!ubh)}(h**Description**h]j)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj!ubh)}(hConvenience function that computes a SHA3-224 digest. Use this instead of the incremental API if you're able to provide all the input at once.h]hConvenience function that computes a SHA3-224 digest. Use this instead of the incremental API if you’re able to provide all the input at once.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM hj!ubh)}(h **Context**h]j)}(hj!h]hContext}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj!ubh)}(h Any context.h]h Any context.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_256 (C function) c.sha3_256hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hIvoid sha3_256 (const u8 *in, size_t in_len, u8 out[SHA3_256_DIGEST_SIZE])h]j[)}(hHvoid sha3_256(const u8 *in, size_t in_len, u8 out[SHA3_256_DIGEST_SIZE])h](j)}(hvoidh]hvoid}(hjB"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>"hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMubjs)}(h h]h }(hjQ"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj>"hhhjP"hMubj)}(hsha3_256h]j)}(hsha3_256h]hsha3_256}(hjc"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_"ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>"hhhjP"hMubj)}(h;(const u8 *in, size_t in_len, u8 out[SHA3_256_DIGEST_SIZE])h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{"ubjs)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj{"ubh)}(hhh]j)}(hu8h]hu8}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j)}jje"sb c.sha3_256asbuh1hhj{"ubjs)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj{"ubj/)}(hj2h]h*}(hj"hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj{"ubj)}(hinh]hin}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjw"ubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j" c.sha3_256asbuh1hhj"ubjs)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj"ubj)}(hin_lenh]hin_len}(hj #hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjw"ubj)}(hu8 out[SHA3_256_DIGEST_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj<#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>#modnameN classnameNjj)}j]j" c.sha3_256asbuh1hhj5#ubjs)}(h h]h }(hjZ#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj5#ubj)}(houth]hout}(hjh#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5#ubj/)}(hj h]h[}(hjv#hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj5#ubh)}(hhh]j)}(hSHA3_256_DIGEST_SIZEh]hSHA3_256_DIGEST_SIZE}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j" c.sha3_256asbuh1hhj5#ubj/)}(hj h]h]}(hj#hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj5#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjw"ubeh}(h]h ]h"]h$]h&]hhuh1jhj>"hhhjP"hMubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj:"hhhjP"hMubah}(h]j5"ah ](jjeh"]h$]h&]jj)jhuh1jThjP"hMhj7"hhubj)}(hhh]h)}(h#Compute SHA3-256 digest in one shoth]h#Compute SHA3-256 digest in one shot}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#hhubah}(h]h ]h"]h$]h&]uh1jhj7"hhhjP"hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj#jj#jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be digested ``size_t in_len`` Length of the input data in bytes ``u8 out[SHA3_256_DIGEST_SIZE]`` The buffer into which the digest will be stored **Description** Convenience function that computes a SHA3-256 digest. Use this instead of the incremental API if you're able to provide all the input at once. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj#h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#ubj*)}(hhh](j/)}(h/``const u8 *in`` The input data to be digested h](j5)}(h``const u8 *in``h]j;)}(hj$h]h const u8 *in}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj $ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj$ubjQ)}(hhh]h)}(hThe input data to be digestedh]hThe input data to be digested}(hj'$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#$hMhj$$ubah}(h]h ]h"]h$]h&]uh1jPhj$ubeh}(h]h ]h"]h$]h&]uh1j.hj#$hMhj$ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hjG$h]h size_t in_len}(hjI$hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjE$ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhjA$ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hj`$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\$hMhj]$ubah}(h]h ]h"]h$]h&]uh1jPhjA$ubeh}(h]h ]h"]h$]h&]uh1j.hj\$hMhj$ubj/)}(hQ``u8 out[SHA3_256_DIGEST_SIZE]`` The buffer into which the digest will be stored h](j5)}(h ``u8 out[SHA3_256_DIGEST_SIZE]``h]j;)}(hj$h]hu8 out[SHA3_256_DIGEST_SIZE]}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj~$ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhjz$ubjQ)}(hhh]h)}(h/The buffer into which the digest will be storedh]h/The buffer into which the digest will be stored}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj$ubah}(h]h ]h"]h$]h&]uh1jPhjz$ubeh}(h]h ]h"]h$]h&]uh1j.hj$hMhj$ubeh}(h]h ]h"]h$]h&]uh1j)hj#ubh)}(h**Description**h]j)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#ubh)}(hConvenience function that computes a SHA3-256 digest. Use this instead of the incremental API if you're able to provide all the input at once.h]hConvenience function that computes a SHA3-256 digest. Use this instead of the incremental API if you’re able to provide all the input at once.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#ubh)}(h **Context**h]j)}(hj$h]hContext}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#ubh)}(h Any context.h]h Any context.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_384 (C function) c.sha3_384hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hIvoid sha3_384 (const u8 *in, size_t in_len, u8 out[SHA3_384_DIGEST_SIZE])h]j[)}(hHvoid sha3_384(const u8 *in, size_t in_len, u8 out[SHA3_384_DIGEST_SIZE])h](j)}(hvoidh]hvoid}(hj'%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#%hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM#ubjs)}(h h]h }(hj6%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj#%hhhj5%hM#ubj)}(hsha3_384h]j)}(hsha3_384h]hsha3_384}(hjH%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD%ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj#%hhhj5%hM#ubj)}(h;(const u8 *in, size_t in_len, u8 out[SHA3_384_DIGEST_SIZE])h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hjd%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`%ubjs)}(h h]h }(hjq%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj`%ubh)}(hhh]j)}(hu8h]hu8}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j)}jjJ%sb c.sha3_384asbuh1hhj`%ubjs)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj`%ubj/)}(hj2h]h*}(hj%hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj`%ubj)}(hinh]hin}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\%ubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j% c.sha3_384asbuh1hhj%ubjs)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj%ubj)}(hin_lenh]hin_len}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\%ubj)}(hu8 out[SHA3_384_DIGEST_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj!&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#&modnameN classnameNjj)}j]j% c.sha3_384asbuh1hhj&ubjs)}(h h]h }(hj?&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj&ubj)}(houth]hout}(hjM&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj/)}(hj h]h[}(hj[&hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj&ubh)}(hhh]j)}(hSHA3_384_DIGEST_SIZEh]hSHA3_384_DIGEST_SIZE}(hjk&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjm&modnameN classnameNjj)}j]j% c.sha3_384asbuh1hhj&ubj/)}(hj h]h]}(hj&hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\%ubeh}(h]h ]h"]h$]h&]hhuh1jhj#%hhhj5%hM#ubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj%hhhj5%hM#ubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1jThj5%hM#hj%hhubj)}(hhh]h)}(h#Compute SHA3-384 digest in one shoth]h#Compute SHA3-384 digest in one shot}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM#hj&hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj5%hM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be digested ``size_t in_len`` Length of the input data in bytes ``u8 out[SHA3_384_DIGEST_SIZE]`` The buffer into which the digest will be stored **Description** Convenience function that computes a SHA3-384 digest. Use this instead of the incremental API if you're able to provide all the input at once. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM'hj&ubj*)}(hhh](j/)}(h/``const u8 *in`` The input data to be digested h](j5)}(h``const u8 *in``h]j;)}(hj&h]h const u8 *in}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj&ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM$hj&ubjQ)}(hhh]h)}(hThe input data to be digestedh]hThe input data to be digested}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hM$hj 'ubah}(h]h ]h"]h$]h&]uh1jPhj&ubeh}(h]h ]h"]h$]h&]uh1j.hj'hM$hj&ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hj,'h]h size_t in_len}(hj.'hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj*'ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM%hj&'ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hjE'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjA'hM%hjB'ubah}(h]h ]h"]h$]h&]uh1jPhj&'ubeh}(h]h ]h"]h$]h&]uh1j.hjA'hM%hj&ubj/)}(hQ``u8 out[SHA3_384_DIGEST_SIZE]`` The buffer into which the digest will be stored h](j5)}(h ``u8 out[SHA3_384_DIGEST_SIZE]``h]j;)}(hje'h]hu8 out[SHA3_384_DIGEST_SIZE]}(hjg'hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjc'ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM&hj_'ubjQ)}(hhh]h)}(h/The buffer into which the digest will be storedh]h/The buffer into which the digest will be stored}(hj~'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz'hM&hj{'ubah}(h]h ]h"]h$]h&]uh1jPhj_'ubeh}(h]h ]h"]h$]h&]uh1j.hjz'hM&hj&ubeh}(h]h ]h"]h$]h&]uh1j)hj&ubh)}(h**Description**h]j)}(hj'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM(hj&ubh)}(hConvenience function that computes a SHA3-384 digest. Use this instead of the incremental API if you're able to provide all the input at once.h]hConvenience function that computes a SHA3-384 digest. Use this instead of the incremental API if you’re able to provide all the input at once.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM'hj&ubh)}(h **Context**h]j)}(hj'h]hContext}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM*hj&ubh)}(h Any context.h]h Any context.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM+hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKsha3_512 (C function) c.sha3_512hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hIvoid sha3_512 (const u8 *in, size_t in_len, u8 out[SHA3_512_DIGEST_SIZE])h]j[)}(hHvoid sha3_512(const u8 *in, size_t in_len, u8 out[SHA3_512_DIGEST_SIZE])h](j)}(hvoidh]hvoid}(hj (hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM0ubjs)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj(hhhj(hM0ubj)}(hsha3_512h]j)}(hsha3_512h]hsha3_512}(hj-(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)(ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj(hhhj(hM0ubj)}(h;(const u8 *in, size_t in_len, u8 out[SHA3_512_DIGEST_SIZE])h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hjI(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjE(ubjs)}(h h]h }(hjV(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjE(ubh)}(hhh]j)}(hu8h]hu8}(hjg(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetji(modnameN classnameNjj)}j]j)}jj/(sb c.sha3_512asbuh1hhjE(ubjs)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjE(ubj/)}(hj2h]h*}(hj(hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjE(ubj)}(hinh]hin}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjA(ubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j( c.sha3_512asbuh1hhj(ubjs)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj(ubj)}(hin_lenh]hin_len}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjA(ubj)}(hu8 out[SHA3_512_DIGEST_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j( c.sha3_512asbuh1hhj(ubjs)}(h h]h }(hj$)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj(ubj)}(houth]hout}(hj2)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj/)}(hj h]h[}(hj@)hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj(ubh)}(hhh]j)}(hSHA3_512_DIGEST_SIZEh]hSHA3_512_DIGEST_SIZE}(hjP)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjR)modnameN classnameNjj)}j]j( c.sha3_512asbuh1hhj(ubj/)}(hj h]h]}(hjn)hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjA(ubeh}(h]h ]h"]h$]h&]hhuh1jhj(hhhj(hM0ubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj(hhhj(hM0ubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1jThj(hM0hj(hhubj)}(hhh]h)}(h#Compute SHA3-512 digest in one shoth]h#Compute SHA3-512 digest in one shot}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM0hj)hhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj(hM0ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be digested ``size_t in_len`` Length of the input data in bytes ``u8 out[SHA3_512_DIGEST_SIZE]`` The buffer into which the digest will be stored **Description** Convenience function that computes a SHA3-512 digest. Use this instead of the incremental API if you're able to provide all the input at once. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM4hj)ubj*)}(hhh](j/)}(h/``const u8 *in`` The input data to be digested h](j5)}(h``const u8 *in``h]j;)}(hj)h]h const u8 *in}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj)ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM1hj)ubjQ)}(hhh]h)}(hThe input data to be digestedh]hThe input data to be digested}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hM1hj)ubah}(h]h ]h"]h$]h&]uh1jPhj)ubeh}(h]h ]h"]h$]h&]uh1j.hj)hM1hj)ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hj*h]h size_t in_len}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj*ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM2hj *ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hj**hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&*hM2hj'*ubah}(h]h ]h"]h$]h&]uh1jPhj *ubeh}(h]h ]h"]h$]h&]uh1j.hj&*hM2hj)ubj/)}(hQ``u8 out[SHA3_512_DIGEST_SIZE]`` The buffer into which the digest will be stored h](j5)}(h ``u8 out[SHA3_512_DIGEST_SIZE]``h]j;)}(hjJ*h]hu8 out[SHA3_512_DIGEST_SIZE]}(hjL*hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjH*ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM3hjD*ubjQ)}(hhh]h)}(h/The buffer into which the digest will be storedh]h/The buffer into which the digest will be stored}(hjc*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_*hM3hj`*ubah}(h]h ]h"]h$]h&]uh1jPhjD*ubeh}(h]h ]h"]h$]h&]uh1j.hj_*hM3hj)ubeh}(h]h ]h"]h$]h&]uh1j)hj)ubh)}(h**Description**h]j)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM5hj)ubh)}(hConvenience function that computes a SHA3-512 digest. Use this instead of the incremental API if you're able to provide all the input at once.h]hConvenience function that computes a SHA3-512 digest. Use this instead of the incremental API if you’re able to provide all the input at once.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM4hj)ubh)}(h **Context**h]j)}(hj*h]hContext}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM7hj)ubh)}(h Any context.h]h Any context.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM8hj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake128 (C function) c.shake128hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hDvoid shake128 (const u8 *in, size_t in_len, u8 *out, size_t out_len)h]j[)}(hCvoid shake128(const u8 *in, size_t in_len, u8 *out, size_t out_len)h](j)}(hvoidh]hvoid}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM=ubjs)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj*hhhj*hM=ubj)}(hshake128h]j)}(hshake128h]hshake128}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj*hhhj*hM=ubj)}(h6(const u8 *in, size_t in_len, u8 *out, size_t out_len)h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hj.+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*+ubjs)}(h h]h }(hj;+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj*+ubh)}(hhh]j)}(hu8h]hu8}(hjL+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjN+modnameN classnameNjj)}j]j)}jj+sb c.shake128asbuh1hhj*+ubjs)}(h h]h }(hjl+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj*+ubj/)}(hj2h]h*}(hjz+hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj*+ubj)}(hinh]hin}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&+ubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]jh+ c.shake128asbuh1hhj+ubjs)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj+ubj)}(hin_lenh]hin_len}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&+ubj)}(hu8 *outh](h)}(hhh]j)}(hu8h]hu8}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]jh+ c.shake128asbuh1hhj+ubjs)}(h h]h }(hj ,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj+ubj/)}(hj2h]h*}(hj,hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj+ubj)}(houth]hout}(hj$,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&+ubj)}(hsize_t out_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj@,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB,modnameN classnameNjj)}j]jh+ c.shake128asbuh1hhj9,ubjs)}(h h]h }(hj^,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj9,ubj)}(hout_lenh]hout_len}(hjl,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&+ubeh}(h]h ]h"]h$]h&]hhuh1jhj*hhhj*hM=ubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj*hhhj*hM=ubah}(h]j*ah ](jjeh"]h$]h&]jj)jhuh1jThj*hM=hj*hhubj)}(hhh]h)}(hCompute SHAKE128 in one shoth]hCompute SHAKE128 in one shot}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM=hj,hhubah}(h]h ]h"]h$]h&]uh1jhj*hhhj*hM=ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be used ``size_t in_len`` Length of the input data in bytes ``u8 *out`` The buffer into which the output will be stored ``size_t out_len`` Length of the output to produce in bytes **Description** Convenience function that computes SHAKE128 in one shot. Use this instead of the incremental API if you're able to provide all the input at once as well as receive all the output at once. All output lengths are supported. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1>jhj,ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMAhj,ubj*)}(hhh](j/)}(h+``const u8 *in`` The input data to be used h](j5)}(h``const u8 *in``h]j;)}(hj,h]h const u8 *in}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj,ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM>hj,ubjQ)}(hhh]h)}(hThe input data to be usedh]hThe input data to be used}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM>hj,ubah}(h]h ]h"]h$]h&]uh1jPhj,ubeh}(h]h ]h"]h$]h&]uh1j.hj,hM>hj,ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hj-h]h size_t in_len}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj-ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM?hj -ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hj)-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%-hM?hj&-ubah}(h]h ]h"]h$]h&]uh1jPhj -ubeh}(h]h ]h"]h$]h&]uh1j.hj%-hM?hj,ubj/)}(h<``u8 *out`` The buffer into which the output will be stored h](j5)}(h ``u8 *out``h]j;)}(hjI-h]hu8 *out}(hjK-hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjG-ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhM@hjC-ubjQ)}(hhh]h)}(h/The buffer into which the output will be storedh]h/The buffer into which the output will be stored}(hjb-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^-hM@hj_-ubah}(h]h ]h"]h$]h&]uh1jPhjC-ubeh}(h]h ]h"]h$]h&]uh1j.hj^-hM@hj,ubj/)}(h<``size_t out_len`` Length of the output to produce in bytes h](j5)}(h``size_t out_len``h]j;)}(hj-h]hsize_t out_len}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj-ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMAhj|-ubjQ)}(hhh]h)}(h(Length of the output to produce in bytesh]h(Length of the output to produce in bytes}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMAhj-ubah}(h]h ]h"]h$]h&]uh1jPhj|-ubeh}(h]h ]h"]h$]h&]uh1j.hj-hMAhj,ubeh}(h]h ]h"]h$]h&]uh1j)hj,ubh)}(h**Description**h]j)}(hj-h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMChj,ubh)}(hConvenience function that computes SHAKE128 in one shot. Use this instead of the incremental API if you're able to provide all the input at once as well as receive all the output at once. All output lengths are supported.h]hConvenience function that computes SHAKE128 in one shot. Use this instead of the incremental API if you’re able to provide all the input at once as well as receive all the output at once. All output lengths are supported.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMBhj,ubh)}(h **Context**h]j)}(hj-h]hContext}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMFhj,ubh)}(h Any context.h]h Any context.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMGhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj?)}(hhh]h}(h]h ]h"]h$]h&]entries](jKshake256 (C function) c.shake256hNtauh1j>hj-hhhNhNubjP)}(hhh](jU)}(hDvoid shake256 (const u8 *in, size_t in_len, u8 *out, size_t out_len)h]j[)}(hCvoid shake256(const u8 *in, size_t in_len, u8 *out, size_t out_len)h](j)}(hvoidh]hvoid}(hj).hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%.hhhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMLubjs)}(h h]h }(hj8.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj%.hhhj7.hMLubj)}(hshake256h]j)}(hshake256h]hshake256}(hjJ.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF.ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj%.hhhj7.hMLubj)}(h6(const u8 *in, size_t in_len, u8 *out, size_t out_len)h](j)}(h const u8 *inh](ja)}(hjh]hconst}(hjf.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjb.ubjs)}(h h]h }(hjs.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjb.ubh)}(hhh]j)}(hu8h]hu8}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j)}jjL.sb c.shake256asbuh1hhjb.ubjs)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjb.ubj/)}(hj2h]h*}(hj.hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjb.ubj)}(hinh]hin}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^.ubj)}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j. c.shake256asbuh1hhj.ubjs)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj.ubj)}(hin_lenh]hin_len}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^.ubj)}(hu8 *outh](h)}(hhh]j)}(hu8h]hu8}(hj#/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%/modnameN classnameNjj)}j]j. c.shake256asbuh1hhj/ubjs)}(h h]h }(hjA/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhj/ubj/)}(hj2h]h*}(hjO/hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj/ubj)}(houth]hout}(hj\/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^.ubj)}(hsize_t out_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjx/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju/ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjz/modnameN classnameNjj)}j]j. c.shake256asbuh1hhjq/ubjs)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jrhjq/ubj)}(hout_lenh]hout_len}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^.ubeh}(h]h ]h"]h$]h&]hhuh1jhj%.hhhj7.hMLubeh}(h]h ]h"]h$]h&]hhjuh1jZjjhj!.hhhj7.hMLubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1jThj7.hMLhj.hhubj)}(hhh]h)}(hCompute SHAKE256 in one shoth]hCompute SHAKE256 in one shot}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMLhj/hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj7.hMLubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1jOhhhj-hNhNubj)}(hX**Parameters** ``const u8 *in`` The input data to be used ``size_t in_len`` Length of the input data in bytes ``u8 *out`` The buffer into which the output will be stored ``size_t out_len`` Length of the output to produce in bytes **Description** Convenience function that computes SHAKE256 in one shot. Use this instead of the incremental API if you're able to provide all the input at once as well as receive all the output at once. All output lengths are supported. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMPhj/ubj*)}(hhh](j/)}(h+``const u8 *in`` The input data to be used h](j5)}(h``const u8 *in``h]j;)}(hj0h]h const u8 *in}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj 0ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMMhj 0ubjQ)}(hhh]h)}(hThe input data to be usedh]hThe input data to be used}(hj(0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$0hMMhj%0ubah}(h]h ]h"]h$]h&]uh1jPhj 0ubeh}(h]h ]h"]h$]h&]uh1j.hj$0hMMhj0ubj/)}(h4``size_t in_len`` Length of the input data in bytes h](j5)}(h``size_t in_len``h]j;)}(hjH0h]h size_t in_len}(hjJ0hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjF0ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMNhjB0ubjQ)}(hhh]h)}(h!Length of the input data in bytesh]h!Length of the input data in bytes}(hja0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]0hMNhj^0ubah}(h]h ]h"]h$]h&]uh1jPhjB0ubeh}(h]h ]h"]h$]h&]uh1j.hj]0hMNhj0ubj/)}(h<``u8 *out`` The buffer into which the output will be stored h](j5)}(h ``u8 *out``h]j;)}(hj0h]hu8 *out}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj0ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMOhj{0ubjQ)}(hhh]h)}(h/The buffer into which the output will be storedh]h/The buffer into which the output will be stored}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMOhj0ubah}(h]h ]h"]h$]h&]uh1jPhj{0ubeh}(h]h ]h"]h$]h&]uh1j.hj0hMOhj0ubj/)}(h<``size_t out_len`` Length of the output to produce in bytes h](j5)}(h``size_t out_len``h]j;)}(hj0h]hsize_t out_len}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj0ubah}(h]h ]h"]h$]h&]uh1j4hR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMPhj0ubjQ)}(hhh]h)}(h(Length of the output to produce in bytesh]h(Length of the output to produce in bytes}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMPhj0ubah}(h]h ]h"]h$]h&]uh1jPhj0ubeh}(h]h ]h"]h$]h&]uh1j.hj0hMPhj0ubeh}(h]h ]h"]h$]h&]uh1j)hj/ubh)}(h**Description**h]j)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMRhj/ubh)}(hConvenience function that computes SHAKE256 in one shot. Use this instead of the incremental API if you're able to provide all the input at once as well as receive all the output at once. All output lengths are supported.h]hConvenience function that computes SHAKE256 in one shot. Use this instead of the incremental API if you’re able to provide all the input at once as well as receive all the output at once. All output lengths are supported.}(hj 1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMQhj/ubh)}(h **Context**h]j)}(hj1h]hContext}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMUhj/ubh)}(h Any context.h]h Any context.}(hj21hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/crypto/sha3:130: ./include/crypto/sha3.hhMVhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubeh}(h]jah ]h"]api function referenceah$]h&]uh1hhhhhhhhKubeh}(h]hah ]h"]sha-3 algorithm collectionah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjy1error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}1]j asrefids}nameids}(jS1hjjjjjj?jjajjj*jj#jjL1ju nametypes}(jS1jjjjjj*j#jL1uh}(hhjhjjjj j?jjajjjjjjjjj-jMjVjjjj"j& j+ j j jO jT j j jjjGjLjjjcjhj jjjjjjNjSj5"j:"j%j%j'j(j*j*j.j!.hhjjj9j0j[jRj}jtjjjju footnote_refs}j1]j as citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes]ja citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j1K sRparse_messages]transform_messages] transformerN include_log] decorationNhhub.