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/libcrypto-hashmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/crypto/libcrypto-hashmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/crypto/libcrypto-hashmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/crypto/libcrypto-hashmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/crypto/libcrypto-hashmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/crypto/libcrypto-hashmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/crypto/libcrypto-hashmodnameN 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:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash.rsthKubhsection)}(hhh](htitle)}(hHash functions, MACs, and XOFsh]hHash functions, MACs, and XOFs}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hAES-CMAC and AES-XCBC-MACh]hAES-CMAC and AES-XCBC-MAC}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hGSupport for the AES-CMAC and AES-XCBC-MAC message authentication codes.h]hGSupport for the AES-CMAC and AES-XCBC-MAC message authentication codes.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleaes_cmac_key (C struct)c.aes_cmac_keyhNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h aes_cmac_keyh]hdesc_signature_line)}(hstruct aes_cmac_keyh](hdesc_sig_keyword)}(hstructh]hstruct}(hj"hhhNhNubah}(h]h ]kah"]h$]h&]uh1j hjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKubhdesc_sig_space)}(h h]h }(hj4hhhNhNubah}(h]h ]wah"]h$]h&]uh1j2hjhhhj1hKubh desc_name)}(h aes_cmac_keyh]h desc_sig_name)}(hjh]h aes_cmac_key}(hjKhhhNhNubah}(h]h ]nah"]h$]h&]uh1jIhjEubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jChjhhhj1hKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhj1hKubah}(h]j ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj1hKhjhhubh desc_content)}(hhh]h)}(h)Prepared key for AES-CMAC or AES-XCBC-MACh]h)Prepared key for AES-CMAC or AES-XCBC-MAC}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK hjwhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj1hKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhhhNhNubh container)}(hX**Definition**:: struct aes_cmac_key { struct aes_enckey aes; union { u8 b[AES_BLOCK_SIZE]; __be64 w[2]; } k_final[2]; }; **Members** ``aes`` The AES key for cipher block chaining ``k_final`` Finalization subkeys for the final block. k_final[0] (CMAC K1, XCBC-MAC K2) is used if it's a full block. k_final[1] (CMAC K2, XCBC-MAC K3) is used if it's a partial block.h](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjubh literal_block)}(hstruct aes_cmac_key { struct aes_enckey aes; union { u8 b[AES_BLOCK_SIZE]; __be64 w[2]; } k_final[2]; };h]hstruct aes_cmac_key { struct aes_enckey aes; union { u8 b[AES_BLOCK_SIZE]; __be64 w[2]; } k_final[2]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h.``aes`` The AES key for cipher block chaining h](hterm)}(h``aes``h]hliteral)}(hjh]haes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjubh definition)}(hhh]h)}(h%The AES key for cipher block chainingh]h%The AES key for cipher block chaining}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``k_final`` Finalization subkeys for the final block. k_final[0] (CMAC K1, XCBC-MAC K2) is used if it's a full block. k_final[1] (CMAC K2, XCBC-MAC K3) is used if it's a partial block.h](j)}(h ``k_final``h]j)}(hj7h]hk_final}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhj1ubj)}(hhh]h)}(hFinalization subkeys for the final block. k_final[0] (CMAC K1, XCBC-MAC K2) is used if it's a full block. k_final[1] (CMAC K2, XCBC-MAC K3) is used if it's a partial block.h]hFinalization subkeys for the final block. k_final[0] (CMAC K1, XCBC-MAC K2) is used if it’s a full block. k_final[1] (CMAC K2, XCBC-MAC K3) is used if it’s a partial block.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cmac_ctx (C struct)c.aes_cmac_ctxhNtauh1hhhhhhNhNubj)}(hhh](j)}(h aes_cmac_ctxh]j)}(hstruct aes_cmac_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(h aes_cmac_ctxh]jJ)}(hjh]h aes_cmac_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h7Context for computing an AES-CMAC or AES-XCBC-MAC valueh]h7Context for computing an AES-CMAC or AES-XCBC-MAC value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hXO**Definition**:: struct aes_cmac_ctx { const struct aes_cmac_key *key; size_t partial_len; u8 h[AES_BLOCK_SIZE]; }; **Members** ``key`` Pointer to the key struct. A pointer is used rather than a copy of the struct, since the key struct size may be large. It is assumed that the key lives at least as long as the context. ``partial_len`` Number of bytes that have been XOR'ed into **h** since the last AES encryption. This is 0 if no data has been processed yet, or between 1 and AES_BLOCK_SIZE inclusive otherwise. ``h`` The current chaining valueh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK hjubj)}(hnstruct aes_cmac_ctx { const struct aes_cmac_key *key; size_t partial_len; u8 h[AES_BLOCK_SIZE]; };h]hnstruct aes_cmac_ctx { const struct aes_cmac_key *key; size_t partial_len; u8 h[AES_BLOCK_SIZE]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK"hjubh)}(h **Members**h]j)}(hj!h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK(hjubj)}(hhh](j)}(h``key`` Pointer to the key struct. A pointer is used rather than a copy of the struct, since the key struct size may be large. It is assumed that the key lives at least as long as the context. h](j)}(h``key``h]j)}(hj@h]hkey}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK hj:ubj)}(hhh]h)}(hPointer to the key struct. A pointer is used rather than a copy of the struct, since the key struct size may be large. It is assumed that the key lives at least as long as the context.h]hPointer to the key struct. A pointer is used rather than a copy of the struct, since the key struct size may be large. It is assumed that the key lives at least as long as the context.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhK hj7ubj)}(h``partial_len`` Number of bytes that have been XOR'ed into **h** since the last AES encryption. This is 0 if no data has been processed yet, or between 1 and AES_BLOCK_SIZE inclusive otherwise. h](j)}(h``partial_len``h]j)}(hjzh]h partial_len}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK#hjtubj)}(hhh]h)}(hNumber of bytes that have been XOR'ed into **h** since the last AES encryption. This is 0 if no data has been processed yet, or between 1 and AES_BLOCK_SIZE inclusive otherwise.h](h-Number of bytes that have been XOR’ed into }(hjhhhNhNubj)}(h**h**h]hh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh since the last AES encryption. This is 0 if no data has been processed yet, or between 1 and AES_BLOCK_SIZE inclusive otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK!hjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhK#hj7ubj)}(h ``h`` The current chaining valueh](j)}(h``h``h]j)}(hjh]hh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK#hjubj)}(hhh]h)}(hThe current chaining valueh]hThe current chaining value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK#hj7ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  aes_cmac_preparekey (C function)c.aes_cmac_preparekeyhNtauh1hhhhhhNhNubj)}(hhh](j)}(hTint aes_cmac_preparekey (struct aes_cmac_key *key, const u8 *in_key, size_t key_len)h]j)}(hSint aes_cmac_preparekey(struct aes_cmac_key *key, const u8 *in_key, size_t key_len)h](hdesc_sig_keyword_type)}(hinth]hint}(hj"hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j hjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK,ubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj1hK,ubjD)}(haes_cmac_preparekeyh]jJ)}(haes_cmac_preparekeyh]haes_cmac_preparekey}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj1hK,ubhdesc_parameterlist)}(h<(struct aes_cmac_key *key, const u8 *in_key, size_t key_len)h](hdesc_parameter)}(hstruct aes_cmac_key *keyh](j!)}(hj$h]hstruct}(hjdhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj`ubj3)}(h h]h }(hjqhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubh)}(hhh]jJ)}(h aes_cmac_keyh]h aes_cmac_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjFsbc.aes_cmac_preparekeyasbuh1hhj`ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj`ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZubj_)}(hconst u8 *in_keyh](j!)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cmac_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hin_keyh]hin_key}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZubj_)}(hsize_t key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjVhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]jc.aes_cmac_preparekeyasbuh1hhjOubj3)}(h h]h }(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOubjJ)}(hkey_lenh]hkey_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhj1hK,ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj1hK,ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj1hK,hjhhubjv)}(hhh]h)}(hPrepare a key for AES-CMACh]hPrepare a key for AES-CMAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK,hjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj1hK,ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct aes_cmac_key *key`` (output) The key struct to initialize ``const u8 *in_key`` The raw AES key ``size_t key_len`` Length of the raw key in bytes. The supported values are AES_KEYSIZE_128, AES_KEYSIZE_192, and AES_KEYSIZE_256. **Context** Any context. **Return** 0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK0hjubj)}(hhh](j)}(hC``struct aes_cmac_key *key`` (output) The key struct to initialize h](j)}(h``struct aes_cmac_key *key``h]j)}(hjh]hstruct aes_cmac_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK-hjubj)}(hhh]h)}(h%(output) The key struct to initializeh]h%(output) The key struct to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK-hjubj)}(h%``const u8 *in_key`` The raw AES key h](j)}(h``const u8 *in_key``h]j)}(hj&h]hconst u8 *in_key}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK.hj ubj)}(hhh]h)}(hThe raw AES keyh]hThe raw AES key}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK.hj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hK.hjubj)}(h``size_t key_len`` Length of the raw key in bytes. The supported values are AES_KEYSIZE_128, AES_KEYSIZE_192, and AES_KEYSIZE_256. h](j)}(h``size_t key_len``h]j)}(hj_h]hsize_t key_len}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK0hjYubj)}(hhh]h)}(hpLength of the raw key in bytes. The supported values are AES_KEYSIZE_128, AES_KEYSIZE_192, and AES_KEYSIZE_256.h]hpLength of the raw key in bytes. The supported values are AES_KEYSIZE_128, AES_KEYSIZE_192, and AES_KEYSIZE_256.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK/hjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthK0hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK2hjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK2hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK4hjubh)}(h0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors.h]h0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don’t need to check for errors.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK3hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #aes_xcbcmac_preparekey (C function)c.aes_xcbcmac_preparekeyhNtauh1hhhhhhNhNubj)}(hhh](j)}(h_void aes_xcbcmac_preparekey (struct aes_cmac_key *key, const u8 in_key[static AES_KEYSIZE_128])h]j)}(h^void aes_xcbcmac_preparekey(struct aes_cmac_key *key, const u8 in_key[static AES_KEYSIZE_128])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK;ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhK;ubjD)}(haes_xcbcmac_preparekeyh]jJ)}(haes_xcbcmac_preparekeyh]haes_xcbcmac_preparekey}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhK;ubjY)}(hC(struct aes_cmac_key *key, const u8 in_key[static AES_KEYSIZE_128])h](j_)}(hstruct aes_cmac_key *keyh](j!)}(hj$h]hstruct}(hjDhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj@ubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubh)}(hhh]jJ)}(h aes_cmac_keyh]h aes_cmac_key}(hjbhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]j)}jj*sbc.aes_xcbcmac_preparekeyasbuh1hhj@ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj<ubj_)}(h'const u8 in_key[static AES_KEYSIZE_128]h](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j~c.aes_xcbcmac_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hin_keyh]hin_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(h[h]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hstatich]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hAES_KEYSIZE_128h]hAES_KEYSIZE_128}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j~c.aes_xcbcmac_preparekeyasbuh1hhjubj)}(h]h]h]}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj<ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhK;ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhK;ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK;hjhhubjv)}(hhh]h)}(hPrepare a key for AES-XCBC-MACh]hPrepare a key for AES-XCBC-MAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK;hjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhK;ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct aes_cmac_key *key`` (output) The key struct to initialize ``const u8 in_key[static AES_KEYSIZE_128]`` The raw key. As per the AES-XCBC-MAC specification (RFC 3566), this is 128 bits, matching the internal use of AES-128. **Description** AES-XCBC-MAC and AES-CMAC are the same except for the key preparation. After that step, AES-XCBC-MAC is supported via the aes_cmac_* functions. New users should use AES-CMAC instead of AES-XCBC-MAC. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK?hjubj)}(hhh](j)}(hC``struct aes_cmac_key *key`` (output) The key struct to initialize h](j)}(h``struct aes_cmac_key *key``h]j)}(hjh]hstruct aes_cmac_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhjubj)}(hhh]h)}(hwThe raw key. As per the AES-XCBC-MAC specification (RFC 3566), this is 128 bits, matching the internal use of AES-128.h]hwThe raw key. As per the AES-XCBC-MAC specification (RFC 3566), this is 128 bits, matching the internal use of AES-128.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK=hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hK>hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj9 h]h Description}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7 ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK@hjubh)}(hAES-XCBC-MAC and AES-CMAC are the same except for the key preparation. After that step, AES-XCBC-MAC is supported via the aes_cmac_* functions.h]hAES-XCBC-MAC and AES-CMAC are the same except for the key preparation. After that step, AES-XCBC-MAC is supported via the aes_cmac_* functions.}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK?hjubh)}(h6New users should use AES-CMAC instead of AES-XCBC-MAC.h]h6New users should use AES-CMAC instead of AES-XCBC-MAC.}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKBhjubh)}(h **Context**h]j)}(hjo h]hContext}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKDhjubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKEhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cmac_init (C function)c.aes_cmac_inithNtauh1hhhhhhNhNubj)}(hhh](j)}(hMvoid aes_cmac_init (struct aes_cmac_ctx *ctx, const struct aes_cmac_key *key)h]j)}(hLvoid aes_cmac_init(struct aes_cmac_ctx *ctx, const struct aes_cmac_key *key)h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKKubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhj hKKubjD)}(h aes_cmac_inith]jJ)}(h aes_cmac_inith]h aes_cmac_init}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhj hKKubjY)}(h:(struct aes_cmac_ctx *ctx, const struct aes_cmac_key *key)h](j_)}(hstruct aes_cmac_ctx *ctxh](j!)}(hj$h]hstruct}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(h aes_cmac_ctxh]h aes_cmac_ctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.aes_cmac_initasbuh1hhj ubj3)}(h h]h }(hj/ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hj= hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(hctxh]hctx}(hjJ hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubj_)}(hconst struct aes_cmac_key *keyh](j!)}(hjh]hconst}(hjc hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj_ ubj3)}(h h]h }(hjp hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ ubj!)}(hj$h]hstruct}(hj~ hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj_ ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ ubh)}(hhh]jJ)}(h aes_cmac_keyh]h aes_cmac_key}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j+ c.aes_cmac_initasbuh1hhj_ ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ ubjJ)}(hkeyh]hkey}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubeh}(h]h ]h"]h$]h&]hhuh1jXhj hhhj hKKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj hKKubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hKKhj hhubjv)}(hhh]h)}(h1Start computing an AES-CMAC or AES-XCBC-MAC valueh]h1Start computing an AES-CMAC or AES-XCBC-MAC value}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKKhj hhubah}(h]h ]h"]h$]h&]uh1juhj hhhj hKKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct aes_cmac_ctx *ctx`` (output) The context to initialize ``const struct aes_cmac_key *key`` The key to use. Note that a pointer to the key is saved in the context, so the key must live at least as long as the context. **Description** This supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() was called.h](h)}(h**Parameters**h]j)}(hj! h]h Parameters}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKOhj ubj)}(hhh](j)}(h@``struct aes_cmac_ctx *ctx`` (output) The context to initialize h](j)}(h``struct aes_cmac_ctx *ctx``h]j)}(hj@ h]hstruct aes_cmac_ctx *ctx}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKLhj: ubj)}(hhh]h)}(h"(output) The context to initializeh]h"(output) The context to initialize}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjU hKLhjV ubah}(h]h ]h"]h$]h&]uh1jhj: ubeh}(h]h ]h"]h$]h&]uh1jhjU hKLhj7 ubj)}(h``const struct aes_cmac_key *key`` The key to use. Note that a pointer to the key is saved in the context, so the key must live at least as long as the context. h](j)}(h"``const struct aes_cmac_key *key``h]j)}(hjy h]hconst struct aes_cmac_key *key}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKNhjs ubj)}(hhh]h)}(h~The key to use. Note that a pointer to the key is saved in the context, so the key must live at least as long as the context.h]h~The key to use. Note that a pointer to the key is saved in the context, so the key must live at least as long as the context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKMhj ubah}(h]h ]h"]h$]h&]uh1jhjs ubeh}(h]h ]h"]h$]h&]uh1jhj hKNhj7 ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKPhj ubh)}(hThis supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() was called.h]hThis supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() was called.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKOhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cmac_update (C function)c.aes_cmac_updatehNtauh1hhhhhhNhNubj)}(hhh](j)}(hPvoid aes_cmac_update (struct aes_cmac_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hOvoid aes_cmac_update(struct aes_cmac_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKZubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhj hKZubjD)}(haes_cmac_updateh]jJ)}(haes_cmac_updateh]haes_cmac_update}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhj hKZubjY)}(h;(struct aes_cmac_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct aes_cmac_ctx *ctxh](j!)}(hj$h]hstruct}(hj7 hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3 ubj3)}(h h]h }(hjD hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3 ubh)}(hhh]jJ)}(h aes_cmac_ctxh]h aes_cmac_ctx}(hjU hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjR ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjW modnameN classnameNjj)}j]j)}jj sbc.aes_cmac_updateasbuh1hhj3 ubj3)}(h h]h }(hju hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3 ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3 ubjJ)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3 ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj/ ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jq c.aes_cmac_updateasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(hdatah]hdata}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj/ ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jq c.aes_cmac_updateasbuh1hhj ubj3)}(h h]h }(hj: hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubjJ)}(hdata_lenh]hdata_len}(hjH hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj/ ubeh}(h]h ]h"]h$]h&]hhuh1jXhj hhhj hKZubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj hKZubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hKZhj hhubjv)}(hhh]h)}(h9Update an AES-CMAC or AES-XCBC-MAC context with more datah]h9Update an AES-CMAC or AES-XCBC-MAC context with more data}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKZhjo hhubah}(h]h ]h"]h$]h&]uh1juhj hhhj hKZubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(hX0**Parameters** ``struct aes_cmac_ctx *ctx`` The context to update; must have been initialized ``const u8 *data`` The message data ``size_t data_len`` The data length in bytes. Doesn't need to be block-aligned. **Description** This can be called any number of times. **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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK^hj ubj)}(hhh](j)}(hO``struct aes_cmac_ctx *ctx`` The context to update; must have been initialized h](j)}(h``struct aes_cmac_ctx *ctx``h]j)}(hj h]hstruct aes_cmac_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK[hj ubj)}(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 hK[hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK[hj ubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hj h]hconst u8 *data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK\hj ubj)}(hhh]h)}(hThe message datah]hThe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK\hjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjhK\hj ubj)}(hQ``size_t data_len`` The data length in bytes. Doesn't need to be block-aligned. h](j)}(h``size_t data_len``h]j)}(hj%h]hsize_t data_len}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK]hjubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK]hj;ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj:hK]hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj`h]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK_hj ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK^hj ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhK`hj ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKahj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cmac_final (C function)c.aes_cmac_finalhNtauh1hhhhhhNhNubj)}(hhh](j)}(hMvoid aes_cmac_final (struct aes_cmac_ctx *ctx, u8 out[static AES_BLOCK_SIZE])h]j)}(hLvoid aes_cmac_final(struct aes_cmac_ctx *ctx, u8 out[static AES_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKfubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKfubjD)}(haes_cmac_finalh]jJ)}(haes_cmac_finalh]haes_cmac_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKfubjY)}(h9(struct aes_cmac_ctx *ctx, u8 out[static AES_BLOCK_SIZE])h](j_)}(hstruct aes_cmac_ctx *ctxh](j!)}(hj$h]hstruct}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h aes_cmac_ctxh]h aes_cmac_ctx}(hj'hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j)}jjsbc.aes_cmac_finalasbuh1hhjubj3)}(h h]h }(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjbhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 out[static AES_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jCc.aes_cmac_finalasbuh1hhjwubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjwubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjwubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubh)}(hhh]jJ)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jCc.aes_cmac_finalasbuh1hhjwubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKfubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKfubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKfhjhhubjv)}(hhh]h)}(h2Finish computing an AES-CMAC or AES-XCBC-MAC valueh]h2Finish computing an AES-CMAC or AES-XCBC-MAC value}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKfhj'hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKfubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct aes_cmac_ctx *ctx`` The context to finalize; must have been initialized ``u8 out[static AES_BLOCK_SIZE]`` (output) The resulting MAC **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjLh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKjhjFubj)}(hhh](j)}(hQ``struct aes_cmac_ctx *ctx`` The context to finalize; must have been initialized h](j)}(h``struct aes_cmac_ctx *ctx``h]j)}(hjkh]hstruct aes_cmac_ctx *ctx}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKghjeubj)}(hhh]h)}(h3The context to finalize; must have been initializedh]h3The context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKghjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhKghjbubj)}(h=``u8 out[static AES_BLOCK_SIZE]`` (output) The resulting MAC h](j)}(h!``u8 out[static AES_BLOCK_SIZE]``h]j)}(hjh]hu8 out[static AES_BLOCK_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKhhjubj)}(hhh]h)}(h(output) The resulting MACh]h(output) The resulting MAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhhjbubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKjhjFubh)}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKihjFubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKkhjFubh)}(h Any context.h]h Any context.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKlhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cmac (C function) c.aes_cmachNtauh1hhhhhhNhNubj)}(hhh](j)}(hnvoid aes_cmac (const struct aes_cmac_key *key, const u8 *data, size_t data_len, u8 out[static AES_BLOCK_SIZE])h]j)}(hmvoid aes_cmac(const struct aes_cmac_key *key, const u8 *data, size_t data_len, u8 out[static AES_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjYhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKqubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYhhhjkhKqubjD)}(haes_cmach]jJ)}(haes_cmach]haes_cmac}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjYhhhjkhKqubjY)}(h`(const struct aes_cmac_key *key, const u8 *data, size_t data_len, u8 out[static AES_BLOCK_SIZE])h](j_)}(hconst struct aes_cmac_key *keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h aes_cmac_keyh]h aes_cmac_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.aes_cmacasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj'hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj#ubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubh)}(hhh]jJ)}(hu8h]hu8}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]j c.aes_cmacasbuh1hhj#ubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubjJ)}(hdatah]hdata}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.aes_cmacasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 out[static AES_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.aes_cmacasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj)hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]j c.aes_cmacasbuh1hhjubj)}(hj[h]h]}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjYhhhjkhKqubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjUhhhjkhKqubah}(h]jPah ](jmjneh"]h$]h&]jrjs)jthuh1jhjkhKqhjRhhubjv)}(hhh]h)}(h,Compute AES-CMAC or AES-XCBC-MAC in one shoth]h,Compute AES-CMAC or AES-XCBC-MAC in one shot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKqhjhhubah}(h]h ]h"]h$]h&]uh1juhjRhhhjkhKqubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``const struct aes_cmac_key *key`` The key to use ``const u8 *data`` The message data ``size_t data_len`` The data length in bytes ``u8 out[static AES_BLOCK_SIZE]`` (output) The resulting AES-CMAC or AES-XCBC-MAC value **Description** This supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() 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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKuhjubj)}(hhh](j)}(h2``const struct aes_cmac_key *key`` The key to use h](j)}(h"``const struct aes_cmac_key *key``h]j)}(hjh]hconst struct aes_cmac_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKrhjubj)}(hhh]h)}(hThe key to useh]hThe key to use}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKrhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKrhjubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKshjubj)}(hhh]h)}(hThe message datah]hThe message data}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKshjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKshjubj)}(h-``size_t data_len`` The data length in bytes h](j)}(h``size_t data_len``h]j)}(hjAh]hsize_t data_len}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKthj;ubj)}(hhh]h)}(hThe data length in bytesh]hThe data length in bytes}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKthjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKthjubj)}(hX``u8 out[static AES_BLOCK_SIZE]`` (output) The resulting AES-CMAC or AES-XCBC-MAC value h](j)}(h!``u8 out[static AES_BLOCK_SIZE]``h]j)}(hjzh]hu8 out[static AES_BLOCK_SIZE]}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKuhjtubj)}(hhh]h)}(h5(output) The resulting AES-CMAC or AES-XCBC-MAC valueh]h5(output) The resulting AES-CMAC or AES-XCBC-MAC value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKuhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhKuhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKwhjubh)}(hThis supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() was called.h]hThis supports both AES-CMAC and AES-XCBC-MAC. Which one is done depends on whether aes_cmac_preparekey() or aes_xcbcmac_preparekey() was called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKvhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKyhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:11: ./include/crypto/aes-cbc-macs.hhKzhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]aes-cmac-and-aes-xcbc-macah ]h"]aes-cmac and aes-xcbc-macah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hBLAKE2bh]hBLAKE2b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h4Support for the BLAKE2b cryptographic hash function.h]h4Support for the BLAKE2b cryptographic hash function.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_ctx (C struct) c.blake2b_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h blake2b_ctxh]j)}(hstruct blake2b_ctxh](j!)}(hj$h]hstructw}(hjHhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjDhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKubj3)}(h h]h }(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDhhhjUhKubjD)}(h blake2b_ctxh]jJ)}(hjBh]h blake2b_ctx}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjDhhhjUhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj@hhhjUhKubah}(h]j;ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjUhKhj=hhubjv)}(hhh]h)}(h*Context for hashing a message with BLAKE2bh]h*Context for hashing a message with BLAKE2b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhj=hhhjUhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct blake2b_ctx { u64 h[8]; u64 t[2]; u64 f[2]; u8 buf[BLAKE2B_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; }; **Members** ``h`` compression function state ``t`` block counter ``f`` finalization indicator ``buf`` partial block buffer; 'buflen' bytes are valid ``buflen`` number of bytes buffered in **buf** ``outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubj)}(hstruct blake2b_ctx { u64 h[8]; u64 t[2]; u64 f[2]; u8 buf[BLAKE2B_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; };h]hstruct blake2b_ctx { u64 h[8]; u64 t[2]; u64 f[2]; u8 buf[BLAKE2B_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK%hjubj)}(hhh](j)}(h!``h`` compression function state h](j)}(h``h``h]j)}(hjh]hh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubj)}(hhh]h)}(hcompression function stateh]hcompression function state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(h``t`` block counter h](j)}(h``t``h]j)}(hj0h]ht}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj*ubj)}(hhh]h)}(h block counterh]h block counter}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhKhjubj)}(h``f`` finalization indicator h](j)}(h``f``h]j)}(hjih]hf}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjcubj)}(hhh]h)}(hfinalization indicatorh]hfinalization indicator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKhjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj~hKhjubj)}(h7``buf`` partial block buffer; 'buflen' bytes are valid h](j)}(h``buf``h]j)}(hjh]hbuf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubj)}(hhh]h)}(h.partial block buffer; 'buflen' bytes are validh]h2partial block buffer; ‘buflen’ bytes are valid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h/``buflen`` number of bytes buffered in **buf** h](j)}(h ``buflen``h]j)}(hjh]hbuflen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubj)}(hhh]h)}(h#number of bytes buffered in **buf**h](hnumber of bytes buffered in }(hjhhhNhNubj)}(h**buf**h]hbuf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hJ``outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh](j)}(h ``outlen``h]j)}(hj"h]houtlen}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZE}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj8ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj7hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_init (C function)c.blake2b_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h:void blake2b_init (struct blake2b_ctx *ctx, size_t outlen)h]j)}(h9void blake2b_init(struct blake2b_ctx *ctx, size_t outlen)h](j!)}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjxhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKLubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxhhhjhKLubjD)}(h blake2b_inith]jJ)}(h blake2b_inith]h blake2b_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjxhhhjhKLubjY)}(h((struct blake2b_ctx *ctx, size_t outlen)h](j_)}(hstruct blake2b_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h blake2b_ctxh]h blake2b_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.blake2b_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]jc.blake2b_initasbuh1hhj'ubj3)}(h h]h }(hjLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'ubjJ)}(houtlenh]houtlen}(hjZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjxhhhjhKLubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjthhhjhKLubah}(h]joah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKLhjqhhubjv)}(hhh]h)}(h8Initialize a BLAKE2b context for a new message (unkeyed)h]h8Initialize a BLAKE2b context for a new message (unkeyed)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKLhjhhubah}(h]h ]h"]h$]h&]uh1juhjqhhhjhKLubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct blake2b_ctx *ctx`` the context to initialize ``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKPhjubj)}(hhh](j)}(h6``struct blake2b_ctx *ctx`` the context to initialize h](j)}(h``struct blake2b_ctx *ctx``h]j)}(hjh]hstruct blake2b_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKMhjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKMhjubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hjh]h size_t outlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKNhjubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKNhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKNhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hj9h]hContext}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKPhjubh)}(h Any context.h]h Any context.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKPhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_init_key (C function)c.blake2b_init_keyhNtauh1hhjhhhNhNubj)}(hhh](j)}(h^void blake2b_init_key (struct blake2b_ctx *ctx, size_t outlen, const void *key, size_t keylen)h]j)}(h]void blake2b_init_key(struct blake2b_ctx *ctx, size_t outlen, const void *key, size_t keylen)h](j!)}(hvoidh]hvoid}(hj~hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjzhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKXubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzhhhjhKXubjD)}(hblake2b_init_keyh]jJ)}(hblake2b_init_keyh]hblake2b_init_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjzhhhjhKXubjY)}(hH(struct blake2b_ctx *ctx, size_t outlen, const void *key, size_t keylen)h](j_)}(hstruct blake2b_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h blake2b_ctxh]h blake2b_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.blake2b_init_keyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]jc.blake2b_init_keyasbuh1hhj)ubj3)}(h h]h }(hjNhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubjJ)}(houtlenh]houtlen}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst void *keyh](j!)}(hjh]hconst}(hjuhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjqubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjqubj!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjqubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjqubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t keylenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.blake2b_init_keyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hkeylenh]hkeylen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjzhhhjhKXubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjvhhhjhKXubah}(h]jqah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKXhjshhubjv)}(hhh]h)}(h6Initialize a BLAKE2b context for a new message (keyed)h]h6Initialize a BLAKE2b context for a new message (keyed)}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKXhj(hhubah}(h]h ]h"]h$]h&]uh1juhjshhhjhKXubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCjjCjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct blake2b_ctx *ctx`` the context to initialize ``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE ``const void *key`` the key ``size_t keylen`` the key length in bytes, at most BLAKE2B_KEY_SIZE **Context** Any context.h](h)}(h**Parameters**h]j)}(hjMh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK\hjGubj)}(hhh](j)}(h6``struct blake2b_ctx *ctx`` the context to initialize h](j)}(h``struct blake2b_ctx *ctx``h]j)}(hjlh]hstruct blake2b_ctx *ctx}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKYhjfubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKYhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjhKYhjcubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hjh]h size_t outlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKZhjubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKZhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKZhjcubj)}(h``const void *key`` the key h](j)}(h``const void *key``h]j)}(hjh]hconst void *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK[hjubj)}(hhh]h)}(hthe keyh]hthe key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK[hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK[hjcubj)}(hD``size_t keylen`` the key length in bytes, at most BLAKE2B_KEY_SIZE h](j)}(h``size_t keylen``h]j)}(hjh]h size_t keylen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK\hjubj)}(hhh]h)}(h1the key length in bytes, at most BLAKE2B_KEY_SIZEh]h1the key length in bytes, at most BLAKE2B_KEY_SIZE}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hK\hj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj,hK\hjcubeh}(h]h ]h"]h$]h&]uh1jhjGubh)}(h **Context**h]j)}(hjRh]hContext}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK^hjGubh)}(h Any context.h]h Any context.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK^hjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_update (C function)c.blake2b_updatehNtauh1hhjhhhNhNubj)}(hhh](j)}(hIvoid blake2b_update (struct blake2b_ctx *ctx, const u8 *in, size_t inlen)h]j)}(hHvoid blake2b_update(struct blake2b_ctx *ctx, const u8 *in, size_t inlen)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKjubjD)}(hblake2b_updateh]jJ)}(hblake2b_updateh]hblake2b_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKjubjY)}(h5(struct blake2b_ctx *ctx, const u8 *in, size_t inlen)h](j_)}(hstruct blake2b_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h blake2b_ctxh]h blake2b_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.blake2b_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h const u8 *inh](j!)}(hjh]hconst}(hjFhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjBubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubh)}(hhh]jJ)}(hu8h]hu8}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]jc.blake2b_updateasbuh1hhjBubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubjJ)}(hinh]hin}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.blake2b_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hinlenh]hinlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKjubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKjubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKjhjhhubjv)}(hhh]h)}(h*Update a BLAKE2b context with message datah]h*Update a BLAKE2b context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKjhj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKjubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'jj'jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct blake2b_ctx *ctx`` the context to update; must have been initialized ``const u8 *in`` the message data ``size_t inlen`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKnhj+ubj)}(hhh](j)}(hN``struct blake2b_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct blake2b_ctx *ctx``h]j)}(hjPh]hstruct blake2b_ctx *ctx}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKkhjJubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKkhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehKkhjGubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hjh]h const u8 *in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKlhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKlhjGubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hjh]h size_t inlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKmhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKmhjGubeh}(h]h ]h"]h$]h&]uh1jhj+ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKohj+ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKnhj+ubh)}(h **Context**h]j)}(hj$h]hContext}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKphj+ubh)}(h Any context.h]h Any context.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKqhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_final (C function)c.blake2b_finalhNtauh1hhjhhhNhNubj)}(hhh](j)}(h5void blake2b_final (struct blake2b_ctx *ctx, u8 *out)h]j)}(h4void blake2b_final(struct blake2b_ctx *ctx, u8 *out)h](j!)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjehhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKvubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjehhhjwhKvubjD)}(h blake2b_finalh]jJ)}(h blake2b_finalh]h blake2b_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjehhhjwhKvubjY)}(h"(struct blake2b_ctx *ctx, u8 *out)h](j_)}(hstruct blake2b_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h blake2b_ctxh]h blake2b_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.blake2b_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.blake2b_finalasbuh1hhj ubj3)}(h h]h }(hj9 hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hjG hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(houth]hout}(hjT hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjehhhjwhKvubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjahhhjwhKvubah}(h]j\ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjwhKvhj^hhubjv)}(hhh]h)}(hFinish computing a BLAKE2b hashh]hFinish computing a BLAKE2b hash}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKvhj{ hhubah}(h]h ]h"]h$]h&]uh1juhj^hhhjwhKvubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(hXx**Parameters** ``struct blake2b_ctx *ctx`` the context to finalize; must have been initialized ``u8 *out`` (output) the resulting BLAKE2b hash. Its length will be equal to the **outlen** that was passed to blake2b_init() or blake2b_init_key(). **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&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKzhj ubj)}(hhh](j)}(hP``struct blake2b_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct blake2b_ctx *ctx``h]j)}(hj h]hstruct blake2b_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKwhj ubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKwhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKwhj ubj)}(h``u8 *out`` (output) the resulting BLAKE2b hash. Its length will be equal to the **outlen** that was passed to blake2b_init() or blake2b_init_key(). h](j)}(h ``u8 *out``h]j)}(hj h]hu8 *out}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKyhj ubj)}(hhh]h)}(h(output) the resulting BLAKE2b hash. Its length will be equal to the **outlen** that was passed to blake2b_init() or blake2b_init_key().h](hF(output) the resulting BLAKE2b hash. Its length will be equal to the }(hj!hhhNhNubj)}(h **outlen**h]houtlen}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh9 that was passed to blake2b_init() or blake2b_init_key().}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKxhj!ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj !hKyhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjF!h]h Description}(hjH!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD!ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK{hj ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj\!hhhNhNubj)}(h**ctx**h]hctx}(hjd!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\!ubh(. So the caller does not need to do it.}(hj\!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKzhj ubh)}(h **Context**h]j)}(hj!h]hContext}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}!ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK|hj ubh)}(h Any context.h]h Any context.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhK}hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b (C function) c.blake2bhNtauh1hhjhhhNhNubj)}(hhh](j)}(h_void blake2b (const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h]j)}(h^void blake2b(const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h](j!)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj!hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKubj3)}(h h]h }(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!hhhj!hKubjD)}(hblake2bh]jJ)}(hblake2bh]hblake2b}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj!hhhj!hKubjY)}(hR(const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h](j_)}(h const u8 *keyh](j!)}(hjh]hconst}(hj"hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj!ubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubh)}(hhh]jJ)}(hu8h]hu8}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!"modnameN classnameNjj)}j]j)}jj!sb c.blake2basbuh1hhj!ubj3)}(h h]h }(hj?"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubj)}(hjh]h*}(hjM"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjJ)}(hkeyh]hkey}(hjZ"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubj_)}(h size_t keylenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjv"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjs"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjx"modnameN classnameNjj)}j]j;" c.blake2basbuh1hhjo"ubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjo"ubjJ)}(hkeylenh]hkeylen}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjo"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubj_)}(h const u8 *inh](j!)}(hjh]hconst}(hj"hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj"ubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubh)}(hhh]jJ)}(hu8h]hu8}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j;" c.blake2basbuh1hhj"ubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjJ)}(hinh]hin}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubj_)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj.#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0#modnameN classnameNjj)}j]j;" c.blake2basbuh1hhj'#ubj3)}(h h]h }(hjL#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'#ubjJ)}(hinlenh]hinlen}(hjZ#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubj_)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hjv#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjs#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjx#modnameN classnameNjj)}j]j;" c.blake2basbuh1hhjo#ubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjo#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo#ubjJ)}(houth]hout}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjo#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j;" c.blake2basbuh1hhj#ubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubjJ)}(houtlenh]houtlen}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!ubeh}(h]h ]h"]h$]h&]hhuh1jXhj!hhhj!hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj!hhhj!hKubah}(h]j!ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj!hKhj!hhubjv)}(hhh]h)}(h Compute BLAKE2b hash in one shoth]h Compute BLAKE2b hash in one shot}(hj!$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1juhj!hhhj!hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9$jj9$jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``const u8 *key`` the key, or NULL for an unkeyed hash ``size_t keylen`` the key length in bytes (at most BLAKE2B_KEY_SIZE), or 0 for an unkeyed hash ``const u8 *in`` the message data ``size_t inlen`` the data length in bytes ``u8 *out`` (output) the resulting BLAKE2b hash, with length **outlen** ``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE **Context** Any context.h](h)}(h**Parameters**h]j)}(hjC$h]h Parameters}(hjE$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA$ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj=$ubj)}(hhh](j)}(h7``const u8 *key`` the key, or NULL for an unkeyed hash h](j)}(h``const u8 *key``h]j)}(hjb$h]h const u8 *key}(hjd$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`$ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj\$ubj)}(hhh]h)}(h$the key, or NULL for an unkeyed hashh]h$the key, or NULL for an unkeyed hash}(hj{$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw$hKhjx$ubah}(h]h ]h"]h$]h&]uh1jhj\$ubeh}(h]h ]h"]h$]h&]uh1jhjw$hKhjY$ubj)}(h_``size_t keylen`` the key length in bytes (at most BLAKE2B_KEY_SIZE), or 0 for an unkeyed hash h](j)}(h``size_t keylen``h]j)}(hj$h]h size_t keylen}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj$ubj)}(hhh]h)}(hLthe key length in bytes (at most BLAKE2B_KEY_SIZE), or 0 for an unkeyed hashh]hLthe key length in bytes (at most BLAKE2B_KEY_SIZE), or 0 for an unkeyed hash}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhjY$ubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hj$h]h const u8 *in}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj$ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhjY$ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hj%h]h size_t inlen}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj %ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj%ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj'%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#%hKhj$%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj#%hKhjY$ubj)}(hH``u8 *out`` (output) the resulting BLAKE2b hash, with length **outlen** h](j)}(h ``u8 *out``h]j)}(hjG%h]hu8 *out}(hjI%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE%ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhjA%ubj)}(hhh]h)}(h;(output) the resulting BLAKE2b hash, with length **outlen**h](h1(output) the resulting BLAKE2b hash, with length }(hj`%hhhNhNubj)}(h **outlen**h]houtlen}(hjh%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`%ubeh}(h]h ]h"]h$]h&]uh1hhj\%hKhj]%ubah}(h]h ]h"]h$]h&]uh1jhjA%ubeh}(h]h ]h"]h$]h&]uh1jhj\%hKhjY$ubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hj%h]h size_t outlen}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj%ubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2B_HASH_SIZE}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhjY$ubeh}(h]h ]h"]h$]h&]uh1jhj=$ubh)}(h **Context**h]j)}(hj%h]hContext}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj=$ubh)}(h Any context.h]h Any context.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:18: ./include/crypto/blake2b.hhKhj=$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]blake2bah ]h"]blake2bah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hBLAKE2sh]hBLAKE2s}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hhhhhKubh)}(h4Support for the BLAKE2s cryptographic hash function.h]h4Support for the BLAKE2s cryptographic hash function.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_ctx (C struct) c.blake2s_ctxhNtauh1hhj%hhhNhNubj)}(hhh](j)}(h blake2s_ctxh]j)}(hstruct blake2s_ctxh](j!)}(hj$h]hstruct}(hj5&hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj1&hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKubj3)}(h h]h }(hjC&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1&hhhjB&hKubjD)}(h blake2s_ctxh]jJ)}(hj/&h]h blake2s_ctx}(hjU&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQ&ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj1&hhhjB&hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj-&hhhjB&hKubah}(h]j(&ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjB&hKhj*&hhubjv)}(hhh]h)}(h*Context for hashing a message with BLAKE2sh]h*Context for hashing a message with BLAKE2s}(hjw&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhjt&hhubah}(h]h ]h"]h$]h&]uh1juhj*&hhhjB&hKubeh}(h]h ](jstructeh"]h$]h&]jjjj&jj&jjjuh1jhhhj%hNhNubj)}(hX**Definition**:: struct blake2s_ctx { u32 h[8]; u32 t[2]; u32 f[2]; u8 buf[BLAKE2S_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; }; **Members** ``h`` compression function state ``t`` block counter ``f`` finalization indicator ``buf`` partial block buffer; 'buflen' bytes are valid ``buflen`` number of bytes buffered in **buf** ``outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubh:}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj&ubj)}(hstruct blake2s_ctx { u32 h[8]; u32 t[2]; u32 f[2]; u8 buf[BLAKE2S_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; };h]hstruct blake2s_ctx { u32 h[8]; u32 t[2]; u32 f[2]; u8 buf[BLAKE2S_BLOCK_SIZE]; unsigned int buflen; unsigned int outlen; };}hj&sbah}(h]h ]h"]h$]h&]hhuh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK hj&ubh)}(h **Members**h]j)}(hj&h]hMembers}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK)hj&ubj)}(hhh](j)}(h!``h`` compression function state h](j)}(h``h``h]j)}(hj&h]hh}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj&ubj)}(hhh]h)}(hcompression function stateh]hcompression function state}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhj&ubj)}(h``t`` block counter h](j)}(h``t``h]j)}(hj'h]ht}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj'ubj)}(hhh]h)}(h block counterh]h block counter}(hj6'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2'hKhj3'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj2'hKhj&ubj)}(h``f`` finalization indicator h](j)}(h``f``h]j)}(hjV'h]hf}(hjX'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhjP'ubj)}(hhh]h)}(hfinalization indicatorh]hfinalization indicator}(hjo'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk'hKhjl'ubah}(h]h ]h"]h$]h&]uh1jhjP'ubeh}(h]h ]h"]h$]h&]uh1jhjk'hKhj&ubj)}(h7``buf`` partial block buffer; 'buflen' bytes are valid h](j)}(h``buf``h]j)}(hj'h]hbuf}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj'ubj)}(hhh]h)}(h.partial block buffer; 'buflen' bytes are validh]h2partial block buffer; ‘buflen’ bytes are valid}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hKhj&ubj)}(h/``buflen`` number of bytes buffered in **buf** h](j)}(h ``buflen``h]j)}(hj'h]hbuflen}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK hj'ubj)}(hhh]h)}(h#number of bytes buffered in **buf**h](hnumber of bytes buffered in }(hj'hhhNhNubj)}(h**buf**h]hbuf}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1hhj'hK hj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hK hj&ubj)}(hJ``outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh](j)}(h ``outlen``h]j)}(hj(h]houtlen}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj (ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK hj (ubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZE}(hj((hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK!hj%(ubah}(h]h ]h"]h$]h&]uh1jhj (ubeh}(h]h ]h"]h$]h&]uh1jhj$(hK hj&ubeh}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_init (C function)c.blake2s_inithNtauh1hhj%hhhNhNubj)}(hhh](j)}(h:void blake2s_init (struct blake2s_ctx *ctx, size_t outlen)h]j)}(h9void blake2s_init(struct blake2s_ctx *ctx, size_t outlen)h](j!)}(hvoidh]hvoid}(hji(hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hje(hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKPubj3)}(h h]h }(hjx(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hje(hhhjw(hKPubjD)}(h blake2s_inith]jJ)}(h blake2s_inith]h blake2s_init}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChje(hhhjw(hKPubjY)}(h((struct blake2s_ctx *ctx, size_t outlen)h](j_)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj(hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj(ubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j)}jj(sbc.blake2s_initasbuh1hhj(ubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjJ)}(hctxh]hctx}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj(ubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j(c.blake2s_initasbuh1hhj)ubj3)}(h h]h }(hj9)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubjJ)}(houtlenh]houtlen}(hjG)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj(ubeh}(h]h ]h"]h$]h&]hhuh1jXhje(hhhjw(hKPubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihja(hhhjw(hKPubah}(h]j\(ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjw(hKPhj^(hhubjv)}(hhh]h)}(h8Initialize a BLAKE2s context for a new message (unkeyed)h]h8Initialize a BLAKE2s context for a new message (unkeyed)}(hjq)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKPhjn)hhubah}(h]h ]h"]h$]h&]uh1juhj^(hhhjw(hKPubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1jhhhj%hNhNubj)}(h**Parameters** ``struct blake2s_ctx *ctx`` the context to initialize ``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE **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&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKThj)ubj)}(hhh](j)}(h6``struct blake2s_ctx *ctx`` the context to initialize h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hj)h]hstruct blake2s_ctx *ctx}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKQhj)ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKQhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hKQhj)ubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hj)h]h size_t outlen}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKRhj)ubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZE}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKRhj*ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj*hKRhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)ubh)}(h **Context**h]j)}(hj&*h]hContext}(hj(*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$*ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKThj)ubh)}(h Any context.h]h Any context.}(hj<*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKThj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_init_key (C function)c.blake2s_init_keyhNtauh1hhj%hhhNhNubj)}(hhh](j)}(h^void blake2s_init_key (struct blake2s_ctx *ctx, size_t outlen, const void *key, size_t keylen)h]j)}(h]void blake2s_init_key(struct blake2s_ctx *ctx, size_t outlen, const void *key, size_t keylen)h](j!)}(hvoidh]hvoid}(hjk*hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjg*hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK\ubj3)}(h h]h }(hjz*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjg*hhhjy*hK\ubjD)}(hblake2s_init_keyh]jJ)}(hblake2s_init_keyh]hblake2s_init_key}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjg*hhhjy*hK\ubjY)}(hH(struct blake2s_ctx *ctx, size_t outlen, const void *key, size_t keylen)h](j_)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj*hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*ubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jj*sbc.blake2s_init_keyasbuh1hhj*ubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjJ)}(hctxh]hctx}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j*c.blake2s_init_keyasbuh1hhj+ubj3)}(h h]h }(hj;+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubjJ)}(houtlenh]houtlen}(hjI+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubj_)}(hconst void *keyh](j!)}(hjh]hconst}(hjb+hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj^+ubj3)}(h h]h }(hjo+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^+ubj!)}(hvoidh]hvoid}(hj}+hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj^+ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^+ubjJ)}(hkeyh]hkey}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubj_)}(h size_t keylenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j*c.blake2s_init_keyasbuh1hhj+ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubjJ)}(hkeylenh]hkeylen}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubeh}(h]h ]h"]h$]h&]hhuh1jXhjg*hhhjy*hK\ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjc*hhhjy*hK\ubah}(h]j^*ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjy*hK\hj`*hhubjv)}(hhh]h)}(h6Initialize a BLAKE2s context for a new message (keyed)h]h6Initialize a BLAKE2s context for a new message (keyed)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK\hj,hhubah}(h]h ]h"]h$]h&]uh1juhj`*hhhjy*hK\ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj0,jj0,jjjuh1jhhhj%hNhNubj)}(hX**Parameters** ``struct blake2s_ctx *ctx`` the context to initialize ``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE ``const void *key`` the key ``size_t keylen`` the key length in bytes, at most BLAKE2S_KEY_SIZE **Context** Any context.h](h)}(h**Parameters**h]j)}(hj:,h]h Parameters}(hj<,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8,ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK`hj4,ubj)}(hhh](j)}(h6``struct blake2s_ctx *ctx`` the context to initialize h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hjY,h]hstruct blake2s_ctx *ctx}(hj[,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW,ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK]hjS,ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjr,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjn,hK]hjo,ubah}(h]h ]h"]h$]h&]uh1jhjS,ubeh}(h]h ]h"]h$]h&]uh1jhjn,hK]hjP,ubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hj,h]h size_t outlen}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK^hj,ubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZE}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hK^hj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hK^hjP,ubj)}(h``const void *key`` the key h](j)}(h``const void *key``h]j)}(hj,h]hconst void *key}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK_hj,ubj)}(hhh]h)}(hthe keyh]hthe key}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hK_hj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hK_hjP,ubj)}(hD``size_t keylen`` the key length in bytes, at most BLAKE2S_KEY_SIZE h](j)}(h``size_t keylen``h]j)}(hj-h]h size_t keylen}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK`hj,ubj)}(hhh]h)}(h1the key length in bytes, at most BLAKE2S_KEY_SIZEh]h1the key length in bytes, at most BLAKE2S_KEY_SIZE}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hK`hj-ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj-hK`hjP,ubeh}(h]h ]h"]h$]h&]uh1jhj4,ubh)}(h **Context**h]j)}(hj?-h]hContext}(hjA-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=-ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKbhj4,ubh)}(h Any context.h]h Any context.}(hjU-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKbhj4,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_update (C function)c.blake2s_updatehNtauh1hhj%hhhNhNubj)}(hhh](j)}(hIvoid blake2s_update (struct blake2s_ctx *ctx, const u8 *in, size_t inlen)h]j)}(hHvoid blake2s_update(struct blake2s_ctx *ctx, const u8 *in, size_t inlen)h](j!)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKnubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-hhhj-hKnubjD)}(hblake2s_updateh]jJ)}(hblake2s_updateh]hblake2s_update}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj-hhhj-hKnubjY)}(h5(struct blake2s_ctx *ctx, const u8 *in, size_t inlen)h](j_)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj-hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-ubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j)}jj-sbc.blake2s_updateasbuh1hhj-ubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubj)}(hjh]h*}(hj .hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjJ)}(hctxh]hctx}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubj_)}(h const u8 *inh](j!)}(hjh]hconst}(hj3.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj/.ubj3)}(h h]h }(hj@.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj/.ubh)}(hhh]jJ)}(hu8h]hu8}(hjQ.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjN.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjS.modnameN classnameNjj)}j]j-c.blake2s_updateasbuh1hhj/.ubj3)}(h h]h }(hjo.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj/.ubj)}(hjh]h*}(hj}.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/.ubjJ)}(hinh]hin}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj/.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubj_)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j-c.blake2s_updateasbuh1hhj.ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubjJ)}(hinlenh]hinlen}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubeh}(h]h ]h"]h$]h&]hhuh1jXhj-hhhj-hKnubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj|-hhhj-hKnubah}(h]jw-ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj-hKnhjy-hhubjv)}(hhh]h)}(h*Update a BLAKE2s context with message datah]h*Update a BLAKE2s context with message data}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKnhj.hhubah}(h]h ]h"]h$]h&]uh1juhjy-hhhj-hKnubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1jhhhj%hNhNubj)}(hX**Parameters** ``struct blake2s_ctx *ctx`` the context to update; must have been initialized ``const u8 *in`` the message data ``size_t inlen`` the data length in bytes **Description** This can be called any number of times. **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&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKrhj/ubj)}(hhh](j)}(hN``struct blake2s_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hj=/h]hstruct blake2s_ctx *ctx}(hj?/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;/ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKohj7/ubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjV/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjR/hKohjS/ubah}(h]h ]h"]h$]h&]uh1jhj7/ubeh}(h]h ]h"]h$]h&]uh1jhjR/hKohj4/ubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hjv/h]h const u8 *in}(hjx/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt/ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKphjp/ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKphj/ubah}(h]h ]h"]h$]h&]uh1jhjp/ubeh}(h]h ]h"]h$]h&]uh1jhj/hKphj4/ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hj/h]h size_t inlen}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKqhj/ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKqhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hKqhj4/ubeh}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h**Description**h]j)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKshj/ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKrhj/ubh)}(h **Context**h]j)}(hj0h]hContext}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKthj/ubh)}(h Any context.h]h Any context.}(hj'0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKuhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_final (C function)c.blake2s_finalhNtauh1hhj%hhhNhNubj)}(hhh](j)}(h5void blake2s_final (struct blake2s_ctx *ctx, u8 *out)h]j)}(h4void blake2s_final(struct blake2s_ctx *ctx, u8 *out)h](j!)}(hvoidh]hvoid}(hjV0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjR0hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKzubj3)}(h h]h }(hje0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjR0hhhjd0hKzubjD)}(h blake2s_finalh]jJ)}(h blake2s_finalh]h blake2s_final}(hjw0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjs0ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjR0hhhjd0hKzubjY)}(h"(struct blake2s_ctx *ctx, u8 *out)h](j_)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0ubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jjy0sbc.blake2s_finalasbuh1hhj0ubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjJ)}(hctxh]hctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj0ubj_)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj 1modnameN classnameNjj)}j]j0c.blake2s_finalasbuh1hhj1ubj3)}(h h]h }(hj&1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubj)}(hjh]h*}(hj41hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjJ)}(houth]hout}(hjA1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj0ubeh}(h]h ]h"]h$]h&]hhuh1jXhjR0hhhjd0hKzubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjN0hhhjd0hKzubah}(h]jI0ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjd0hKzhjK0hhubjv)}(hhh]h)}(hFinish computing a BLAKE2s hashh]hFinish computing a BLAKE2s hash}(hjk1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKzhjh1hhubah}(h]h ]h"]h$]h&]uh1juhjK0hhhjd0hKzubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1jhhhj%hNhNubj)}(hXx**Parameters** ``struct blake2s_ctx *ctx`` the context to finalize; must have been initialized ``u8 *out`` (output) the resulting BLAKE2s hash. Its length will be equal to the **outlen** that was passed to blake2s_init() or blake2s_init_key(). **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK~hj1ubj)}(hhh](j)}(hP``struct blake2s_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hj1h]hstruct blake2s_ctx *ctx}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK{hj1ubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hK{hj1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1hK{hj1ubj)}(h``u8 *out`` (output) the resulting BLAKE2s hash. Its length will be equal to the **outlen** that was passed to blake2s_init() or blake2s_init_key(). h](j)}(h ``u8 *out``h]j)}(hj1h]hu8 *out}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK}hj1ubj)}(hhh]h)}(h(output) the resulting BLAKE2s hash. Its length will be equal to the **outlen** that was passed to blake2s_init() or blake2s_init_key().h](hF(output) the resulting BLAKE2s hash. Its length will be equal to the }(hj1hhhNhNubj)}(h **outlen**h]houtlen}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh9 that was passed to blake2s_init() or blake2s_init_key().}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK|hj1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1hK}hj1ubeh}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Description**h]j)}(hj32h]h Description}(hj52hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj12ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj1ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjI2hhhNhNubj)}(h**ctx**h]hctx}(hjQ2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI2ubh(. So the caller does not need to do it.}(hjI2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhK~hj1ubh)}(h **Context**h]j)}(hjl2h]hContext}(hjn2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj2ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj1ubh)}(h Any context.h]h Any context.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s (C function) c.blake2shNtauh1hhj%hhhNhNubj)}(hhh](j)}(h_void blake2s (const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h]j)}(h^void blake2s(const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h](j!)}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj2hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2hhhj2hKubjD)}(hblake2sh]jJ)}(hblake2sh]hblake2s}(hj2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj2ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj2hhhj2hKubjY)}(hR(const u8 *key, size_t keylen, const u8 *in, size_t inlen, u8 *out, size_t outlen)h](j_)}(h const u8 *keyh](j!)}(hjh]hconst}(hj2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj2ubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubh)}(hhh]jJ)}(hu8h]hu8}(hj 3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj 3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jj2sb c.blake2sasbuh1hhj2ubj3)}(h h]h }(hj,3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubj)}(hjh]h*}(hj:3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjJ)}(hkeyh]hkey}(hjG3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(h size_t keylenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjc3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetje3modnameN classnameNjj)}j]j(3 c.blake2sasbuh1hhj\3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\3ubjJ)}(hkeylenh]hkeylen}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(h const u8 *inh](j!)}(hjh]hconst}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hu8h]hu8}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j(3 c.blake2sasbuh1hhj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjJ)}(hinh]hin}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4modnameN classnameNjj)}j]j(3 c.blake2sasbuh1hhj4ubj3)}(h h]h }(hj94hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubjJ)}(hinlenh]hinlen}(hjG4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hjc4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetje4modnameN classnameNjj)}j]j(3 c.blake2sasbuh1hhj\4ubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\4ubjJ)}(houth]hout}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4modnameN classnameNjj)}j]j(3 c.blake2sasbuh1hhj4ubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubjJ)}(houtlenh]houtlen}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubeh}(h]h ]h"]h$]h&]hhuh1jXhj2hhhj2hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj2hhhj2hKubah}(h]j2ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj2hKhj2hhubjv)}(hhh]h)}(h Compute BLAKE2s hash in one shoth]h Compute BLAKE2s hash in one shot}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj 5hhubah}(h]h ]h"]h$]h&]uh1juhj2hhhj2hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&5jj&5jjjuh1jhhhj%hNhNubj)}(hX**Parameters** ``const u8 *key`` the key, or NULL for an unkeyed hash ``size_t keylen`` the key length in bytes (at most BLAKE2S_KEY_SIZE), or 0 for an unkeyed hash ``const u8 *in`` the message data ``size_t inlen`` the data length in bytes ``u8 *out`` (output) the resulting BLAKE2s hash, with length **outlen** ``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE **Context** Any context.h](h)}(h**Parameters**h]j)}(hj05h]h Parameters}(hj25hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.5ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj*5ubj)}(hhh](j)}(h7``const u8 *key`` the key, or NULL for an unkeyed hash h](j)}(h``const u8 *key``h]j)}(hjO5h]h const u8 *key}(hjQ5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM5ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhjI5ubj)}(hhh]h)}(h$the key, or NULL for an unkeyed hashh]h$the key, or NULL for an unkeyed hash}(hjh5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd5hKhje5ubah}(h]h ]h"]h$]h&]uh1jhjI5ubeh}(h]h ]h"]h$]h&]uh1jhjd5hKhjF5ubj)}(h_``size_t keylen`` the key length in bytes (at most BLAKE2S_KEY_SIZE), or 0 for an unkeyed hash h](j)}(h``size_t keylen``h]j)}(hj5h]h size_t keylen}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj5ubj)}(hhh]h)}(hLthe key length in bytes (at most BLAKE2S_KEY_SIZE), or 0 for an unkeyed hashh]hLthe key length in bytes (at most BLAKE2S_KEY_SIZE), or 0 for an unkeyed hash}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKhjF5ubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hj5h]h const u8 *in}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj5ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKhjF5ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hj5h]h size_t inlen}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj5ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKhj6ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj6hKhjF5ubj)}(hH``u8 *out`` (output) the resulting BLAKE2s hash, with length **outlen** h](j)}(h ``u8 *out``h]j)}(hj46h]hu8 *out}(hj66hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj26ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj.6ubj)}(hhh]h)}(h;(output) the resulting BLAKE2s hash, with length **outlen**h](h1(output) the resulting BLAKE2s hash, with length }(hjM6hhhNhNubj)}(h **outlen**h]houtlen}(hjU6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM6ubeh}(h]h ]h"]h$]h&]uh1hhjI6hKhjJ6ubah}(h]h ]h"]h$]h&]uh1jhj.6ubeh}(h]h ]h"]h$]h&]uh1jhjI6hKhjF5ubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hj{6h]h size_t outlen}(hj}6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy6ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhju6ubj)}(hhh]h)}(h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZEh]h?length of output hash value in bytes, at most BLAKE2S_HASH_SIZE}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKhj6ubah}(h]h ]h"]h$]h&]uh1jhju6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKhjF5ubeh}(h]h ]h"]h$]h&]uh1jhj*5ubh)}(h **Context**h]j)}(hj6h]hContext}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj*5ubh)}(h Any context.h]h Any context.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:25: ./include/crypto/blake2s.hhKhj*5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj%hhhNhNubeh}(h]blake2sah ]h"]blake2sah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hGHASH and POLYVALh]hGHASH and POLYVAL}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hhhhhKubh)}(hSupport for the GHASH and POLYVAL universal hash functions. These algorithms are used only as internal components of other algorithms.h]hSupport for the GHASH and POLYVAL universal hash functions. These algorithms are used only as internal components of other algorithms.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_elem (C struct)c.polyval_elemhNtauh1hhj6hhhNhNubj)}(hhh](j)}(h polyval_elemh]j)}(hstruct polyval_elemh](j!)}(hj$h]hstruct}(hj"7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj7hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hj07hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7hhhj/7hKubjD)}(h polyval_elemh]jJ)}(hj7h]h polyval_elem}(hjB7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>7ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj7hhhj/7hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj7hhhj/7hKubah}(h]j7ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj/7hKhj7hhubjv)}(hhh]h)}(h&An element of the POLYVAL finite fieldh]h&An element of the POLYVAL finite field}(hjd7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhja7hhubah}(h]h ]h"]h$]h&]uh1juhj7hhhj/7hKubeh}(h]h ](jstructeh"]h$]h&]jjjj|7jj|7jjjuh1jhhhj6hNhNubj)}(hX**Definition**:: struct polyval_elem { union { u8 bytes[POLYVAL_BLOCK_SIZE]; struct { __le64 lo; __le64 hi; }; }; }; **Members** ``{unnamed_union}`` anonymous ``bytes`` View of the element as a byte array (unioned with **lo** and **hi**) ``{unnamed_struct}`` anonymous ``lo`` The low 64 terms of the element's polynomial ``hi`` The high 64 terms of the element's polynomialh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh:}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj7ubj)}(hstruct polyval_elem { union { u8 bytes[POLYVAL_BLOCK_SIZE]; struct { __le64 lo; __le64 hi; }; }; };h]hstruct polyval_elem { union { u8 bytes[POLYVAL_BLOCK_SIZE]; struct { __le64 lo; __le64 hi; }; }; };}hj7sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj7ubh)}(h **Members**h]j)}(hj7h]hMembers}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK#hj7ubj)}(hhh](j)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hj7h]h{unnamed_union}}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj7ubj)}(hhh]h)}(h anonymoush]h anonymous}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKhj7ubj)}(hO``bytes`` View of the element as a byte array (unioned with **lo** and **hi**) h](j)}(h ``bytes``h]j)}(hj 8h]hbytes}(hj 8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj8ubj)}(hhh]h)}(hDView of the element as a byte array (unioned with **lo** and **hi**)h](h2View of the element as a byte array (unioned with }(hj#8hhhNhNubj)}(h**lo**h]hlo}(hj+8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#8ubh and }(hj#8hhhNhNubj)}(h**hi**h]hhi}(hj=8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#8ubh)}(hj#8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj8hKhj 8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj7ubj)}(h``{unnamed_struct}`` anonymous h](j)}(h``{unnamed_struct}``h]j)}(hjg8h]h{unnamed_struct}}(hji8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje8ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhja8ubj)}(hhh]h)}(h anonymoush]h anonymous}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|8hKhj}8ubah}(h]h ]h"]h$]h&]uh1jhja8ubeh}(h]h ]h"]h$]h&]uh1jhj|8hKhj7ubj)}(h4``lo`` The low 64 terms of the element's polynomial h](j)}(h``lo``h]j)}(hj8h]hlo}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj8ubj)}(hhh]h)}(h,The low 64 terms of the element's polynomialh]h.The low 64 terms of the element’s polynomial}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj7ubj)}(h4``hi`` The high 64 terms of the element's polynomialh](j)}(h``hi``h]j)}(hj8h]hhi}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj8ubj)}(hhh]h)}(h-The high 64 terms of the element's polynomialh]h/The high 64 terms of the element’s polynomial}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(h**Description**h]j)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj6hhubh)}(hThis represents an element of the finite field GF(2^128), using the POLYVAL convention: little-endian byte order and natural bit order.h]hThis represents an element of the finite field GF(2^128), using the POLYVAL convention: little-endian byte order and natural bit order.}(hj29hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj6hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_key (C struct) c.ghash_keyhNtauh1hhj6hhhNhNubj)}(hhh](j)}(h ghash_keyh]j)}(hstruct ghash_keyh](j!)}(hj$h]hstruct}(hjZ9hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjV9hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjh9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjV9hhhjg9hKubjD)}(h ghash_keyh]jJ)}(hjT9h]h ghash_key}(hjz9hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjv9ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjV9hhhjg9hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjR9hhhjg9hKubah}(h]jM9ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjg9hKhjO9hhubjv)}(hhh]h)}(hPrepared key for GHASHh]hPrepared key for GHASH}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK&hj9hhubah}(h]h ]h"]h$]h&]uh1juhjO9hhhjg9hKubeh}(h]h ](jstructeh"]h$]h&]jjjj9jj9jjjuh1jhhhj6hNhNubj)}(hX**Definition**:: struct ghash_key { #if defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && defined(CONFIG_PPC64); u64 htable[4][2]; #elif defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && (defined(CONFIG_RISCV) || defined(CONFIG_S390)); u8 h_raw[GHASH_BLOCK_SIZE]; #endif; struct polyval_elem h; }; **Members** ``htable`` GHASH key format used by the POWER8 assembly code ``h_raw`` The hash key H, in GHASH format ``h`` The hash key H, in POLYVAL formath](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh:}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK*hj9ubj)}(hX"struct ghash_key { #if defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && defined(CONFIG_PPC64); u64 htable[4][2]; #elif defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && (defined(CONFIG_RISCV) || defined(CONFIG_S390)); u8 h_raw[GHASH_BLOCK_SIZE]; #endif; struct polyval_elem h; };h]hX"struct ghash_key { #if defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && defined(CONFIG_PPC64); u64 htable[4][2]; #elif defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && (defined(CONFIG_RISCV) || defined(CONFIG_S390)); u8 h_raw[GHASH_BLOCK_SIZE]; #endif; struct polyval_elem h; };}hj9sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK,hj9ubh)}(h **Members**h]j)}(hj9h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK5hj9ubj)}(hhh](j)}(h=``htable`` GHASH key format used by the POWER8 assembly code h](j)}(h ``htable``h]j)}(hj :h]hhtable}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK-hj:ubj)}(hhh]h)}(h1GHASH key format used by the POWER8 assembly codeh]h1GHASH key format used by the POWER8 assembly code}(hj":hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK-hj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hK-hj:ubj)}(h*``h_raw`` The hash key H, in GHASH format h](j)}(h ``h_raw``h]j)}(hjB:h]hh_raw}(hjD:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@:ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK1hj<:ubj)}(hhh]h)}(hThe hash key H, in GHASH formath]hThe hash key H, in GHASH format}(hj[:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW:hK1hjX:ubah}(h]h ]h"]h$]h&]uh1jhj<:ubeh}(h]h ]h"]h$]h&]uh1jhjW:hK1hj:ubj)}(h'``h`` The hash key H, in POLYVAL formath](j)}(h``h``h]j)}(hj{:h]hh}(hj}:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy:ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK3hju:ubj)}(hhh]h)}(h!The hash key H, in POLYVAL formath]h!The hash key H, in POLYVAL format}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK4hj:ubah}(h]h ]h"]h$]h&]uh1jhju:ubeh}(h]h ]h"]h$]h&]uh1jhj:hK3hj:ubeh}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(h**Description**h]j)}(hj:h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK7hj6hhubh)}(h*Use ghash_preparekey() to initialize this.h]h*Use ghash_preparekey() to initialize this.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK'hj6hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_key (C struct) c.polyval_keyhNtauh1hhj6hhhNhNubj)}(hhh](j)}(h polyval_keyh]j)}(hstruct polyval_keyh](j!)}(hj$h]hstruct}(hj:hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj:hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK,ubj3)}(h h]h }(hj ;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:hhhj ;hK,ubjD)}(h polyval_keyh]jJ)}(hj:h]h polyval_key}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj;ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj:hhhj ;hK,ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj:hhhj ;hK,ubah}(h]j:ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj ;hK,hj:hhubjv)}(hhh]h)}(hPrepared key for POLYVALh]hPrepared key for POLYVAL}(hj>;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK8hj;;hhubah}(h]h ]h"]h$]h&]uh1juhj:hhhj ;hK,ubeh}(h]h ](jstructeh"]h$]h&]jjjjV;jjV;jjjuh1jhhhj6hNhNubj)}(hXK**Definition**:: struct polyval_key { #if defined(CONFIG_CRYPTO_LIB_GF128HASH_ARCH) && (defined(CONFIG_ARM64) || defined(CONFIG_X86)); struct polyval_elem h_powers[8]; #else; struct polyval_elem h; #endif; }; **Members** ``h_powers`` Powers of the hash key H^8 through H^1 ``h`` The hash key Hh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjb;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^;ubh:}(hj^;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjZ;ubh)}(h **Members**h]j)}(hj;h]hMembers}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKFhjZ;ubj)}(hhh](j)}(h4``h_powers`` Powers of the hash key H^8 through H^1 h](j)}(h ``h_powers``h]j)}(hj;h]hh_powers}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKEhj;ubj)}(hhh]h)}(h&Powers of the hash key H^8 through H^1h]h&Powers of the hash key H^8 through H^1}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKEhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hKEhj;ubj)}(h``h`` The hash key Hh](j)}(h``h``h]j)}(hj;h]hh}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKGhj;ubj)}(hhh]h)}(hThe hash key Hh]hThe hash key H}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKHhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hKGhj;ubeh}(h]h ]h"]h$]h&]uh1jhjZ;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(h**Description**h]j)}(hj'<h]h Description}(hj)<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%<ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKKhj6hhubh)}(hThis may contain just the raw key H, or it may contain precomputed key powers, depending on the platform's POLYVAL implementation. Use polyval_preparekey() to initialize this.h]hThis may contain just the raw key H, or it may contain precomputed key powers, depending on the platform’s POLYVAL implementation. Use polyval_preparekey() to initialize this.}(hj=<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK9hj6hhubh)}(hBy H^i we mean H^(i-1) * H * x^-128, with base case H^1 = H. I.e. the exponentiation repeats the POLYVAL dot operation, with its "extra" x^-128.h]hBy H^i we mean H^(i-1) * H * x^-128, with base case H^1 = H. I.e. the exponentiation repeats the POLYVAL dot operation, with its “extra” x^-128.}(hjL<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK=hj6hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_ctx (C struct) c.ghash_ctxhNtauh1hhj6hhhNhNubj)}(hhh](j)}(h ghash_ctxh]j)}(hstruct ghash_ctxh](j!)}(hj$h]hstruct}(hjt<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjp<hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKCubj3)}(h h]h }(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjp<hhhj<hKCubjD)}(h ghash_ctxh]jJ)}(hjn<h]h ghash_ctx}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjp<hhhj<hKCubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjl<hhhj<hKCubah}(h]jg<ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj<hKChji<hhubjv)}(hhh]h)}(h#Context for computing a GHASH valueh]h#Context for computing a GHASH value}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKMhj<hhubah}(h]h ]h"]h$]h&]uh1juhji<hhhj<hKCubeh}(h]h ](jstructeh"]h$]h&]jjjj<jj<jjjuh1jhhhj6hNhNubj)}(hX**Definition**:: struct ghash_ctx { const struct ghash_key *key; struct polyval_elem acc; size_t partial; }; **Members** ``key`` Pointer to the prepared GHASH key. The user of the API is responsible for ensuring that the key lives as long as the context. ``acc`` The accumulator. It is stored in POLYVAL format rather than GHASH format, since most implementations want it in POLYVAL format. ``partial`` Number of data bytes processed so far modulo GHASH_BLOCK_SIZEh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh:}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKQhj<ubj)}(hgstruct ghash_ctx { const struct ghash_key *key; struct polyval_elem acc; size_t partial; };h]hgstruct ghash_ctx { const struct ghash_key *key; struct polyval_elem acc; size_t partial; };}hj<sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKShj<ubh)}(h **Members**h]j)}(hj=h]hMembers}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKYhj<ubj)}(hhh](j)}(h``key`` Pointer to the prepared GHASH key. The user of the API is responsible for ensuring that the key lives as long as the context. h](j)}(h``key``h]j)}(hj#=h]hkey}(hj%=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKPhj=ubj)}(hhh]h)}(h~Pointer to the prepared GHASH key. The user of the API is responsible for ensuring that the key lives as long as the context.h]h~Pointer to the prepared GHASH key. The user of the API is responsible for ensuring that the key lives as long as the context.}(hj<=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKOhj9=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj8=hKPhj=ubj)}(h``acc`` The accumulator. It is stored in POLYVAL format rather than GHASH format, since most implementations want it in POLYVAL format. h](j)}(h``acc``h]j)}(hj]=h]hacc}(hj_=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKRhjW=ubj)}(hhh]h)}(hThe accumulator. It is stored in POLYVAL format rather than GHASH format, since most implementations want it in POLYVAL format.h]hThe accumulator. It is stored in POLYVAL format rather than GHASH format, since most implementations want it in POLYVAL format.}(hjv=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKQhjs=ubah}(h]h ]h"]h$]h&]uh1jhjW=ubeh}(h]h ]h"]h$]h&]uh1jhjr=hKRhj=ubj)}(hI``partial`` Number of data bytes processed so far modulo GHASH_BLOCK_SIZEh](j)}(h ``partial``h]j)}(hj=h]hpartial}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKRhj=ubj)}(hhh]h)}(h=Number of data bytes processed so far modulo GHASH_BLOCK_SIZEh]h=Number of data bytes processed so far modulo GHASH_BLOCK_SIZE}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKShj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hKRhj=ubeh}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_ctx (C struct) c.polyval_ctxhNtauh1hhj6hhhNhNubj)}(hhh](j)}(h polyval_ctxh]j)}(hstruct polyval_ctxh](j!)}(hj$h]hstruct}(hj=hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj=hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKYubj3)}(h h]h }(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=hhhj=hKYubjD)}(h polyval_ctxh]jJ)}(hj=h]h polyval_ctx}(hj>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj >ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj=hhhj=hKYubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj=hhhj=hKYubah}(h]j=ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj=hKYhj=hhubjv)}(hhh]h)}(h%Context for computing a POLYVAL valueh]h%Context for computing a POLYVAL value}(hj3>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK[hj0>hhubah}(h]h ]h"]h$]h&]uh1juhj=hhhj=hKYubeh}(h]h ](jstructeh"]h$]h&]jjjjK>jjK>jjjuh1jhhhj6hNhNubj)}(hX**Definition**:: struct polyval_ctx { const struct polyval_key *key; struct polyval_elem acc; size_t partial; }; **Members** ``key`` Pointer to the prepared POLYVAL key. The user of the API is responsible for ensuring that the key lives as long as the context. ``acc`` The accumulator ``partial`` Number of data bytes processed so far modulo POLYVAL_BLOCK_SIZEh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjW>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS>ubh:}(hjS>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK_hjO>ubj)}(hkstruct polyval_ctx { const struct polyval_key *key; struct polyval_elem acc; size_t partial; };h]hkstruct polyval_ctx { const struct polyval_key *key; struct polyval_elem acc; size_t partial; };}hjp>sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKahjO>ubh)}(h **Members**h]j)}(hj>h]hMembers}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKghjO>ubj)}(hhh](j)}(h``key`` Pointer to the prepared POLYVAL key. The user of the API is responsible for ensuring that the key lives as long as the context. h](j)}(h``key``h]j)}(hj>h]hkey}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK^hj>ubj)}(hhh]h)}(hPointer to the prepared POLYVAL key. The user of the API is responsible for ensuring that the key lives as long as the context.h]hPointer to the prepared POLYVAL key. The user of the API is responsible for ensuring that the key lives as long as the context.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK]hj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hK^hj>ubj)}(h``acc`` The accumulator h](j)}(h``acc``h]j)}(hj>h]hacc}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK_hj>ubj)}(hhh]h)}(hThe accumulatorh]hThe accumulator}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hK_hj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hK_hj>ubj)}(hK``partial`` Number of data bytes processed so far modulo POLYVAL_BLOCK_SIZEh](j)}(h ``partial``h]j)}(hj?h]hpartial}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK_hj ?ubj)}(hhh]h)}(h?Number of data bytes processed so far modulo POLYVAL_BLOCK_SIZEh]h?Number of data bytes processed so far modulo POLYVAL_BLOCK_SIZE}(hj,?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK`hj)?ubah}(h]h ]h"]h$]h&]uh1jhj ?ubeh}(h]h ]h"]h$]h&]uh1jhj(?hK_hj>ubeh}(h]h ]h"]h$]h&]uh1jhjO>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_preparekey (C function)c.ghash_preparekeyhNtauh1hhj6hhhNhNubj)}(hhh](j)}(hQvoid ghash_preparekey (struct ghash_key *key, const u8 raw_key[GHASH_BLOCK_SIZE])h]j)}(hPvoid ghash_preparekey(struct ghash_key *key, const u8 raw_key[GHASH_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hjm?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hji?hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhubj3)}(h h]h }(hj|?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hji?hhhj{?hKhubjD)}(hghash_preparekeyh]jJ)}(hghash_preparekeyh]hghash_preparekey}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChji?hhhj{?hKhubjY)}(h;(struct ghash_key *key, const u8 raw_key[GHASH_BLOCK_SIZE])h](j_)}(hstruct ghash_key *keyh](j!)}(hj$h]hstruct}(hj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj?ubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubh)}(hhh]jJ)}(h ghash_keyh]h ghash_key}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jj?sbc.ghash_preparekeyasbuh1hhj?ubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjJ)}(hkeyh]hkey}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubj_)}(h"const u8 raw_key[GHASH_BLOCK_SIZE]h](j!)}(hjh]hconst}(hj@hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj@ubj3)}(h h]h }(hj)@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubh)}(hhh]jJ)}(hu8h]hu8}(hj:@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<@modnameN classnameNjj)}j]j?c.ghash_preparekeyasbuh1hhj@ubj3)}(h h]h }(hjX@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubjJ)}(hraw_keyh]hraw_key}(hjf@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubj)}(hjh]h[}(hjt@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubh)}(hhh]jJ)}(hGHASH_BLOCK_SIZEh]hGHASH_BLOCK_SIZE}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j?c.ghash_preparekeyasbuh1hhj@ubj)}(hj[h]h]}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubeh}(h]h ]h"]h$]h&]hhuh1jXhji?hhhj{?hKhubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihje?hhhj{?hKhubah}(h]j`?ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj{?hKhhjb?hhubjv)}(hhh]h)}(hPrepare a GHASH keyh]hPrepare a GHASH key}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhhj@hhubah}(h]h ]h"]h$]h&]uh1juhjb?hhhj{?hKhubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1jhhhj6hNhNubj)}(h**Parameters** ``struct ghash_key *key`` (output) The key structure to initialize ``const u8 raw_key[GHASH_BLOCK_SIZE]`` The raw hash key **Description** Initialize a GHASH key structure from a raw key. **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&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKlhj@ubj)}(hhh](j)}(hC``struct ghash_key *key`` (output) The key structure to initialize h](j)}(h``struct ghash_key *key``h]j)}(hj Ah]hstruct ghash_key *key}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Aubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKihjAubj)}(hhh]h)}(h((output) The key structure to initializeh]h((output) The key structure to initialize}(hj%AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!AhKihj"Aubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj!AhKihjAubj)}(h8``const u8 raw_key[GHASH_BLOCK_SIZE]`` The raw hash key h](j)}(h&``const u8 raw_key[GHASH_BLOCK_SIZE]``h]j)}(hjEAh]h"const u8 raw_key[GHASH_BLOCK_SIZE]}(hjGAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCAubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKjhj?Aubj)}(hhh]h)}(hThe raw hash keyh]hThe raw hash key}(hj^AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZAhKjhj[Aubah}(h]h ]h"]h$]h&]uh1jhj?Aubeh}(h]h ]h"]h$]h&]uh1jhjZAhKjhjAubeh}(h]h ]h"]h$]h&]uh1jhj@ubh)}(h**Description**h]j)}(hjAh]h Description}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~Aubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKlhj@ubh)}(h0Initialize a GHASH key structure from a raw key.h]h0Initialize a GHASH key structure from a raw key.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKkhj@ubh)}(h **Context**h]j)}(hjAh]hContext}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKmhj@ubh)}(h Any context.h]h Any context.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKnhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_preparekey (C function)c.polyval_preparekeyhNtauh1hhj6hhhNhNubj)}(hhh](j)}(hWvoid polyval_preparekey (struct polyval_key *key, const u8 raw_key[POLYVAL_BLOCK_SIZE])h]j)}(hVvoid polyval_preparekey(struct polyval_key *key, const u8 raw_key[POLYVAL_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hjAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjAhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKtubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAhhhjAhKtubjD)}(hpolyval_preparekeyh]jJ)}(hpolyval_preparekeyh]hpolyval_preparekey}(hj BhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Bubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjAhhhjAhKtubjY)}(h?(struct polyval_key *key, const u8 raw_key[POLYVAL_BLOCK_SIZE])h](j_)}(hstruct polyval_key *keyh](j!)}(hj$h]hstruct}(hj)BhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj%Bubj3)}(h h]h }(hj6BhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%Bubh)}(hhh]jJ)}(h polyval_keyh]h polyval_key}(hjGBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjIBmodnameN classnameNjj)}j]j)}jjBsbc.polyval_preparekeyasbuh1hhj%Bubj3)}(h h]h }(hjgBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%Bubj)}(hjh]h*}(hjuBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%BubjJ)}(hkeyh]hkey}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj%Bubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!Bubj_)}(h$const u8 raw_key[POLYVAL_BLOCK_SIZE]h](j!)}(hjh]hconst}(hjBhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjBubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubh)}(hhh]jJ)}(hu8h]hu8}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]jcBc.polyval_preparekeyasbuh1hhjBubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubjJ)}(hraw_keyh]hraw_key}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubj)}(hjh]h[}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubh)}(hhh]jJ)}(hPOLYVAL_BLOCK_SIZEh]hPOLYVAL_BLOCK_SIZE}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmodnameN classnameNjj)}j]jcBc.polyval_preparekeyasbuh1hhjBubj)}(hj[h]h]}(hj!ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj!Bubeh}(h]h ]h"]h$]h&]hhuh1jXhjAhhhjAhKtubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjAhhhjAhKtubah}(h]jAah ](jmjneh"]h$]h&]jrjs)jthuh1jhjAhKthjAhhubjv)}(hhh]h)}(hPrepare a POLYVAL keyh]hPrepare a POLYVAL key}(hjJChhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKthjGChhubah}(h]h ]h"]h$]h&]uh1juhjAhhhjAhKtubeh}(h]h ](jfunctioneh"]h$]h&]jjjjbCjjbCjjjuh1jhhhj6hNhNubj)}(hXu**Parameters** ``struct polyval_key *key`` (output) The key structure to initialize ``const u8 raw_key[POLYVAL_BLOCK_SIZE]`` The raw hash key **Description** Initialize a POLYVAL key structure from a raw key. This may be a simple copy, or it may involve precomputing powers of the key, depending on the platform's POLYVAL implementation. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjlCh]h Parameters}(hjnChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjCubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKxhjfCubj)}(hhh](j)}(hE``struct polyval_key *key`` (output) The key structure to initialize h](j)}(h``struct polyval_key *key``h]j)}(hjCh]hstruct polyval_key *key}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKuhjCubj)}(hhh]h)}(h((output) The key structure to initializeh]h((output) The key structure to initialize}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKuhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjChKuhjCubj)}(h:``const u8 raw_key[POLYVAL_BLOCK_SIZE]`` The raw hash key h](j)}(h(``const u8 raw_key[POLYVAL_BLOCK_SIZE]``h]j)}(hjCh]h$const u8 raw_key[POLYVAL_BLOCK_SIZE]}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKvhjCubj)}(hhh]h)}(hThe raw hash keyh]hThe raw hash key}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKvhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjChKvhjCubeh}(h]h ]h"]h$]h&]uh1jhjfCubh)}(h**Description**h]j)}(hjCh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKxhjfCubh)}(hInitialize a POLYVAL key structure from a raw key. This may be a simple copy, or it may involve precomputing powers of the key, depending on the platform's POLYVAL implementation.h]hInitialize a POLYVAL key structure from a raw key. This may be a simple copy, or it may involve precomputing powers of the key, depending on the platform’s POLYVAL implementation.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKwhjfCubh)}(h **Context**h]j)}(hj&Dh]hContext}(hj(DhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$Dubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhK{hjfCubh)}(h Any context.h]h Any context.}(hjThe data length in bytes. Doesn’t need to be block-aligned.}(hj:PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6PhKhj7Pubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhj6PhKhjOubeh}(h]h ]h"]h$]h&]uh1jhjOubh)}(h**Description**h]j)}(hj\Ph]h Description}(hj^PhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZPubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjOubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjrPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjOubh)}(h **Context**h]j)}(hjPh]hContext}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjOubh)}(h Any context.h]h Any context.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_update (C function)c.polyval_updatehNtauh1hhj6hhhNhNubj)}(hhh](j)}(hIvoid polyval_update (struct polyval_ctx *ctx, const u8 *data, size_t len)h]j)}(hHvoid polyval_update(struct polyval_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hjPhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjPhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPhhhjPhKubjD)}(hpolyval_updateh]jJ)}(hpolyval_updateh]hpolyval_update}(hjPhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjPubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjPhhhjPhKubjY)}(h5(struct polyval_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct polyval_ctx *ctxh](j!)}(hj$h]hstruct}(hjQhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjQubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubh)}(hhh]jJ)}(h polyval_ctxh]h polyval_ctx}(hj#QhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%QmodnameN classnameNjj)}j]j)}jjPsbc.polyval_updateasbuh1hhjQubj3)}(h h]h }(hjCQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubj)}(hjh]h*}(hjQQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjJ)}(hctxh]hctx}(hj^QhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjwQhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjsQubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsQubh)}(hhh]jJ)}(hu8h]hu8}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]j?Qc.polyval_updateasbuh1hhjsQubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsQubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsQubjJ)}(hdatah]hdata}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsQubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]j?Qc.polyval_updateasbuh1hhjQubj3)}(h h]h }(hjRhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubjJ)}(hlenh]hlen}(hjRhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubeh}(h]h ]h"]h$]h&]hhuh1jXhjPhhhjPhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjPhhhjPhKubah}(h]jPah ](jmjneh"]h$]h&]jrjs)jthuh1jhjPhKhjPhhubjv)}(hhh]h)}(h*Update a POLYVAL context with message datah]h*Update a POLYVAL context with message data}(hj@RhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj=Rhhubah}(h]h ]h"]h$]h&]uh1juhjPhhhjPhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXRjjXRjjjuh1jhhhj6hNhNubj)}(hX***Parameters** ``struct polyval_ctx *ctx`` The context to update; must have been initialized ``const u8 *data`` The message data ``size_t len`` The data length in bytes. Doesn't need to be block-aligned. **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjbRh]h Parameters}(hjdRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Rubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj\Rubj)}(hhh](j)}(hN``struct polyval_ctx *ctx`` The context to update; must have been initialized h](j)}(h``struct polyval_ctx *ctx``h]j)}(hjRh]hstruct polyval_ctx *ctx}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj{Rubj)}(hhh]h)}(h1The context to update; must have been initializedh]h1The context to update; must have been initialized}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjRubah}(h]h ]h"]h$]h&]uh1jhj{Rubeh}(h]h ]h"]h$]h&]uh1jhjRhKhjxRubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hjRh]hconst u8 *data}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjRubj)}(hhh]h)}(hThe message datah]hThe message data}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhKhjxRubj)}(hL``size_t len`` The data length in bytes. Doesn't need to be block-aligned. h](j)}(h``size_t len``h]j)}(hjRh]h size_t len}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjRubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hj ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKhj Subah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjShKhjxRubeh}(h]h ]h"]h$]h&]uh1jhj\Rubh)}(h**Description**h]j)}(hj.Sh]h Description}(hj0ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,Subah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj\Rubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjDShhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj\Rubh)}(h **Context**h]j)}(hjUSh]hContext}(hjWShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSSubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj\Rubh)}(h Any context.h]h Any context.}(hjkShhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj\Rubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_final (C function) c.ghash_finalhNtauh1hhj6hhhNhNubj)}(hhh](j)}(hBvoid ghash_final (struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE])h]j)}(hAvoid ghash_final(struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hjShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjShhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjShhhjShKubjD)}(h ghash_finalh]jJ)}(h ghash_finalh]h ghash_final}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjShhhjShKubjY)}(h1(struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE])h](j_)}(hstruct ghash_ctx *ctxh](j!)}(hj$h]hstruct}(hjShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjSubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubh)}(hhh]jJ)}(h ghash_ctxh]h ghash_ctx}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]j)}jjSsb c.ghash_finalasbuh1hhjSubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubj)}(hjh]h*}(hj#ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubjJ)}(hctxh]hctx}(hj0ThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjSubj_)}(hu8 out[GHASH_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjLThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjITubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNTmodnameN classnameNjj)}j]jT c.ghash_finalasbuh1hhjETubj3)}(h h]h }(hjjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjETubjJ)}(houth]hout}(hjxThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjETubj)}(hjh]h[}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjETubh)}(hhh]jJ)}(hGHASH_BLOCK_SIZEh]hGHASH_BLOCK_SIZE}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]jT c.ghash_finalasbuh1hhjETubj)}(hj[h]h]}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjETubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjSubeh}(h]h ]h"]h$]h&]hhuh1jXhjShhhjShKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjShhhjShKubah}(h]jSah ](jmjneh"]h$]h&]jrjs)jthuh1jhjShKhjShhubjv)}(hhh]h)}(hFinish computing a GHASH valueh]hFinish computing a GHASH value}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjThhubah}(h]h ]h"]h$]h&]uh1juhjShhhjShKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1jhhhj6hNhNubj)}(hXc**Parameters** ``struct ghash_ctx *ctx`` The context to finalize ``u8 out[GHASH_BLOCK_SIZE]`` The output value **Description** If the total data length isn't a multiple of GHASH_BLOCK_SIZE, then the final block is automatically zero-padded. After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjTh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubj)}(hhh](j)}(h2``struct ghash_ctx *ctx`` The context to finalize h](j)}(h``struct ghash_ctx *ctx``h]j)}(hjUh]hstruct ghash_ctx *ctx}(hj UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjUubj)}(hhh]h)}(hThe context to finalizeh]hThe context to finalize}(hj7UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3UhKhj4Uubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhj3UhKhjUubj)}(h.``u8 out[GHASH_BLOCK_SIZE]`` The output value h](j)}(h``u8 out[GHASH_BLOCK_SIZE]``h]j)}(hjWUh]hu8 out[GHASH_BLOCK_SIZE]}(hjYUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUUubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjQUubj)}(hhh]h)}(hThe output valueh]hThe output value}(hjpUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlUhKhjmUubah}(h]h ]h"]h$]h&]uh1jhjQUubeh}(h]h ]h"]h$]h&]uh1jhjlUhKhjUubeh}(h]h ]h"]h$]h&]uh1jhjTubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubh)}(hqIf the total data length isn't a multiple of GHASH_BLOCK_SIZE, then the final block is automatically zero-padded.h]hsIf the total data length isn’t a multiple of GHASH_BLOCK_SIZE, then the final block is automatically zero-padded.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjUhhhNhNubj)}(h**ctx**h]hctx}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh(. So the caller does not need to do it.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubh)}(h **Context**h]j)}(hjUh]hContext}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubh)}(h Any context.h]h Any context.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_final (C function)c.polyval_finalhNtauh1hhj6hhhNhNubj)}(hhh](j)}(hHvoid polyval_final (struct polyval_ctx *ctx, u8 out[POLYVAL_BLOCK_SIZE])h]j)}(hGvoid polyval_final(struct polyval_ctx *ctx, u8 out[POLYVAL_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hjVhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjVhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hj.VhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjVhhhj-VhKubjD)}(h polyval_finalh]jJ)}(h polyval_finalh]h polyval_final}(hj@VhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjThe data length in bytes. Doesn’t need to be block-aligned.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKhj[ubah}(h]h ]h"]h$]h&]uh1jhjg[ubeh}(h]h ]h"]h$]h&]uh1jhj[hKhjZubj)}(h.``u8 out[GHASH_BLOCK_SIZE]`` The output value h](j)}(h``u8 out[GHASH_BLOCK_SIZE]``h]j)}(hj[h]hu8 out[GHASH_BLOCK_SIZE]}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhj[ubj)}(hhh]h)}(hThe output valueh]hThe output value}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jhj[hKhjZubeh}(h]h ]h"]h$]h&]uh1jhjZubh)}(h **Context**h]j)}(hj[h]hContext}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjZubh)}(h Any context.h]h Any context.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhKhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval (C function) c.polyvalhNtauh1hhj6hhhNhNubj)}(hhh](j)}(hdvoid polyval (const struct polyval_key *key, const u8 *data, size_t len, u8 out[POLYVAL_BLOCK_SIZE])h]j)}(hcvoid polyval(const struct polyval_key *key, const u8 *data, size_t len, u8 out[POLYVAL_BLOCK_SIZE])h](j!)}(hvoidh]hvoid}(hj&\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj"\hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMubj3)}(h h]h }(hj5\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"\hhhj4\hMubjD)}(hpolyvalh]jJ)}(hpolyvalh]hpolyval}(hjG\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjC\ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj"\hhhj4\hMubjY)}(hW(const struct polyval_key *key, const u8 *data, size_t len, u8 out[POLYVAL_BLOCK_SIZE])h](j_)}(hconst struct polyval_key *keyh](j!)}(hjh]hconst}(hjc\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj_\ubj3)}(h h]h }(hjp\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_\ubj!)}(hj$h]hstruct}(hj~\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj_\ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_\ubh)}(hhh]jJ)}(h polyval_keyh]h polyval_key}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jjI\sb c.polyvalasbuh1hhj_\ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_\ubjJ)}(hkeyh]hkey}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj[\ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj\ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubh)}(hhh]jJ)}(hu8h]hu8}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j\ c.polyvalasbuh1hhj\ubj3)}(h h]h }(hj,]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubj)}(hjh]h*}(hj:]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubjJ)}(hdatah]hdata}(hjG]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj[\ubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjc]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetje]modnameN classnameNjj)}j]j\ c.polyvalasbuh1hhj\]ubj3)}(h h]h }(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\]ubjJ)}(hlenh]hlen}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj[\ubj_)}(hu8 out[POLYVAL_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j\ c.polyvalasbuh1hhj]ubj3)}(h h]h }(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubjJ)}(houth]hout}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]ubj)}(hjh]h[}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubh)}(hhh]jJ)}(hPOLYVAL_BLOCK_SIZEh]hPOLYVAL_BLOCK_SIZE}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j\ c.polyvalasbuh1hhj]ubj)}(hj[h]h]}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj[\ubeh}(h]h ]h"]h$]h&]hhuh1jXhj"\hhhj4\hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj\hhhj4\hMubah}(h]j\ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj4\hMhj\hhubjv)}(hhh]h)}(hCompute a POLYVAL valueh]hCompute a POLYVAL value}(hj<^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhj9^hhubah}(h]h ]h"]h$]h&]uh1juhj\hhhj4\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjT^jjT^jjjuh1jhhhj6hNhNubj)}(hX**Parameters** ``const struct polyval_key *key`` The prepared key ``const u8 *data`` The message data ``size_t len`` The data length in bytes. Doesn't need to be block-aligned. ``u8 out[POLYVAL_BLOCK_SIZE]`` The output value **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&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhjX^ubj)}(hhh](j)}(h3``const struct polyval_key *key`` The prepared key h](j)}(h!``const struct polyval_key *key``h]j)}(hj}^h]hconst struct polyval_key *key}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhjw^ubj)}(hhh]h)}(hThe prepared keyh]hThe prepared key}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jhjw^ubeh}(h]h ]h"]h$]h&]uh1jhj^hMhjt^ubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hj^h]hconst u8 *data}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhj^ubj)}(hhh]h)}(hThe message datah]hThe message data}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj^hMhjt^ubj)}(hL``size_t len`` The data length in bytes. Doesn't need to be block-aligned. h](j)}(h``size_t len``h]j)}(hj^h]h size_t len}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhj^ubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj_hMhjt^ubj)}(h0``u8 out[POLYVAL_BLOCK_SIZE]`` The output value h](j)}(h``u8 out[POLYVAL_BLOCK_SIZE]``h]j)}(hj(_h]hu8 out[POLYVAL_BLOCK_SIZE]}(hj*_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&_ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhj"_ubj)}(hhh]h)}(hThe output valueh]hThe output value}(hjA_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=_hMhj>_ubah}(h]h ]h"]h$]h&]uh1jhj"_ubeh}(h]h ]h"]h$]h&]uh1jhj=_hMhjt^ubeh}(h]h ]h"]h$]h&]uh1jhjX^ubh)}(h **Context**h]j)}(hjc_h]hContext}(hje_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja_ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhjX^ubh)}(h Any context.h]h Any context.}(hjy_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:33: ./include/crypto/gf128hash.hhMhjX^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubeh}(h]ghash-and-polyvalah ]h"]ghash and polyvalah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMD5h]hMD5}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hhhhhK$ubh)}(hSupport for the MD5 cryptographic hash function and HMAC-MD5. This algorithm is obsolete and is supported only for backwards compatibility.h]hSupport for the MD5 cryptographic hash function and HMAC-MD5. This algorithm is obsolete and is supported only for backwards compatibility.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hj_hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_ctx (C struct) c.md5_ctxhNtauh1hhj_hhhNhNubj)}(hhh](j)}(hmd5_ctxh]j)}(hstruct md5_ctxh](j!)}(hj$h]hstruct}(hj_hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj_hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKubj3)}(h h]h }(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_hhhj_hKubjD)}(hmd5_ctxh]jJ)}(hj_h]hmd5_ctx}(hj_hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj_hhhj_hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj_hhhj_hKubah}(h]j_ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj_hKhj_hhubjv)}(hhh]h)}(h&Context for hashing a message with MD5h]h&Context for hashing a message with MD5}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK%hj`hhubah}(h]h ]h"]h$]h&]uh1juhj_hhhj_hKubeh}(h]h ](jstructeh"]h$]h&]jjjj)`jj)`jjjuh1jhhhj_hNhNubj)}(hX7**Definition**:: struct md5_ctx { struct md5_block_state state; u64 bytecount; u8 buf[MD5_BLOCK_SIZE]; }; **Members** ``state`` the compression function state ``bytecount`` number of bytes processed so far ``buf`` partial block buffer; bytecount % MD5_BLOCK_SIZE bytes are validh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj5`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1`ubh:}(hj1`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK)hj-`ubj)}(hdstruct md5_ctx { struct md5_block_state state; u64 bytecount; u8 buf[MD5_BLOCK_SIZE]; };h]hdstruct md5_ctx { struct md5_block_state state; u64 bytecount; u8 buf[MD5_BLOCK_SIZE]; };}hjN`sbah}(h]h ]h"]h$]h&]hhuh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK+hj-`ubh)}(h **Members**h]j)}(hj_`h]hMembers}(hja`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]`ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK1hj-`ubj)}(hhh](j)}(h)``state`` the compression function state h](j)}(h ``state``h]j)}(hj~`h]hstate}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|`ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK'hjx`ubj)}(hhh]h)}(hthe compression function stateh]hthe compression function state}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hK'hj`ubah}(h]h ]h"]h$]h&]uh1jhjx`ubeh}(h]h ]h"]h$]h&]uh1jhj`hK'hju`ubj)}(h/``bytecount`` number of bytes processed so far h](j)}(h ``bytecount``h]j)}(hj`h]h bytecount}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK(hj`ubj)}(hhh]h)}(h number of bytes processed so farh]h number of bytes processed so far}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hK(hj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj`hK(hju`ubj)}(hH``buf`` partial block buffer; bytecount % MD5_BLOCK_SIZE bytes are validh](j)}(h``buf``h]j)}(hj`h]hbuf}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK(hj`ubj)}(hhh]h)}(h@partial block buffer; bytecount % MD5_BLOCK_SIZE bytes are validh]h@partial block buffer; bytecount % MD5_BLOCK_SIZE bytes are valid}(hj ahhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK)hjaubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhjahK(hju`ubeh}(h]h ]h"]h$]h&]uh1jhj-`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_init (C function) c.md5_inithNtauh1hhj_hhhNhNubj)}(hhh](j)}(h#void md5_init (struct md5_ctx *ctx)h]j)}(h"void md5_init(struct md5_ctx *ctx)h](j!)}(hvoidh]hvoid}(hjJahhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjFahhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK1ubj3)}(h h]h }(hjYahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFahhhjXahK1ubjD)}(hmd5_inith]jJ)}(hmd5_inith]hmd5_init}(hjkahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjgaubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjFahhhjXahK1ubjY)}(h(struct md5_ctx *ctx)h]j_)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjahhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjaubj3)}(h h]h }(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubh)}(hhh]jJ)}(hmd5_ctxh]hmd5_ctx}(hjahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jjmasb c.md5_initasbuh1hhjaubj3)}(h h]h }(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjJ)}(hctxh]hctx}(hjahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjaubah}(h]h ]h"]h$]h&]hhuh1jXhjFahhhjXahK1ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjBahhhjXahK1ubah}(h]j=aah ](jmjneh"]h$]h&]jrjs)jthuh1jhjXahK1hj?ahhubjv)}(hhh]h)}(h+Initialize an MD5 context for a new messageh]h+Initialize an MD5 context for a new message}(hj bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK1hjbhhubah}(h]h ]h"]h$]h&]uh1juhj?ahhhjXahK1ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"bjj"bjjjuh1jhhhj_hNhNubj)}(h**Parameters** ``struct md5_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider md5() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj,bh]h Parameters}(hj.bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*bubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK5hj&bubj)}(hhh]j)}(h2``struct md5_ctx *ctx`` the context to initialize h](j)}(h``struct md5_ctx *ctx``h]j)}(hjKbh]hstruct md5_ctx *ctx}(hjMbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIbubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK2hjEbubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjdbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`bhK2hjabubah}(h]h ]h"]h$]h&]uh1jhjEbubeh}(h]h ]h"]h$]h&]uh1jhj`bhK2hjBbubah}(h]h ]h"]h$]h&]uh1jhj&bubh)}(h**Description**h]j)}(hjbh]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK4hj&bubh)}(hBIf you don't need incremental computation, consider md5() instead.h]hDIf you don’t need incremental computation, consider md5() instead.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK3hj&bubh)}(h **Context**h]j)}(hjbh]hContext}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK5hj&bubh)}(h Any context.h]h Any context.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK6hj&bubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_update (C function) c.md5_updatehNtauh1hhj_hhhNhNubj)}(hhh](j)}(hAvoid md5_update (struct md5_ctx *ctx, const u8 *data, size_t len)h]j)}(h@void md5_update(struct md5_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hjbhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjbhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK;ubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjbhhhjchK;ubjD)}(h md5_updateh]jJ)}(h md5_updateh]h md5_update}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjcubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjbhhhjchK;ubjY)}(h1(struct md5_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hj/chhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj+cubj3)}(h h]h }(hjhjeubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj6ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ehK>hj3eubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhj2ehK>hjdubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(h**Description**h]j)}(hjXeh]h Description}(hjZehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVeubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK@hjdubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjnehhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK?hjdubh)}(h **Context**h]j)}(hjeh]hContext}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}eubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKAhjdubh)}(h Any context.h]h Any context.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKBhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_final (C function) c.md5_finalhNtauh1hhj_hhhNhNubj)}(hhh](j)}(hDvoid md5_final (struct md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h]j)}(hCvoid md5_final(struct md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjehhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjehhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKGubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjehhhjehKGubjD)}(h md5_finalh]jJ)}(h md5_finalh]h md5_final}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjehhhjehKGubjY)}(h5(struct md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j_)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjfhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjeubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjeubh)}(hhh]jJ)}(hmd5_ctxh]hmd5_ctx}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!fmodnameN classnameNjj)}j]j)}jjesb c.md5_finalasbuh1hhjeubj3)}(h h]h }(hj?fhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjeubj)}(hjh]h*}(hjMfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubjJ)}(hctxh]hctx}(hjZfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjeubj_)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjvfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxfmodnameN classnameNjj)}j]j;f c.md5_finalasbuh1hhjofubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjofubjJ)}(houth]hout}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjofubj)}(hjh]h[}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjofubj!)}(hjh]hstatic}(hjfhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjofubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjofubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]j;f c.md5_finalasbuh1hhjofubj)}(hj[h]h]}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjofubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjeubeh}(h]h ]h"]h$]h&]hhuh1jXhjehhhjehKGubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjehhhjehKGubah}(h]jeah ](jmjneh"]h$]h&]jrjs)jthuh1jhjehKGhjehhubjv)}(hhh]h)}(h&Finish computing an MD5 message digesth]h&Finish computing an MD5 message digest}(hj"ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKGhjghhubah}(h]h ]h"]h$]h&]uh1juhjehhhjehKGubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:gjj:gjjjuh1jhhhj_hNhNubj)}(hX)**Parameters** ``struct md5_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting MD5 message digest **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjDgh]h Parameters}(hjFghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBgubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKKhj>gubj)}(hhh](j)}(hL``struct md5_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct md5_ctx *ctx``h]j)}(hjcgh]hstruct md5_ctx *ctx}(hjeghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjagubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKHhj]gubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hj|ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxghKHhjygubah}(h]h ]h"]h$]h&]uh1jhj]gubeh}(h]h ]h"]h$]h&]uh1jhjxghKHhjZgubj)}(hM``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting MD5 message digest h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjgh]hu8 out[static MD5_DIGEST_SIZE]}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKIhjgubj)}(hhh]h)}(h)(output) the resulting MD5 message digesth]h)(output) the resulting MD5 message digest}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghKIhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjghKIhjZgubeh}(h]h ]h"]h$]h&]uh1jhj>gubh)}(h**Description**h]j)}(hjgh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKKhj>gubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjghhhNhNubj)}(h**ctx**h]hctx}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh(. So the caller does not need to do it.}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKJhj>gubh)}(h **Context**h]j)}(hjhh]hContext}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKLhj>gubh)}(h Any context.h]h Any context.}(hj&hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKMhj>gubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5 (C function)c.md5hNtauh1hhj_hhhNhNubj)}(hhh](j)}(hEvoid md5 (const u8 *data, size_t len, u8 out[static MD5_DIGEST_SIZE])h]j)}(hDvoid md5(const u8 *data, size_t len, u8 out[static MD5_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjUhhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjQhhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKRubj3)}(h h]h }(hjdhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQhhhhjchhKRubjD)}(hmd5h]jJ)}(hmd5h]hmd5}(hjvhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjrhubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjQhhhhjchhKRubjY)}(h<(const u8 *data, size_t len, u8 out[static MD5_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhubj3)}(h h]h }(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjhmodnameN classnameNjj)}j]j)}jjxhsbc.md5asbuh1hhjhubj3)}(h h]h }(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjJ)}(hdatah]hdata}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjhubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj imodnameN classnameNjj)}j]jhc.md5asbuh1hhjiubj3)}(h h]h }(hj%ihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubjJ)}(hlenh]hlen}(hj3ihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjhubj_)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjOihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQimodnameN classnameNjj)}j]jhc.md5asbuh1hhjHiubj3)}(h h]h }(hjmihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHiubjJ)}(houth]hout}(hj{ihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjHiubj)}(hjh]h[}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHiubj!)}(hjh]hstatic}(hjihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjHiubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHiubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]jhc.md5asbuh1hhjHiubj)}(hj[h]h]}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHiubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjhubeh}(h]h ]h"]h$]h&]hhuh1jXhjQhhhhjchhKRubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjMhhhhjchhKRubah}(h]jHhah ](jmjneh"]h$]h&]jrjs)jthuh1jhjchhKRhjJhhhubjv)}(hhh]h)}(h&Compute MD5 message digest in one shoth]h&Compute MD5 message digest in one shot}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKRhjihhubah}(h]h ]h"]h$]h&]uh1juhjJhhhhjchhKRubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjjjuh1jhhhj_hNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting MD5 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKVhjjubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:jubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKShj6jubj)}(hhh]h)}(hthe message datah]hthe message data}(hjUjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQjhKShjRjubah}(h]h ]h"]h$]h&]uh1jhj6jubeh}(h]h ]h"]h$]h&]uh1jhjQjhKShj3jubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjujh]h size_t len}(hjwjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKThjojubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhKThjjubah}(h]h ]h"]h$]h&]uh1jhjojubeh}(h]h ]h"]h$]h&]uh1jhjjhKThj3jubj)}(hM``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting MD5 message digest h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjjh]hu8 out[static MD5_DIGEST_SIZE]}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKUhjjubj)}(hhh]h)}(h)(output) the resulting MD5 message digesth]h)(output) the resulting MD5 message digest}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhKUhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhKUhj3jubeh}(h]h ]h"]h$]h&]uh1jhjjubh)}(h **Context**h]j)}(hjjh]hContext}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKWhjjubh)}(h Any context.h]h Any context.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKWhjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5_key (C struct)c.hmac_md5_keyhNtauh1hhj_hhhNhNubj)}(hhh](j)}(h hmac_md5_keyh]j)}(hstruct hmac_md5_keyh](j!)}(hj$h]hstruct}(hj.khhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*khhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhK\ubj3)}(h h]h }(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj tubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj%subeh}(h]h ]h"]h$]h&]hhuh1jXhjrhhhjrhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjrhhhjrhKubah}(h]jrah ](jmjneh"]h$]h&]jrjs)jthuh1jhjrhKhjrhhubjv)}(hhh]h)}(hAInitialize an HMAC-MD5 context for a new message, using a raw keyh]hAInitialize an HMAC-MD5 context for a new message, using a raw key}(hjhthhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjethhubah}(h]h ]h"]h$]h&]uh1juhjrhhhjrhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1jhhhj_hNhNubj)}(hXX**Parameters** ``struct hmac_md5_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-MD5 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_md5_usingrawkey() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjth]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubj)}(hhh](j)}(hE``struct hmac_md5_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_md5_ctx *ctx``h]j)}(hjth]hstruct hmac_md5_ctx *ctx}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthKhjtubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjthKhjtubj)}(h+``const u8 *raw_key`` the raw HMAC-MD5 key h](j)}(h``const u8 *raw_key``h]j)}(hjth]hconst u8 *raw_key}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubj)}(hhh]h)}(hthe raw HMAC-MD5 keyh]hthe raw HMAC-MD5 key}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthKhjtubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjthKhjtubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjuh]hsize_t raw_key_len}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjuubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hj4uhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0uhKhj1uubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhj0uhKhjtubeh}(h]h ]h"]h$]h&]uh1jhjtubh)}(h**Description**h]j)}(hjVuh]h Description}(hjXuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTuubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubh)}(hSIf you don't need incremental computation, consider hmac_md5_usingrawkey() instead.h]hUIf you don’t need incremental computation, consider hmac_md5_usingrawkey() instead.}(hjluhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubh)}(h **Context**h]j)}(hj}uh]hContext}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{uubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubh)}(h Any context.h]h Any context.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5_update (C function)c.hmac_md5_updatehNtauh1hhj_hhhNhNubj)}(hhh](j)}(hPvoid hmac_md5_update (struct hmac_md5_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hOvoid hmac_md5_update(struct hmac_md5_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hjuhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjuhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKubj3)}(h h]h }(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuhhhjuhKubjD)}(hhmac_md5_updateh]jJ)}(hhmac_md5_updateh]hhmac_md5_update}(hjuhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjuubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjuhhhjuhKubjY)}(h;(struct hmac_md5_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjuhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjuubj3)}(h h]h }(hj vhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubh)}(hhh]jJ)}(h hmac_md5_ctxh]h hmac_md5_ctx}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j)}jjusbc.hmac_md5_updateasbuh1hhjuubj3)}(h h]h }(hj=vhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubj)}(hjh]h*}(hjKvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjJ)}(hctxh]hctx}(hjXvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjuubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjqvhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjmvubj3)}(h h]h }(hj~vhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmvubh)}(hhh]jJ)}(hu8h]hu8}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j9vc.hmac_md5_updateasbuh1hhjmvubj3)}(h h]h }(hjvhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmvubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmvubjJ)}(hdatah]hdata}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjmvubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjuubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j9vc.hmac_md5_updateasbuh1hhjvubj3)}(h h]h }(hjwhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjvubjJ)}(hdata_lenh]hdata_len}(hjwhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjuubeh}(h]h ]h"]h$]h&]hhuh1jXhjuhhhjuhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjuhhhjuhKubah}(h]juah ](jmjneh"]h$]h&]jrjs)jthuh1jhjuhKhjuhhubjv)}(hhh]h)}(h,Update an HMAC-MD5 context with message datah]h,Update an HMAC-MD5 context with message data}(hj:whhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj7whhubah}(h]h ]h"]h$]h&]uh1juhjuhhhjuhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjRwjjRwjjjuh1jhhhj_hNhNubj)}(hX**Parameters** ``struct hmac_md5_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj\wh]h Parameters}(hj^whhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZwubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjVwubj)}(hhh](j)}(hT``struct hmac_md5_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_md5_ctx *ctx``h]j)}(hj{wh]hstruct hmac_md5_ctx *ctx}(hj}whhhNhNubah}(h]h ]h"]h$]h&]uh1jhjywubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjuwubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhKhjwubah}(h]h ]h"]h$]h&]uh1jhjuwubeh}(h]h ]h"]h$]h&]uh1jhjwhKhjrwubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjwh]hconst u8 *data}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjwubj)}(hhh]h)}(hthe message datah]hthe message data}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhKhjwubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjwhKhjrwubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjwh]hsize_t data_len}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjwubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhKhjxubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjxhKhjrwubeh}(h]h ]h"]h$]h&]uh1jhjVwubh)}(h**Description**h]j)}(hj(xh]h Description}(hj*xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&xubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjVwubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj>xhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjVwubh)}(h **Context**h]j)}(hjOxh]hContext}(hjQxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMxubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjVwubh)}(h Any context.h]h Any context.}(hjexhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjVwubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5_final (C function)c.hmac_md5_finalhNtauh1hhj_hhhNhNubj)}(hhh](j)}(hNvoid hmac_md5_final (struct hmac_md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h]j)}(hMvoid hmac_md5_final(struct hmac_md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjxhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjxhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxhhhjxhKubjD)}(hhmac_md5_finalh]jJ)}(hhmac_md5_finalh]hhmac_md5_final}(hjxhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjxhhhjxhKubjY)}(h:(struct hmac_md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j_)}(hstruct hmac_md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjxhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjxubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubh)}(hhh]jJ)}(h hmac_md5_ctxh]h hmac_md5_ctx}(hjxhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j)}jjxsbc.hmac_md5_finalasbuh1hhjxubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubjJ)}(hctxh]hctx}(hj*yhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjxubj_)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjFyhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHymodnameN classnameNjj)}j]j yc.hmac_md5_finalasbuh1hhj?yubj3)}(h h]h }(hjdyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?yubjJ)}(houth]hout}(hjryhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?yubj)}(hjh]h[}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?yubj!)}(hjh]hstatic}(hjyhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj?yubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?yubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjyhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]j yc.hmac_md5_finalasbuh1hhj?yubj)}(hj[h]h]}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?yubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjxubeh}(h]h ]h"]h$]h&]hhuh1jXhjxhhhjxhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjxhhhjxhKubah}(h]jxah ](jmjneh"]h$]h&]jrjs)jthuh1jhjxhKhjxhhubjv)}(hhh]h)}(h"Finish computing an HMAC-MD5 valueh]h"Finish computing an HMAC-MD5 value}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjyhhubah}(h]h ]h"]h$]h&]uh1juhjxhhhjxhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj zjj zjjjuh1jhhhj_hNhNubj)}(hX/**Parameters** ``struct hmac_md5_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjzubj)}(hhh](j)}(hV``struct hmac_md5_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_md5_ctx *ctx``h]j)}(hj3zh]hstruct hmac_md5_ctx *ctx}(hj5zhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1zubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj-zubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hjLzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHzhKhjIzubah}(h]h ]h"]h$]h&]uh1jhj-zubeh}(h]h ]h"]h$]h&]uh1jhjHzhKhj*zubj)}(hI``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjlzh]hu8 out[static MD5_DIGEST_SIZE]}(hjnzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjzubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjfzubj)}(hhh]h)}(h%(output) the resulting HMAC-MD5 valueh]h%(output) the resulting HMAC-MD5 value}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhKhjzubah}(h]h ]h"]h$]h&]uh1jhjfzubeh}(h]h ]h"]h$]h&]uh1jhjzhKhj*zubeh}(h]h ]h"]h$]h&]uh1jhjzubh)}(h**Description**h]j)}(hjzh]h Description}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjzubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjzhhhNhNubj)}(h**ctx**h]hctx}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh(. So the caller does not need to do it.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjzubh)}(h **Context**h]j)}(hjzh]hContext}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjzubh)}(h Any context.h]h Any context.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5 (C function) c.hmac_md5hNtauh1hhj_hhhNhNubj)}(hhh](j)}(hovoid hmac_md5 (const struct hmac_md5_key *key, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h]j)}(hnvoid hmac_md5(const struct hmac_md5_key *key, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj%{hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj!{hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKubj3)}(h h]h }(hj4{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!{hhhj3{hKubjD)}(hhmac_md5h]jJ)}(hhmac_md5h]hhmac_md5}(hjF{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjB{ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj!{hhhj3{hKubjY)}(ha(const struct hmac_md5_key *key, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h](j_)}(hconst struct hmac_md5_key *keyh](j!)}(hjh]hconst}(hjb{hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj^{ubj3)}(h h]h }(hjo{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^{ubj!)}(hj$h]hstruct}(hj}{hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj^{ubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^{ubh)}(hhh]jJ)}(h hmac_md5_keyh]h hmac_md5_key}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j)}jjH{sb c.hmac_md5asbuh1hhj^{ubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^{ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^{ubjJ)}(hkeyh]hkey}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZ{ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj{hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj{ubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubh)}(hhh]jJ)}(hu8h]hu8}(hj |hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj |ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]j{ c.hmac_md5asbuh1hhj{ubj3)}(h h]h }(hj+|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubj)}(hjh]h*}(hj9|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjJ)}(hdatah]hdata}(hjF|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZ{ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjb|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjd|modnameN classnameNjj)}j]j{ c.hmac_md5asbuh1hhj[|ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[|ubjJ)}(hdata_lenh]hdata_len}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj[|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZ{ubj_)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]j{ c.hmac_md5asbuh1hhj|ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubjJ)}(houth]hout}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubj)}(hjh]h[}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj!)}(hjh]hstatic}(hj|hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj|ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hj}hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj }ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j{ c.hmac_md5asbuh1hhj|ubj)}(hj[h]h]}(hj-}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjZ{ubeh}(h]h ]h"]h$]h&]hhuh1jXhj!{hhhj3{hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj{hhhj3{hKubah}(h]j{ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj3{hKhj{hhubjv)}(hhh]h)}(h2Compute HMAC-MD5 in one shot, using a prepared keyh]h2Compute HMAC-MD5 in one shot, using a prepared key}(hjV}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjS}hhubah}(h]h ]h"]h$]h&]uh1juhj{hhhj3{hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjn}jjn}jjjuh1jhhhj_hNhNubj)}(hXd**Parameters** ``const struct hmac_md5_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value **Description** If you're using the key only once, consider using hmac_md5_usingrawkey(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjx}h]h Parameters}(hjz}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv}ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjr}ubj)}(hhh](j)}(h9``const struct hmac_md5_key *key`` the prepared HMAC key h](j)}(h"``const struct hmac_md5_key *key``h]j)}(hj}h]hconst struct hmac_md5_key *key}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj}ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hKhj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhj}hKhj}ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj}h]hconst u8 *data}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj}ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hKhj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhj}hKhj}ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj ~h]hsize_t data_len}(hj ~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj~ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj"~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKhj~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hKhj}ubj)}(hI``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjB~h]hu8 out[static MD5_DIGEST_SIZE]}(hjD~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@~ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj<~ubj)}(hhh]h)}(h%(output) the resulting HMAC-MD5 valueh]h%(output) the resulting HMAC-MD5 value}(hj[~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW~hKhjX~ubah}(h]h ]h"]h$]h&]uh1jhj<~ubeh}(h]h ]h"]h$]h&]uh1jhjW~hKhj}ubeh}(h]h ]h"]h$]h&]uh1jhjr}ubh)}(h**Description**h]j)}(hj}~h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{~ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjr}ubh)}(hIIf you're using the key only once, consider using hmac_md5_usingrawkey().h]hKIf you’re using the key only once, consider using hmac_md5_usingrawkey().}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjr}ubh)}(h **Context**h]j)}(hj~h]hContext}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjr}ubh)}(h Any context.h]h Any context.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjr}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !hmac_md5_usingrawkey (C function)c.hmac_md5_usingrawkeyhNtauh1hhj_hhhNhNubj)}(hhh](j)}(hvoid hmac_md5_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h]j)}(hvoid hmac_md5_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj~hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj~hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKubj3)}(h h]h }(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~hhhj~hKubjD)}(hhmac_md5_usingrawkeyh]jJ)}(hhmac_md5_usingrawkeyh]hhmac_md5_usingrawkey}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj~hhhj~hKubjY)}(hh(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static MD5_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj&hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj"ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubh)}(hhh]jJ)}(hu8h]hu8}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]j)}jj sbc.hmac_md5_usingrawkeyasbuh1hhj"ubj3)}(h h]h }(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.hmac_md5_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.hmac_md5_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j`c.hmac_md5_usingrawkeyasbuh1hhjLubj3)}(h h]h }(hjqhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.hmac_md5_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjǀhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjՀhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.hmac_md5_usingrawkeyasbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhj~hhhj~hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj~hhhj~hKubah}(h]j~ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj~hKhj~hhubjv)}(hhh]h)}(h-Compute HMAC-MD5 in one shot, using a raw keyh]h-Compute HMAC-MD5 in one shot, using a raw key}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjDhhubah}(h]h ]h"]h$]h&]uh1juhj~hhhj~hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_jj_jjjuh1jhhhj_hNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-MD5 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value **Description** If you're using the key multiple times, prefer to use hmac_md5_preparekey() followed by multiple calls to hmac_md5() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjcubj)}(hhh](j)}(h+``const u8 *raw_key`` the raw HMAC-MD5 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjubj)}(hhh]h)}(hthe raw HMAC-MD5 keyh]hthe raw HMAC-MD5 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjÁhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjځhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjցhKhjׁubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjցhKhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj3h]hsize_t data_len}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhj-ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhKhjIubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhKhjubj)}(hI``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjlh]hu8 out[static MD5_DIGEST_SIZE]}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjfubj)}(hhh]h)}(h%(output) the resulting HMAC-MD5 valueh]h%(output) the resulting HMAC-MD5 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjcubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjcubh)}(h}If you're using the key multiple times, prefer to use hmac_md5_preparekey() followed by multiple calls to hmac_md5() instead.h]hIf you’re using the key multiple times, prefer to use hmac_md5_preparekey() followed by multiple calls to hmac_md5() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjcubh)}(h **Context**h]j)}(hj΂h]hContext}(hjЂhhhNhNubah}(h]h ]h"]h$]h&]uh1jhĵubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjcubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:41: ./include/crypto/md5.hhKhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj_hhhNhNubeh}(h]md5ah ]h"]md5ah$]h&]uh1hhhhhhhhK$ubh)}(hhh](h)}(hNHh]hNH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK,ubh)}(hvSupport for the NH universal hash function. This algorithm is used only as an internal component of other algorithms.h]hvSupport for the NH universal hash function. This algorithm is used only as an internal component of other algorithms.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j nh (C function)c.nhhNtauh1hhjhhhNhNubj)}(hhh](j)}(h[void nh (const u32 *key, const u8 *message, size_t message_len, __le64 hash[NH_NUM_PASSES])h]j)}(hZvoid nh(const u32 *key, const u8 *message, size_t message_len, __le64 hash[NH_NUM_PASSES])h](j!)}(hvoidh]hvoid}(hj:hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj6hhhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK!ubj3)}(h h]h }(hjIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6hhhjHhK!ubjD)}(hnhh]jJ)}(hnhh]hnh}(hj[hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjWubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj6hhhjHhK!ubjY)}(hS(const u32 *key, const u8 *message, size_t message_len, __le64 hash[NH_NUM_PASSES])h](j_)}(hconst u32 *keyh](j!)}(hjh]hconst}(hjwhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjsubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsubh)}(hhh]jJ)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj]sbc.nhasbuh1hhjsubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsubj)}(hjh]h*}(hjÃhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubjJ)}(hkeyh]hkey}(hjЃhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjoubj_)}(hconst u8 *messageh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.nhasbuh1hhjubj3)}(h h]h }(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hmessageh]hmessage}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjoubj_)}(hsize_t message_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]jc.nhasbuh1hhjUubj3)}(h h]h }(hjzhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubjJ)}(h message_lenh]h message_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjoubj_)}(h__le64 hash[NH_NUM_PASSES]h](h)}(hhh]jJ)}(h__le64h]h__le64}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.nhasbuh1hhjubj3)}(h h]h }(hj„hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hhashh]hhash}(hjЄhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjބhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]jJ)}(h NH_NUM_PASSESh]h NH_NUM_PASSES}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.nhasbuh1hhjubj)}(hj[h]h]}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjoubeh}(h]h ]h"]h$]h&]hhuh1jXhj6hhhjHhK!ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj2hhhjHhK!ubah}(h]j-ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjHhK!hj/hhubjv)}(hhh]h)}(hNH hash function for Adiantumh]hNH hash function for Adiantum}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK!hj2hhubah}(h]h ]h"]h$]h&]uh1juhj/hhhjHhK!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjMjjMjjjuh1jhhhjhNhNubj)}(hX3**Parameters** ``const u32 *key`` The key. **message_len** + 48 bytes of it are used. This is NH_KEY_BYTES if **message_len** has its maximum length of NH_MESSAGE_BYTES. ``const u8 *message`` The message ``size_t message_len`` The message length in bytes. Must be a multiple of 16 (NH_MESSAGE_UNIT) and at most 1024 (NH_MESSAGE_BYTES). ``__le64 hash[NH_NUM_PASSES]`` (output) The resulting hash value **Note** the pseudocode for NH in the Adiantum paper iterates over 1024-byte segments of the message, computes a 32-byte hash for each, and returns all the hashes concatenated together. In contrast, this function just hashes one segment and returns one hash. It's the caller's responsibility to call this function for each 1024-byte segment and collect all the hashes. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK%hjQubj)}(hhh](j)}(h``const u32 *key`` The key. **message_len** + 48 bytes of it are used. This is NH_KEY_BYTES if **message_len** has its maximum length of NH_MESSAGE_BYTES. h](j)}(h``const u32 *key``h]j)}(hjvh]hconst u32 *key}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK#hjpubj)}(hhh]h)}(hThe key. **message_len** + 48 bytes of it are used. This is NH_KEY_BYTES if **message_len** has its maximum length of NH_MESSAGE_BYTES.h](h The key. }(hjhhhNhNubj)}(h**message_len**h]h message_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh5 + 48 bytes of it are used. This is NH_KEY_BYTES if }(hjhhhNhNubj)}(h**message_len**h]h message_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, has its maximum length of NH_MESSAGE_BYTES.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK"hjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhK#hjmubj)}(h"``const u8 *message`` The message h](j)}(h``const u8 *message``h]j)}(hjԅh]hconst u8 *message}(hjօhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj҅ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK$hj΅ubj)}(hhh]h)}(h The messageh]h The message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK$hjubah}(h]h ]h"]h$]h&]uh1jhj΅ubeh}(h]h ]h"]h$]h&]uh1jhjhK$hjmubj)}(h``size_t message_len`` The message length in bytes. Must be a multiple of 16 (NH_MESSAGE_UNIT) and at most 1024 (NH_MESSAGE_BYTES). h](j)}(h``size_t message_len``h]j)}(hj h]hsize_t message_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK&hjubj)}(hhh]h)}(hmThe message length in bytes. Must be a multiple of 16 (NH_MESSAGE_UNIT) and at most 1024 (NH_MESSAGE_BYTES).h]hmThe message length in bytes. Must be a multiple of 16 (NH_MESSAGE_UNIT) and at most 1024 (NH_MESSAGE_BYTES).}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK%hj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj"hK&hjmubj)}(hA``__le64 hash[NH_NUM_PASSES]`` (output) The resulting hash value h](j)}(h``__le64 hash[NH_NUM_PASSES]``h]j)}(hjGh]h__le64 hash[NH_NUM_PASSES]}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK'hjAubj)}(hhh]h)}(h!(output) The resulting hash valueh]h!(output) The resulting hash value}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hK'hj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hK'hjmubeh}(h]h ]h"]h$]h&]uh1jhjQubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK)hjQubh)}(hXithe pseudocode for NH in the Adiantum paper iterates over 1024-byte segments of the message, computes a 32-byte hash for each, and returns all the hashes concatenated together. In contrast, this function just hashes one segment and returns one hash. It's the caller's responsibility to call this function for each 1024-byte segment and collect all the hashes.h]hXmthe pseudocode for NH in the Adiantum paper iterates over 1024-byte segments of the message, computes a 32-byte hash for each, and returns all the hashes concatenated together. In contrast, this function just hashes one segment and returns one hash. It’s the caller’s responsibility to call this function for each 1024-byte segment and collect all the hashes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK)hjQubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK/hjQubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:49: ./include/crypto/nh.hhK/hjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]nhah ]h"]nhah$]h&]uh1hhhhhhhhK,ubh)}(hhh](h)}(hPoly1305h]hPoly1305}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj݆hhhhhK4ubh)}(h|Support for the Poly1305 universal hash function. This algorithm is used only as an internal component of other algorithms.h]h|Support for the Poly1305 universal hash function. This algorithm is used only as an internal component of other algorithms.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hj݆hhubeh}(h]poly1305ah ]h"]poly1305ah$]h&]uh1hhhhhhhhK4ubh)}(hhh](h)}(hSHA-1h]hSHA-1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_ctx (C struct) c.sha1_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(hsha1_ctxh]j)}(hstruct sha1_ctxh](j!)}(hj$h]hstruct}(hj<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj8hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjJhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8hhhjIhKubjD)}(hsha1_ctxh]jJ)}(hj6h]hsha1_ctx}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjXubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj8hhhjIhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj4hhhjIhKubah}(h]j/ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjIhKhj1hhubjv)}(hhh]h)}(h(Context for hashing a message with SHA-1h]h(Context for hashing a message with SHA-1}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK#hj{hhubah}(h]h ]h"]h$]h&]uh1juhj1hhhjIhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX;**Definition**:: struct sha1_ctx { struct sha1_block_state state; u64 bytecount; u8 buf[SHA1_BLOCK_SIZE]; }; **Members** ``state`` the compression function state ``bytecount`` number of bytes processed so far ``buf`` partial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are validh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK'hjubj)}(hgstruct sha1_ctx { struct sha1_block_state state; u64 bytecount; u8 buf[SHA1_BLOCK_SIZE]; };h]hgstruct sha1_ctx { struct sha1_block_state state; u64 bytecount; u8 buf[SHA1_BLOCK_SIZE]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK)hjubh)}(h **Members**h]j)}(hj̇h]hMembers}(hj·hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjʇubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK/hjubj)}(hhh](j)}(h)``state`` the compression function state h](j)}(h ``state``h]j)}(hjh]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK%hjubj)}(hhh]h)}(hthe compression function stateh]hthe compression function state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK%hjubj)}(h/``bytecount`` number of bytes processed so far h](j)}(h ``bytecount``h]j)}(hj$h]h bytecount}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK&hjubj)}(hhh]h)}(h number of bytes processed so farh]h number of bytes processed so far}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hK&hj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj9hK&hjubj)}(hI``buf`` partial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are validh](j)}(h``buf``h]j)}(hj]h]hbuf}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK&hjWubj)}(hhh]h)}(hApartial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are validh]hApartial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are valid}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK'hjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhK&hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_init (C function) c.sha1_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h%void sha1_init (struct sha1_ctx *ctx)h]j)}(h$void sha1_init(struct sha1_ctx *ctx)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK/ubj3)}(h h]h }(hjƈhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjňhK/ubjD)}(h sha1_inith]jJ)}(h sha1_inith]h sha1_init}(hj؈hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjԈubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjňhK/ubjY)}(h(struct sha1_ctx *ctx)h]j_)}(hstruct sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hsha1_ctxh]hsha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjڈsb c.sha1_initasbuh1hhjubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjMhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubah}(h]h ]h"]h$]h&]hhuh1jXhjhhhjňhK/ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjňhK/ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjňhK/hjhhubjv)}(hhh]h)}(h,Initialize a SHA-1 context for a new messageh]h,Initialize a SHA-1 context for a new message}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK/hjthhubah}(h]h ]h"]h$]h&]uh1juhjhhhjňhK/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct sha1_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider sha1() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK3hjubj)}(hhh]j)}(h3``struct sha1_ctx *ctx`` the context to initialize h](j)}(h``struct sha1_ctx *ctx``h]j)}(hjh]hstruct sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK0hjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjщhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj͉hK0hjΉubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj͉hK0hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK2hjubh)}(hCIf you don't need incremental computation, consider sha1() instead.h]hEIf you don’t need incremental computation, consider sha1() instead.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK1hjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK3hjubh)}(h Any context.h]h Any context.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK4hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_update (C function) c.sha1_updatehNtauh1hhjhhhNhNubj)}(hhh](j)}(hCvoid sha1_update (struct sha1_ctx *ctx, const u8 *data, size_t len)h]j)}(hBvoid sha1_update(struct sha1_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hj_hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj[hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK9ubj3)}(h h]h }(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[hhhjmhK9ubjD)}(h sha1_updateh]jJ)}(h sha1_updateh]h sha1_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj[hhhjmhK9ubjY)}(h2(struct sha1_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hsha1_ctxh]hsha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.sha1_updateasbuh1hhjubj3)}(h h]h }(hjڊhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hu8h]hu8}(hj,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j֊ c.sha1_updateasbuh1hhj ubj3)}(h h]h }(hjJhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(hdatah]hdata}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j֊ c.sha1_updateasbuh1hhjzubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhj[hhhjmhK9ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjWhhhjmhK9ubah}(h]jRah ](jmjneh"]h$]h&]jrjs)jthuh1jhjmhK9hjThhubjv)}(hhh]h)}(h(Update a SHA-1 context with message datah]h(Update a SHA-1 context with message data}(hj׋hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK9hjԋhhubah}(h]h ]h"]h$]h&]uh1juhjThhhjmhK9ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct sha1_ctx *ctx`` the context to update; must have been initialized ``const u8 *data`` the message data ``size_t len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK=hjubj)}(hhh](j)}(hK``struct sha1_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha1_ctx *ctx``h]j)}(hjh]hstruct sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK:hjubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hK:hj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hK:hjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjQh]hconst u8 *data}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK;hjKubj)}(hhh]h)}(hthe message datah]hthe message data}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhK;hjgubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjfhK;hjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjیhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK=hjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK?hjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK@hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_final (C function) c.sha1_finalhNtauh1hhjhhhNhNubj)}(hhh](j)}(hGvoid sha1_final (struct sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h]j)}(hFvoid sha1_final(struct sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj1hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKEubj3)}(h h]h }(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-hhhj?hKEubjD)}(h sha1_finalh]jJ)}(h sha1_finalh]h sha1_final}(hjRhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj-hhhj?hKEubjY)}(h7(struct sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h](j_)}(hstruct sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjnhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjjubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjjubh)}(hhh]jJ)}(hsha1_ctxh]hsha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjTsb c.sha1_finalasbuh1hhjjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjJ)}(hctxh]hctx}(hjǍhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjfubj_)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.sha1_finalasbuh1hhj܍ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj܍ubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj܍ubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj܍ubj!)}(hjh]hstatic}(hj*hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj܍ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj܍ubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjHhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j c.sha1_finalasbuh1hhj܍ubj)}(hj[h]h]}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj܍ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjfubeh}(h]h ]h"]h$]h&]hhuh1jXhj-hhhj?hKEubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj)hhhj?hKEubah}(h]j$ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj?hKEhj&hhubjv)}(hhh]h)}(h'Finish computing a SHA-1 message digesth]h'Finish computing a SHA-1 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKEhjhhubah}(h]h ]h"]h$]h&]uh1juhj&hhhj?hKEubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX-**Parameters** ``struct sha1_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting SHA-1 message digest **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKIhjubj)}(hhh](j)}(hM``struct sha1_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha1_ctx *ctx``h]j)}(hjЎh]hstruct sha1_ctx *ctx}(hjҎhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjΎubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKFhjʎubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjʎubeh}(h]h ]h"]h$]h&]uh1jhjhKFhjǎubj)}(hP``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting SHA-1 message digest h](j)}(h#``u8 out[static SHA1_DIGEST_SIZE]``h]j)}(hj h]hu8 out[static SHA1_DIGEST_SIZE]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKGhjubj)}(hhh]h)}(h+(output) the resulting SHA-1 message digesth]h+(output) the resulting SHA-1 message digest}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKGhjǎubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjDh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKIhjubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjZhhhNhNubj)}(h**ctx**h]hctx}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh(. So the caller does not need to do it.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKHhjubh)}(h **Context**h]j)}(hj}h]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKJhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1 (C function)c.sha1hNtauh1hhjhhhNhNubj)}(hhh](j)}(hGvoid sha1 (const u8 *data, size_t len, u8 out[static SHA1_DIGEST_SIZE])h]j)}(hFvoid sha1(const u8 *data, size_t len, u8 out[static SHA1_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKPubj3)}(h h]h }(hjяhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjЏhKPubjD)}(hsha1h]jJ)}(hsha1h]hsha1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjߏubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjЏhKPubjY)}(h=(const u8 *data, size_t len, u8 out[static SHA1_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.sha1asbuh1hhjubj3)}(h h]h }(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hjXhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j9c.sha1asbuh1hhjmubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j9c.sha1asbuh1hhjubj3)}(h h]h }(hjڐhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j9c.sha1asbuh1hhjubj)}(hj[h]h]}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjЏhKPubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjЏhKPubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjЏhKPhjhhubjv)}(hhh]h)}(h(Compute SHA-1 message digest in one shoth]h(Compute SHA-1 message digest in one shot}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKPhjehhubah}(h]h ]h"]h$]h&]uh1juhjhhhjЏhKPubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting SHA-1 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKThjubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKQhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj‘hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKQhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKQhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKRhjܑubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKRhjubah}(h]h ]h"]h$]h&]uh1jhjܑubeh}(h]h ]h"]h$]h&]uh1jhjhKRhjubj)}(hP``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting SHA-1 message digest h](j)}(h#``u8 out[static SHA1_DIGEST_SIZE]``h]j)}(hjh]hu8 out[static SHA1_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKShjubj)}(hhh]h)}(h+(output) the resulting SHA-1 message digesth]h+(output) the resulting SHA-1 message digest}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKShj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hKShjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjVh]hContext}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKUhjubh)}(h Any context.h]h Any context.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_key (C struct)c.hmac_sha1_keyhNtauh1hhjhhhNhNubj)}(hhh](j)}(h hmac_sha1_keyh]j)}(hstruct hmac_sha1_keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKZubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKZubjD)}(h hmac_sha1_keyh]jJ)}(hjh]h hmac_sha1_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKZubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKZubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKZhjhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA1h]hPrepared key for HMAC-SHA1}(hjݒhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKZhjڒhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKZubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(h**Definition**:: struct hmac_sha1_key { struct sha1_block_state istate; struct sha1_block_state ostate; }; **Members** ``istate`` private ``ostate`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK^hjubj)}(hastruct hmac_sha1_key { struct sha1_block_state istate; struct sha1_block_state ostate; };h]hastruct hmac_sha1_key { struct sha1_block_state istate; struct sha1_block_state ostate; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK`hjubh)}(h **Members**h]j)}(hj+h]hMembers}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKehjubj)}(hhh](j)}(h``istate`` private h](j)}(h ``istate``h]j)}(hjJh]histate}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK\hjDubj)}(hhh]h)}(hprivateh]hprivate}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hK\hj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hK\hjAubj)}(h``ostate`` privateh](j)}(h ``ostate``h]j)}(hjh]hostate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK\hj}ubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK]hjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhK\hjAubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_ctx (C struct)c.hmac_sha1_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h hmac_sha1_ctxh]j)}(hstruct hmac_sha1_ctxh](j!)}(hj$h]hstruct}(hjݓhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjٓhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKcubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjٓhhhjhKcubjD)}(h hmac_sha1_ctxh]jJ)}(hjדh]h hmac_sha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjٓhhhjhKcubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjՓhhhjhKcubah}(h]jГah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKchjғhhubjv)}(hhh]h)}(h,Context for computing HMAC-SHA1 of a messageh]h,Context for computing HMAC-SHA1 of a message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKdhjhhubah}(h]h ]h"]h$]h&]uh1juhjғhhhjhKcubeh}(h]h ](jstructeh"]h$]h&]jjjj7jj7jjjuh1jhhhjhNhNubj)}(h**Definition**:: struct hmac_sha1_ctx { struct sha1_ctx sha_ctx; struct sha1_block_state ostate; }; **Members** ``sha_ctx`` private ``ostate`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh:}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhhj;ubj)}(hZstruct hmac_sha1_ctx { struct sha1_ctx sha_ctx; struct sha1_block_state ostate; };h]hZstruct hmac_sha1_ctx { struct sha1_ctx sha_ctx; struct sha1_block_state ostate; };}hj\sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKjhj;ubh)}(h **Members**h]j)}(hjmh]hMembers}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKohj;ubj)}(hhh](j)}(h``sha_ctx`` private h](j)}(h ``sha_ctx``h]j)}(hjh]hsha_ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKfhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKfhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKfhjubj)}(h``ostate`` privateh](j)}(h ``ostate``h]j)}(hjŔh]hostate}(hjǔhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjÔubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKfhjubj)}(hhh]h)}(hprivateh]hprivate}(hjޔhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKghj۔ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjڔhKfhjubeh}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !hmac_sha1_preparekey (C function)c.hmac_sha1_preparekeyhNtauh1hhjhhhNhNubj)}(hhh](j)}(h\void hmac_sha1_preparekey (struct hmac_sha1_key *key, const u8 *raw_key, size_t raw_key_len)h]j)}(h[void hmac_sha1_preparekey(struct hmac_sha1_key *key, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKnubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj-hKnubjD)}(hhmac_sha1_preparekeyh]jJ)}(hhmac_sha1_preparekeyh]hhmac_sha1_preparekey}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj-hKnubjY)}(hB(struct hmac_sha1_key *key, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha1_key *keyh](j!)}(hj$h]hstruct}(hj\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjXubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubh)}(hhh]jJ)}(h hmac_sha1_keyh]h hmac_sha1_key}(hjzhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]j)}jjBsbc.hmac_sha1_preparekeyasbuh1hhjXubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjTubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjΕhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjʕubj3)}(h h]h }(hjەhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjʕubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha1_preparekeyasbuh1hhjʕubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjʕubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʕubjJ)}(hraw_keyh]hraw_key}(hj%hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjʕubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjTubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmodnameN classnameNjj)}j]jc.hmac_sha1_preparekeyasbuh1hhj:ubj3)}(h h]h }(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubjJ)}(h raw_key_lenh]h raw_key_len}(hjmhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjTubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhj-hKnubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj-hKnubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj-hKnhjhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA1h]hPrepare a key for HMAC-SHA1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKnhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj-hKnubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hXv**Parameters** ``struct hmac_sha1_key *key`` (output) the key structure to initialize ``const u8 *raw_key`` the raw HMAC-SHA1 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Note** the caller is responsible for zeroizing both the struct hmac_sha1_key and the raw key once they are no longer needed. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKrhjubj)}(hhh](j)}(hG``struct hmac_sha1_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha1_key *key``h]j)}(hjؖh]hstruct hmac_sha1_key *key}(hjږhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj֖ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKohjҖubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKohjubah}(h]h ]h"]h$]h&]uh1jhjҖubeh}(h]h ]h"]h$]h&]uh1jhjhKohjϖubj)}(h,``const u8 *raw_key`` the raw HMAC-SHA1 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKphj ubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKphj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hKphjϖubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjJh]hsize_t raw_key_len}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKqhjDubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hKqhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hKqhjϖubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKshjubh)}(huthe caller is responsible for zeroizing both the struct hmac_sha1_key and the raw key once they are no longer needed.h]huthe caller is responsible for zeroizing both the struct hmac_sha1_key and the raw key once they are no longer needed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKshjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKvhjubh)}(h Any context.h]h Any context.}(hj—hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKvhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_init (C function)c.hmac_sha1_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(hPvoid hmac_sha1_init (struct hmac_sha1_ctx *ctx, const struct hmac_sha1_key *key)h]j)}(hOvoid hmac_sha1_init(struct hmac_sha1_ctx *ctx, const struct hmac_sha1_key *key)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK|ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhK|ubjD)}(hhmac_sha1_inith]jJ)}(hhmac_sha1_inith]hhmac_sha1_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhK|ubjY)}(h<(struct hmac_sha1_ctx *ctx, const struct hmac_sha1_key *key)h](j_)}(hstruct hmac_sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*ubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubh)}(hhh]jJ)}(h hmac_sha1_ctxh]h hmac_sha1_ctx}(hjLhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha1_initasbuh1hhj*ubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj&ubj_)}(hconst struct hmac_sha1_key *keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjȘhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h hmac_sha1_keyh]h hmac_sha1_key}(hj٘hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj֘ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjۘmodnameN classnameNjj)}j]jhc.hmac_sha1_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj&ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhK|ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhK|ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK|hjhhubjv)}(hhh]h)}(h1Initialize an HMAC-SHA1 context for a new messageh]h1Initialize an HMAC-SHA1 context for a new message}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK|hj9hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhK|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1jhhhjhNhNubj)}(hX **Parameters** ``struct hmac_sha1_ctx *ctx`` (output) the HMAC context to initialize ``const struct hmac_sha1_key *key`` the prepared HMAC key **Description** If you don't need incremental computation, consider hmac_sha1() instead. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjXubj)}(hhh](j)}(hF``struct hmac_sha1_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha1_ctx *ctx``h]j)}(hj}h]hstruct hmac_sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK}hjwubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK}hjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjhK}hjtubj)}(h:``const struct hmac_sha1_key *key`` the prepared HMAC key h](j)}(h#``const struct hmac_sha1_key *key``h]j)}(hjh]hconst struct hmac_sha1_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhK~hjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjϙhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj˙hK~hj̙ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj˙hK~hjtubeh}(h]h ]h"]h$]h&]uh1jhjXubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjXubh)}(hHIf you don't need incremental computation, consider hmac_sha1() instead.h]hJIf you don’t need incremental computation, consider hmac_sha1() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjXubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjXubh)}(h Any context.h]h Any context.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'hmac_sha1_init_usingrawkey (C function)c.hmac_sha1_init_usingrawkeyhNtauh1hhjhhhNhNubj)}(hhh](j)}(hbvoid hmac_sha1_init_usingrawkey (struct hmac_sha1_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h]j)}(havoid hmac_sha1_init_usingrawkey(struct hmac_sha1_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjYhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYhhhjkhKubjD)}(hhmac_sha1_init_usingrawkeyh]jJ)}(hhmac_sha1_init_usingrawkeyh]hhmac_sha1_init_usingrawkey}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjYhhhjkhKubjY)}(hB(struct hmac_sha1_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h hmac_sha1_ctxh]h hmac_sha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha1_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjؚhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jԚc.hmac_sha1_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jԚc.hmac_sha1_init_usingrawkeyasbuh1hhjxubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjYhhhjkhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjUhhhjkhKubah}(h]jPah ](jmjneh"]h$]h&]jrjs)jthuh1jhjkhKhjRhhubjv)}(hhh]h)}(hBInitialize an HMAC-SHA1 context for a new message, using a raw keyh]hBInitialize an HMAC-SHA1 context for a new message, using a raw key}(hj՛hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjқhhubah}(h]h ]h"]h$]h&]uh1juhjRhhhjkhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX[**Parameters** ``struct hmac_sha1_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-SHA1 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_sha1_usingrawkey() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh](j)}(hF``struct hmac_sha1_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha1_ctx *ctx``h]j)}(hjh]hstruct hmac_sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hKhj ubj)}(h,``const u8 *raw_key`` the raw HMAC-SHA1 key h](j)}(h``const u8 *raw_key``h]j)}(hjOh]hconst u8 *raw_key}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjIubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjdhKhj ubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjÜh]h Description}(hjŜhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubh)}(hTIf you don't need incremental computation, consider hmac_sha1_usingrawkey() instead.h]hVIf you don’t need incremental computation, consider hmac_sha1_usingrawkey() instead.}(hjٜhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_update (C function)c.hmac_sha1_updatehNtauh1hhjhhhNhNubj)}(hhh](j)}(hRvoid hmac_sha1_update (struct hmac_sha1_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hQvoid hmac_sha1_update(struct hmac_sha1_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hj/hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj+hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+hhhj=hKubjD)}(hhmac_sha1_updateh]jJ)}(hhmac_sha1_updateh]hhmac_sha1_update}(hjPhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj+hhhj=hKubjY)}(h<(struct hmac_sha1_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjlhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubh)}(hhh]jJ)}(h hmac_sha1_ctxh]h hmac_sha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjRsbc.hmac_sha1_updateasbuh1hhjhubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjJ)}(hctxh]hctx}(hjŝhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjdubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjޝhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjڝubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjڝubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha1_updateasbuh1hhjڝubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjڝubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڝubjJ)}(hdatah]hdata}(hj5hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjڝubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjdubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]jc.hmac_sha1_updateasbuh1hhjJubj3)}(h h]h }(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubjJ)}(hdata_lenh]hdata_len}(hj}hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjdubeh}(h]h ]h"]h$]h&]hhuh1jXhj+hhhj=hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj'hhhj=hKubah}(h]j"ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj=hKhj$hhubjv)}(hhh]h)}(h-Update an HMAC-SHA1 context with message datah]h-Update an HMAC-SHA1 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhj$hhhj=hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct hmac_sha1_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjÞubj)}(hhh](j)}(hU``struct hmac_sha1_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_sha1_ctx *ctx``h]j)}(hjh]hstruct hmac_sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjߞubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj!h]hconst u8 *data}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKhj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6hKhjߞubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjZh]hsize_t data_len}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjTubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohKhjߞubeh}(h]h ]h"]h$]h&]uh1jhjÞubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjÞubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjÞubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjÞubh)}(h Any context.h]h Any context.}(hjҟhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjÞubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_final (C function)c.hmac_sha1_finalhNtauh1hhjhhhNhNubj)}(hhh](j)}(hQvoid hmac_sha1_final (struct hmac_sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h]j)}(hPvoid hmac_sha1_final(struct hmac_sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha1_finalh]jJ)}(hhmac_sha1_finalh]hhmac_sha1_final}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubjY)}(h<(struct hmac_sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h](j_)}(hstruct hmac_sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hj>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj:ubj3)}(h h]h }(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubh)}(hhh]jJ)}(h hmac_sha1_ctxh]h hmac_sha1_ctx}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sbc.hmac_sha1_finalasbuh1hhj:ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubj_)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jxc.hmac_sha1_finalasbuh1hhjubj3)}(h h]h }(hjѠhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjߠhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jxc.hmac_sha1_finalasbuh1hhjubj)}(hj[h]h]}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h#Finish computing an HMAC-SHA1 valueh]h#Finish computing an HMAC-SHA1 value}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj\hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjwjjwjjjuh1jhhhjhNhNubj)}(hX2**Parameters** ``struct hmac_sha1_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj{ubj)}(hhh](j)}(hW``struct hmac_sha1_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_sha1_ctx *ctx``h]j)}(hjh]hstruct hmac_sha1_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hK``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value h](j)}(h#``u8 out[static SHA1_DIGEST_SIZE]``h]j)}(hj١h]hu8 out[static SHA1_DIGEST_SIZE]}(hjۡhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjסubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjӡubj)}(hhh]h)}(h&(output) the resulting HMAC-SHA1 valueh]h&(output) the resulting HMAC-SHA1 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjӡubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhj{ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj{ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj*hhhNhNubj)}(h**ctx**h]hctx}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh(. So the caller does not need to do it.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj{ubh)}(h **Context**h]j)}(hjMh]hContext}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj{ubh)}(h Any context.h]h Any context.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1 (C function) c.hmac_sha1hNtauh1hhjhhhNhNubj)}(hhh](j)}(hrvoid hmac_sha1 (const struct hmac_sha1_key *key, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h]j)}(hqvoid hmac_sha1(const struct hmac_sha1_key *key, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(h hmac_sha1h]jJ)}(h hmac_sha1h]h hmac_sha1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubjY)}(hc(const struct hmac_sha1_key *key, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h](j_)}(hconst struct hmac_sha1_key *keyh](j!)}(hjh]hconst}(hjϢhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjˢubj3)}(h h]h }(hjܢhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjˢubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjˢubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjˢubh)}(hhh]jJ)}(h hmac_sha1_keyh]h hmac_sha1_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsb c.hmac_sha1asbuh1hhjˢubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjˢubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjˢubjJ)}(hkeyh]hkey}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjˢubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjǢubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjXubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubh)}(hhh]jJ)}(hu8h]hu8}(hjzhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]j$ c.hmac_sha1asbuh1hhjXubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjǢubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjϣhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj̣ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjѣmodnameN classnameNjj)}j]j$ c.hmac_sha1asbuh1hhjȣubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjȣubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjȣubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjǢubj_)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j$ c.hmac_sha1asbuh1hhjubj3)}(h h]h }(hj5hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj^hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j$ c.hmac_sha1asbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjǢubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h3Compute HMAC-SHA1 in one shot, using a prepared keyh]h3Compute HMAC-SHA1 in one shot, using a prepared key}(hjähhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjۤjjۤjjjuh1jhhhjhNhNubj)}(hXh**Parameters** ``const struct hmac_sha1_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value **Description** If you're using the key only once, consider using hmac_sha1_usingrawkey(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjߤubj)}(hhh](j)}(h:``const struct hmac_sha1_key *key`` the prepared HMAC key h](j)}(h#``const struct hmac_sha1_key *key``h]j)}(hjh]hconst struct hmac_sha1_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj=h]hconst u8 *data}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj7ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhKhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjvh]hsize_t data_len}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjpubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hK``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value h](j)}(h#``u8 out[static SHA1_DIGEST_SIZE]``h]j)}(hjh]hu8 out[static SHA1_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h&(output) the resulting HMAC-SHA1 valueh]h&(output) the resulting HMAC-SHA1 value}(hjȥhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjĥhKhjťubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjĥhKhjubeh}(h]h ]h"]h$]h&]uh1jhjߤubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjߤubh)}(hJIf you're using the key only once, consider using hmac_sha1_usingrawkey().h]hLIf you’re using the key only once, consider using hmac_sha1_usingrawkey().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjߤubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjߤubh)}(h Any context.h]h Any context.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjߤubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "hmac_sha1_usingrawkey (C function)c.hmac_sha1_usingrawkeyhNtauh1hhjhhhNhNubj)}(hhh](j)}(hvoid hmac_sha1_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h]j)}(hvoid hmac_sha1_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjVhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjRhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRhhhjdhKubjD)}(hhmac_sha1_usingrawkeyh]jJ)}(hhmac_sha1_usingrawkeyh]hhmac_sha1_usingrawkey}(hjwhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjRhhhjdhKubjY)}(hi(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA1_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjysbc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjѦhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjߦhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jͦc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjMhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjIubj3)}(h h]h }(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubh)}(hhh]jJ)}(hu8h]hu8}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]jͦc.hmac_sha1_usingrawkeyasbuh1hhjIubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj§modnameN classnameNjj)}j]jͦc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjާhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jͦc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjOhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjmhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]jͦc.hmac_sha1_usingrawkeyasbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjRhhhjdhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjNhhhjdhKubah}(h]jIah ](jmjneh"]h$]h&]jrjs)jthuh1jhjdhKhjKhhubjv)}(hhh]h)}(h.Compute HMAC-SHA1 in one shot, using a raw keyh]h.Compute HMAC-SHA1 in one shot, using a raw key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjKhhhjdhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj̨jj̨jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-SHA1 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value **Description** If you're using the key multiple times, prefer to use hmac_sha1_preparekey() followed by multiple calls to hmac_sha1() instead. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjШubj)}(hhh](j)}(h,``const u8 *raw_key`` the raw HMAC-SHA1 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hj.h]hsize_t raw_key_len}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhj(ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKhjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhjChKhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjgh]hconst u8 *data}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjaubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hKhj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhj|hKhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hK``u8 out[static SHA1_DIGEST_SIZE]`` (output) the resulting HMAC-SHA1 value h](j)}(h#``u8 out[static SHA1_DIGEST_SIZE]``h]j)}(hj٩h]hu8 out[static SHA1_DIGEST_SIZE]}(hj۩hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjשubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjөubj)}(hhh]h)}(h&(output) the resulting HMAC-SHA1 valueh]h&(output) the resulting HMAC-SHA1 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjөubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjШubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjШubh)}(hIf you're using the key multiple times, prefer to use hmac_sha1_preparekey() followed by multiple calls to hmac_sha1() instead.h]hIf you’re using the key multiple times, prefer to use hmac_sha1_preparekey() followed by multiple calls to hmac_sha1() instead.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjШubh)}(h **Context**h]j)}(hj;h]hContext}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjШubh)}(h Any context.h]h Any context.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:65: ./include/crypto/sha1.hhKhjШubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]sha-1ah ]h"]sha-1ah$]h&]uh1hhhhhhhhKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmodnameN classnameNjj)}j]jc.sha224_finalasbuh1hhjհubj)}(hj[h]h]}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjհubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj_ubeh}(h]h ]h"]h$]h&]hhuh1jXhj&hhhj8hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj"hhhj8hKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj8hKhjhhubjv)}(hhh]h)}(h)Finish computing a SHA-224 message digesth]h)Finish computing a SHA-224 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj8hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX3**Parameters** ``struct sha224_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting SHA-224 message digest **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh](j)}(hO``struct sha224_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha224_ctx *ctx``h]j)}(hjɱh]hstruct sha224_ctx *ctx}(hj˱hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDZubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjñubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjޱhKhj߱ubah}(h]h ]h"]h$]h&]uh1jhjñubeh}(h]h ]h"]h$]h&]uh1jhjޱhKhjubj)}(hT``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting SHA-224 message digest h](j)}(h%``u8 out[static SHA224_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA224_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h-(output) the resulting SHA-224 message digesth]h-(output) the resulting SHA-224 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjShhhNhNubj)}(h**ctx**h]hctx}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh(. So the caller does not need to do it.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(h **Context**h]j)}(hjvh]hContext}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224 (C function)c.sha224hNtauh1hhjohhhNhNubj)}(hhh](j)}(hKvoid sha224 (const u8 *data, size_t len, u8 out[static SHA224_DIGEST_SIZE])h]j)}(hJvoid sha224(const u8 *data, size_t len, u8 out[static SHA224_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjʲhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjɲhKubjD)}(hsha224h]jJ)}(hsha224h]hsha224}(hjܲhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjزubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjɲhKubjY)}(h?(const u8 *data, size_t len, u8 out[static SHA224_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj޲sbc.sha224asbuh1hhjubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjmhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j2c.sha224asbuh1hhjfubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjfubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA224_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j2c.sha224asbuh1hhjubj3)}(h h]h }(hjӳhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j2c.sha224asbuh1hhjubj)}(hj[h]h]}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjɲhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjɲhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjɲhKhjhhubjv)}(hhh]h)}(h*Compute SHA-224 message digest in one shoth]h*Compute SHA-224 message digest in one shot}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj^hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjɲhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjyjjyjjjuh1jhhhjohNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting SHA-224 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj}ubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj۴h]h size_t len}(hjݴhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjٴubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjմubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjմubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hT``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting SHA-224 message digest h](j)}(h%``u8 out[static SHA224_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA224_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h-(output) the resulting SHA-224 message digesth]h-(output) the resulting SHA-224 message digest}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hKhjubeh}(h]h ]h"]h$]h&]uh1jhj}ubh)}(h **Context**h]j)}(hjOh]hContext}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj}ubh)}(h Any context.h]h Any context.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_key (C struct)c.hmac_sha224_keyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha224_keyh]j)}(hstruct hmac_sha224_keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha224_keyh]jJ)}(hjh]hhmac_sha224_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA224h]hPrepared key for HMAC-SHA224}(hjֵhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjӵhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha224_key { struct __hmac_sha256_key key; }; **Members** ``key`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(h=struct hmac_sha224_key { struct __hmac_sha256_key key; };h]h=struct hmac_sha224_key { struct __hmac_sha256_key key; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(h **Members**h]j)}(hj$h]hMembers}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]j)}(h``key`` privateh](j)}(h``key``h]j)}(hjCh]hkey}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj=ubj)}(hhh]h)}(hprivateh]hprivate}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhKhj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_ctx (C struct)c.hmac_sha224_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha224_ctxh]j)}(hstruct hmac_sha224_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha224_ctxh]jJ)}(hjh]hhmac_sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA224 of a messageh]h.Context for computing HMAC-SHA224 of a message}(hj߶hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjܶhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha224_ctx { struct __hmac_sha256_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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(h=struct hmac_sha224_ctx { struct __hmac_sha256_ctx ctx; };h]h=struct hmac_sha224_ctx { struct __hmac_sha256_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(h **Members**h]j)}(hj-h]hMembers}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjLh]hctx}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjFubj)}(hhh]h)}(hprivateh]hprivate}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahKhjCubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha224_preparekey (C function)c.hmac_sha224_preparekeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(h`void hmac_sha224_preparekey (struct hmac_sha224_key *key, const u8 *raw_key, size_t raw_key_len)h]j)}(h_void hmac_sha224_preparekey(struct hmac_sha224_key *key, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha224_preparekeyh]jJ)}(hhmac_sha224_preparekeyh]hhmac_sha224_preparekey}(hjǷhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj÷ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubjY)}(hD(struct hmac_sha224_key *key, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha224_key *keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj߷ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj߷ubh)}(hhh]jJ)}(hhmac_sha224_keyh]hhmac_sha224_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjɷsbc.hmac_sha224_preparekeyasbuh1hhj߷ubj3)}(h h]h }(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj߷ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj߷ubjJ)}(hkeyh]hkey}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj߷ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj۷ubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjUhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjQubj3)}(h h]h }(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubh)}(hhh]jJ)}(hu8h]hu8}(hjshhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]jc.hmac_sha224_preparekeyasbuh1hhjQubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj۷ubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjȸhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjŸubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjʸmodnameN classnameNjj)}j]jc.hmac_sha224_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj۷ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA224h]hPrepare a key for HMAC-SHA224}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6jj6jjjuh1jhhhjohNhNubj)}(hX|**Parameters** ``struct hmac_sha224_key *key`` (output) the key structure to initialize ``const u8 *raw_key`` the raw HMAC-SHA224 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Note** the caller is responsible for zeroizing both the struct hmac_sha224_key and the raw key once they are no longer needed. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj@h]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj:ubj)}(hhh](j)}(hI``struct hmac_sha224_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha224_key *key``h]j)}(hj_h]hstruct hmac_sha224_key *key}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjYubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthKhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthKhjVubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA224 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(hthe raw HMAC-SHA224 keyh]hthe raw HMAC-SHA224 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjVubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjѹh]hsize_t raw_key_len}(hjӹhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjϹubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj˹ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj˹ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjVubeh}(h]h ]h"]h$]h&]uh1jhj:ubh)}(h**Note**h]j)}(hj h]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj:ubh)}(hwthe caller is responsible for zeroizing both the struct hmac_sha224_key and the raw key once they are no longer needed.h]hwthe caller is responsible for zeroizing both the struct hmac_sha224_key and the raw key once they are no longer needed.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj:ubh)}(h **Context**h]j)}(hj3h]hContext}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj:ubh)}(h Any context.h]h Any context.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_init (C function)c.hmac_sha224_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha224_init (struct hmac_sha224_ctx *ctx, const struct hmac_sha224_key *key)h]j)}(hUvoid hmac_sha224_init(struct hmac_sha224_ctx *ctx, const struct hmac_sha224_key *key)h](j!)}(hvoidh]hvoid}(hjxhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjthhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjthhhjhKubjD)}(hhmac_sha224_inith]jJ)}(hhmac_sha224_inith]hhmac_sha224_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjthhhjhKubjY)}(h@(struct hmac_sha224_ctx *ctx, const struct hmac_sha224_key *key)h](j_)}(hstruct hmac_sha224_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjºhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hjӺhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjкubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjպmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha224_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!const struct hmac_sha224_key *keyh](j!)}(hjh]hconst}(hj'hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj#ubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubj!)}(hj$h]hstruct}(hjBhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj#ubj3)}(h h]h }(hjOhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubh)}(hhh]jJ)}(hhmac_sha224_keyh]hhmac_sha224_key}(hj`hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]jc.hmac_sha224_initasbuh1hhj#ubj3)}(h h]h }(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjthhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjphhhjhKubah}(h]jkah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjmhhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA224 context for a new messageh]h3Initialize an HMAC-SHA224 context for a new message}(hjûhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjmhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjۻjjۻjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha224_ctx *ctx`` (output) the HMAC context to initialize ``const struct hmac_sha224_key *key`` the prepared HMAC key **Description** If you don't need incremental computation, consider hmac_sha224() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj߻ubj)}(hhh](j)}(hH``struct hmac_sha224_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha224_ctx *ctx``h]j)}(hjh]hstruct hmac_sha224_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h<``const struct hmac_sha224_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha224_key *key``h]j)}(hj=h]h!const struct hmac_sha224_key *key}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj7ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhKhjubeh}(h]h ]h"]h$]h&]uh1jhj߻ubh)}(h**Description**h]j)}(hjxh]h Description}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj߻ubh)}(hJIf you don't need incremental computation, consider hmac_sha224() instead.h]hLIf you don’t need incremental computation, consider hmac_sha224() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj߻ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj߻ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj߻ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha224_init_usingrawkey (C function)c.hmac_sha224_init_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hfvoid hmac_sha224_init_usingrawkey (struct hmac_sha224_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h]j)}(hevoid hmac_sha224_init_usingrawkey(struct hmac_sha224_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha224_init_usingrawkeyh]jJ)}(hhmac_sha224_init_usingrawkeyh]hhmac_sha224_init_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubjY)}(hD(struct hmac_sha224_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha224_ctx *ctxh](j!)}(hj$h]hstruct}(hj!hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha224_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjzhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j[c.hmac_sha224_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjϽhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjݽhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j[c.hmac_sha224_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hj2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjܼhhhjhKubah}(h]j׼ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjټhhubjv)}(hhh]h)}(hDInitialize an HMAC-SHA224 context for a new message, using a raw keyh]hDInitialize an HMAC-SHA224 context for a new message, using a raw key}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjYhhubah}(h]h ]h"]h$]h&]uh1juhjټhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1jhhhjohNhNubj)}(hXa**Parameters** ``struct hmac_sha224_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-SHA224 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_sha224_usingrawkey() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj~h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjxubj)}(hhh](j)}(hH``struct hmac_sha224_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha224_ctx *ctx``h]j)}(hjh]hstruct hmac_sha224_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA224 key h](j)}(h``const u8 *raw_key``h]j)}(hj־h]hconst u8 *raw_key}(hjؾhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjԾubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjоubj)}(hhh]h)}(hthe raw HMAC-SHA224 keyh]hthe raw HMAC-SHA224 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjоubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhj ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhjubeh}(h]h ]h"]h$]h&]uh1jhjxubh)}(h**Description**h]j)}(hjJh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjxubh)}(hVIf you don't need incremental computation, consider hmac_sha224_usingrawkey() instead.h]hXIf you don’t need incremental computation, consider hmac_sha224_usingrawkey() instead.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjxubh)}(h **Context**h]j)}(hjqh]hContext}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjxubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_update (C function)c.hmac_sha224_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha224_update (struct hmac_sha224_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hUvoid hmac_sha224_update(struct hmac_sha224_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM ubj3)}(h h]h }(hjſhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjĿhM ubjD)}(hhmac_sha224_updateh]jJ)}(hhmac_sha224_updateh]hhmac_sha224_update}(hj׿hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjӿubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjĿhM ubjY)}(h>(struct hmac_sha224_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_sha224_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjٿsbc.hmac_sha224_updateasbuh1hhjubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjLhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjehhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjaubj3)}(h h]h }(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j-c.hmac_sha224_updateasbuh1hhjaubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j-c.hmac_sha224_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjĿhM ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjĿhM ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjĿhM hjhhubjv)}(hhh]h)}(h/Update an HMAC-SHA224 context with message datah]h/Update an HMAC-SHA224 context with message data}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hj+hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjĿhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjFjjFjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha224_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjPh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubj)}(hhh](j)}(hW``struct hmac_sha224_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_sha224_ctx *ctx``h]j)}(hjoh]hstruct hmac_sha224_ctx *ctx}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjiubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjhM hjfubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjfubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjfubeh}(h]h ]h"]h$]h&]uh1jhjJubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubh)}(h **Context**h]j)}(hjCh]hContext}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubh)}(h Any context.h]h Any context.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_final (C function)c.hmac_sha224_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hWvoid hmac_sha224_final (struct hmac_sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h]j)}(hVvoid hmac_sha224_final(struct hmac_sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha224_finalh]jJ)}(hhmac_sha224_finalh]hhmac_sha224_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(h@(struct hmac_sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h](j_)}(hstruct hmac_sha224_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha224_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA224_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<modnameN classnameNjj)}j]jc.hmac_sha224_finalasbuh1hhj3ubj3)}(h h]h }(hjXhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubjJ)}(houth]hout}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubj)}(hjh]h[}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha224_finalasbuh1hhj3ubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]j{ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhj}hhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA224 valueh]h%Finish computing an HMAC-SHA224 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj}hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX8**Parameters** ``struct hmac_sha224_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(hY``struct hmac_sha224_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_sha224_ctx *ctx``h]j)}(hj'h]hstruct hmac_sha224_ctx *ctx}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj!ubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhjubj)}(hO``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value h](j)}(h%``u8 out[static SHA224_DIGEST_SIZE]``h]j)}(hj`h]h!u8 out[static SHA224_DIGEST_SIZE]}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjZubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224 (C function) c.hmac_sha224hNtauh1hhjohhhNhNubj)}(hhh](j)}(hxvoid hmac_sha224 (const struct hmac_sha224_key *key, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h]j)}(hwvoid hmac_sha224(const struct hmac_sha224_key *key, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM&ubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj'hM&ubjD)}(h hmac_sha224h]jJ)}(h hmac_sha224h]h hmac_sha224}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj'hM&ubjY)}(hg(const struct hmac_sha224_key *key, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h](j_)}(h!const struct hmac_sha224_key *keyh](j!)}(hjh]hconst}(hjVhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjRubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRubj!)}(hj$h]hstruct}(hjqhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjRubj3)}(h h]h }(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRubh)}(hhh]jJ)}(hhmac_sha224_keyh]hhmac_sha224_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj<sb c.hmac_sha224asbuh1hhjRubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjNubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha224asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjNubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjVhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]j c.hmac_sha224asbuh1hhjOubj3)}(h h]h }(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjNubj_)}(h!u8 out[static SHA224_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha224asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha224asbuh1hhjubj)}(hj[h]h]}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjNubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhj'hM&ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj'hM&ubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj'hM&hjhhubjv)}(hhh]h)}(h5Compute HMAC-SHA224 in one shot, using a prepared keyh]h5Compute HMAC-SHA224 in one shot, using a prepared key}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM&hjGhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj'hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjbjjbjjjuh1jhhhjohNhNubj)}(hXp**Parameters** ``const struct hmac_sha224_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value **Description** If you're using the key only once, consider using hmac_sha224_usingrawkey(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM*hjfubj)}(hhh](j)}(h<``const struct hmac_sha224_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha224_key *key``h]j)}(hjh]h!const struct hmac_sha224_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM'hjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM'hjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM(hjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM(hjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM)hjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM)hjubj)}(hO``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value h](j)}(h%``u8 out[static SHA224_DIGEST_SIZE]``h]j)}(hj6h]h!u8 out[static SHA224_DIGEST_SIZE]}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM*hj0ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhM*hjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhM*hjubeh}(h]h ]h"]h$]h&]uh1jhjfubh)}(h**Description**h]j)}(hjqh]h Description}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM,hjfubh)}(hLIf you're using the key only once, consider using hmac_sha224_usingrawkey().h]hNIf you’re using the key only once, consider using hmac_sha224_usingrawkey().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM+hjfubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM-hjfubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM.hjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha224_usingrawkey (C function)c.hmac_sha224_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hvoid hmac_sha224_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h]j)}(hvoid hmac_sha224_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM5ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhM5ubjD)}(hhmac_sha224_usingrawkeyh]jJ)}(hhmac_sha224_usingrawkeyh]hhmac_sha224_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhM5ubjY)}(hk(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA224_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj'hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j)}jjsbc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjXhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjshhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jTc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jTc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]jTc.hmac_sha224_usingrawkeyasbuh1hhj@ubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubjJ)}(hdata_lenh]hdata_len}(hjshhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA224_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jTc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jTc.hmac_sha224_usingrawkeyasbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhM5ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhM5ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhM5hjhhubjv)}(hhh]h)}(h0Compute HMAC-SHA224 in one shot, using a raw keyh]h0Compute HMAC-SHA224 in one shot, using a raw key}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM5hj8hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-SHA224 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value **Description** If you're using the key multiple times, prefer to use hmac_sha224_preparekey() followed by multiple calls to hmac_sha224() instead. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM9hjWubj)}(hhh](j)}(h.``const u8 *raw_key`` the raw HMAC-SHA224 key h](j)}(h``const u8 *raw_key``h]j)}(hj|h]hconst u8 *raw_key}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM6hjvubj)}(hhh]h)}(hthe raw HMAC-SHA224 keyh]hthe raw HMAC-SHA224 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM6hjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjhM6hjsubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM7hjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM7hjsubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM8hjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM8hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM8hjsubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj'h]hsize_t data_len}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM9hj!ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hM9hj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hM9hjsubj)}(hO``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value h](j)}(h%``u8 out[static SHA224_DIGEST_SIZE]``h]j)}(hj`h]h!u8 out[static SHA224_DIGEST_SIZE]}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM:hjZubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM:hjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhM:hjsubeh}(h]h ]h"]h$]h&]uh1jhjWubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM<hjWubh)}(hIf you're using the key multiple times, prefer to use hmac_sha224_preparekey() followed by multiple calls to hmac_sha224() instead.h]hIf you’re using the key multiple times, prefer to use hmac_sha224_preparekey() followed by multiple calls to hmac_sha224() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM;hjWubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM>hjWubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM?hjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_ctx (C struct) c.sha256_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(h sha256_ctxh]j)}(hstruct sha256_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMDubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMDubjD)}(h sha256_ctxh]jJ)}(hjh]h sha256_ctx}(hj'hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMDubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMDubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMDhjhhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-256h]h*Context for hashing a message with SHA-256}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMFhjFhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMDubeh}(h]h ](jstructeh"]h$]h&]jjjjajjajjjuh1jhhhjohNhNubj)}(hk**Definition**:: struct sha256_ctx { struct __sha256_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh:}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMJhjeubj)}(h3struct sha256_ctx { struct __sha256_ctx ctx; };h]h3struct sha256_ctx { struct __sha256_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMLhjeubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMPhjeubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjh]hctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMGhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_init (C function) c.sha256_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(h)void sha256_init (struct sha256_ctx *ctx)h]j)}(h(void sha256_init(struct sha256_ctx *ctx)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMNubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhjhMNubjD)}(h sha256_inith]jJ)}(h sha256_inith]h sha256_init}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhjhMNubjY)}(h(struct sha256_ctx *ctx)h]j_)}(hstruct sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjMhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjIubj3)}(h h]h }(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubh)}(hhh]jJ)}(h sha256_ctxh]h sha256_ctx}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]j)}jj3sb c.sha256_initasbuh1hhjIubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjEubah}(h]h ]h"]h$]h&]hhuh1jXhj hhhjhMNubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMNubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMNhjhhubjv)}(hhh]h)}(h.Initialize a SHA-256 context for a new messageh]h.Initialize a SHA-256 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMNhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(h**Parameters** ``struct sha256_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider sha256() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMRhjubj)}(hhh]j)}(h5``struct sha256_ctx *ctx`` the context to initialize h](j)}(h``struct sha256_ctx *ctx``h]j)}(hjh]hstruct sha256_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMOhj ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMOhj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hMOhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjLh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMQhjubh)}(hEIf you don't need incremental computation, consider sha256() instead.h]hGIf you don’t need incremental computation, consider sha256() instead.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMPhjubh)}(h **Context**h]j)}(hjsh]hContext}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMRhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMShjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_update (C function)c.sha256_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hGvoid sha256_update (struct sha256_ctx *ctx, const u8 *data, size_t len)h]j)}(hFvoid sha256_update(struct sha256_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMXubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMXubjD)}(h sha256_updateh]jJ)}(h sha256_updateh]h sha256_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMXubjY)}(h4(struct sha256_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha256_ctxh]h sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.sha256_updateasbuh1hhjubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjNhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjghhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjcubj3)}(h h]h }(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j/c.sha256_updateasbuh1hhjcubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j/c.sha256_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMXubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMXubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMXhjhhubjv)}(hhh]h)}(h*Update a SHA-256 context with message datah]h*Update a SHA-256 context with message data}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMXhj-hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMXubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct sha256_ctx *ctx`` the context to update; must have been initialized ``const u8 *data`` the message data ``size_t len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM\hjLubj)}(hhh](j)}(hM``struct sha256_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha256_ctx *ctx``h]j)}(hjqh]hstruct sha256_ctx *ctx}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMYhjkubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjhMYhjhubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMZhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMZhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMZhjhubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM[hjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM[hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM[hjhubeh}(h]h ]h"]h$]h&]uh1jhjLubh)}(h**Description**h]j)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM]hjLubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM\hjLubh)}(h **Context**h]j)}(hjEh]hContext}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM^hjLubh)}(h Any context.h]h Any context.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM_hjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_final (C function)c.sha256_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hMvoid sha256_final (struct sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h]j)}(hLvoid sha256_final(struct sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMhubjD)}(h sha256_finalh]jJ)}(h sha256_finalh]h sha256_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMhubjY)}(h;(struct sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h](j_)}(hstruct sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha256_ctxh]h sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.sha256_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]jc.sha256_finalasbuh1hhj5ubj3)}(h h]h }(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5ubjJ)}(houth]hout}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5ubj)}(hjh]h[}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj5ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5ubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finalasbuh1hhj5ubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMhubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMhubah}(h]j}ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhhjhhubjv)}(hhh]h)}(h)Finish computing a SHA-256 message digesth]h)Finish computing a SHA-256 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMhubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX3**Parameters** ``struct sha256_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting SHA-256 message digest **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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMlhjubj)}(hhh](j)}(hO``struct sha256_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha256_ctx *ctx``h]j)}(hj)h]hstruct sha256_ctx *ctx}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMihj#ubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMihj?ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hMihj ubj)}(hT``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting SHA-256 message digest h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjbh]h!u8 out[static SHA256_DIGEST_SIZE]}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMjhj\ubj)}(hhh]h)}(h-(output) the resulting SHA-256 message digesth]h-(output) the resulting SHA-256 message digest}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMjhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhMjhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMlhjubh)}(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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMkhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMmhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMnhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256 (C function)c.sha256hNtauh1hhjohhhNhNubj)}(hhh](j)}(hKvoid sha256 (const u8 *data, size_t len, u8 out[static SHA256_DIGEST_SIZE])h]j)}(hJvoid sha256(const u8 *data, size_t len, u8 out[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMsubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj)hMsubjD)}(hsha256h]jJ)}(hsha256h]hsha256}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj)hMsubjY)}(h?(const u8 *data, size_t len, u8 out[static SHA256_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjXhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjTubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubh)}(hhh]jJ)}(hu8h]hu8}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j)}jj>sbc.sha256asbuh1hhjTubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubj_)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256asbuh1hhjubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjzhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]jc.sha256asbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjPubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhj)hMsubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj)hMsubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj)hMshjhhubjv)}(hhh]h)}(h*Compute SHA-256 message digest in one shoth]h*Compute SHA-256 message digest in one shot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMshjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj)hMsubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting SHA-256 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMwhjubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMthjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMthjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMthjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj;h]h size_t len}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMuhj5ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMuhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhMuhjubj)}(hT``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting SHA-256 message digest h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjth]h!u8 out[static SHA256_DIGEST_SIZE]}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMvhjnubj)}(hhh]h)}(h-(output) the resulting SHA-256 message digesth]h-(output) the resulting SHA-256 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhMvhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMxhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMxhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_finup_2x (C function)c.sha256_finup_2xhNtauh1hhjohhhNhNubj)}(hhh](j)}(hvoid sha256_finup_2x (const struct sha256_ctx *ctx, const u8 *data1, const u8 *data2, size_t len, u8 out1[static SHA256_DIGEST_SIZE], u8 out2[static SHA256_DIGEST_SIZE])h]j)}(hvoid sha256_finup_2x(const struct sha256_ctx *ctx, const u8 *data1, const u8 *data2, size_t len, u8 out1[static SHA256_DIGEST_SIZE], u8 out2[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM}ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhM}ubjD)}(hsha256_finup_2xh]jJ)}(hsha256_finup_2xh]hsha256_finup_2x}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhM}ubjY)}(h(const struct sha256_ctx *ctx, const u8 *data1, const u8 *data2, size_t len, u8 out1[static SHA256_DIGEST_SIZE], u8 out2[static SHA256_DIGEST_SIZE])h](j_)}(hconst struct sha256_ctx *ctxh](j!)}(hjh]hconst}(hj1hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-ubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubj!)}(hj$h]hstruct}(hjLhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-ubj3)}(h h]h }(hjYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubh)}(hhh]jJ)}(h sha256_ctxh]h sha256_ctx}(hjjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]j)}jjsbc.sha256_finup_2xasbuh1hhj-ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubj_)}(hconst u8 *data1h](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdata1h]hdata1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubj_)}(hconst u8 *data2h](j!)}(hjh]hconst}(hj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*ubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubh)}(hhh]jJ)}(hu8h]hu8}(hjLhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhj*ubj3)}(h h]h }(hjjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubj)}(hjh]h*}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjJ)}(hdata2h]hdata2}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubj_)}(h"u8 out1[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hout1h]hout1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjNhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj)}(hj[h]h]}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubj_)}(h"u8 out2[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hout2h]hout2}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha256_finup_2xasbuh1hhjubj)}(hj[h]h]}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj)ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhM}ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhM}ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhM}hjhhubjv)}(hhh]h)}(hCompute two SHA-256 digests from a common initial context. On some CPUs, this is faster than sequentially computing each digest.h]hCompute two SHA-256 digests from a common initial context. On some CPUs, this is faster than sequentially computing each digest.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM}hj0hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhM}ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1jhhhjohNhNubj)}(hX6**Parameters** ``const struct sha256_ctx *ctx`` an optional initial context, which may have already processed data. If NULL, a default initial context is used (equivalent to sha256_init()). ``const u8 *data1`` data for the first message ``const u8 *data2`` data for the second message ``size_t len`` the length of each of **data1** and **data2**, in bytes ``u8 out1[static SHA256_DIGEST_SIZE]`` (output) the first SHA-256 message digest ``u8 out2[static SHA256_DIGEST_SIZE]`` (output) the second SHA-256 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjOubj)}(hhh](j)}(h``const struct sha256_ctx *ctx`` an optional initial context, which may have already processed data. If NULL, a default initial context is used (equivalent to sha256_init()). h](j)}(h ``const struct sha256_ctx *ctx``h]j)}(hjth]hconst struct sha256_ctx *ctx}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjnubj)}(hhh]h)}(han optional initial context, which may have already processed data. If NULL, a default initial context is used (equivalent to sha256_init()).h]han optional initial context, which may have already processed data. If NULL, a default initial context is used (equivalent to sha256_init()).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhMhjkubj)}(h/``const u8 *data1`` data for the first message h](j)}(h``const u8 *data1``h]j)}(hjh]hconst u8 *data1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hdata for the first messageh]hdata for the first message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjkubj)}(h0``const u8 *data2`` data for the second message h](j)}(h``const u8 *data2``h]j)}(hjh]hconst u8 *data2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hdata for the second messageh]hdata for the second message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjkubj)}(hG``size_t len`` the length of each of **data1** and **data2**, in bytes h](j)}(h``size_t len``h]j)}(hj h]h size_t len}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h7the length of each of **data1** and **data2**, in bytesh](hthe length of each of }(hj9hhhNhNubj)}(h **data1**h]hdata1}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh and }(hj9hhhNhNubj)}(h **data2**h]hdata2}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh , in bytes}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj5hMhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hMhjkubj)}(hQ``u8 out1[static SHA256_DIGEST_SIZE]`` (output) the first SHA-256 message digest h](j)}(h&``u8 out1[static SHA256_DIGEST_SIZE]``h]j)}(hj}h]h"u8 out1[static SHA256_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjwubj)}(hhh]h)}(h)(output) the first SHA-256 message digesth]h)(output) the first SHA-256 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjhMhjkubj)}(hR``u8 out2[static SHA256_DIGEST_SIZE]`` (output) the second SHA-256 message digest h](j)}(h&``u8 out2[static SHA256_DIGEST_SIZE]``h]j)}(hjh]h"u8 out2[static SHA256_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h*(output) the second SHA-256 message digesth]h*(output) the second SHA-256 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjkubeh}(h]h ]h"]h$]h&]uh1jhjOubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjOubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )sha256_finup_2x_is_optimized (C function)c.sha256_finup_2x_is_optimizedhNtauh1hhjohhhNhNubj)}(hhh](j)}(h(bool sha256_finup_2x_is_optimized (void)h]j)}(h'bool sha256_finup_2x_is_optimized(void)h](j!)}(hboolh]hbool}(hj6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj2hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2hhhjDhMubjD)}(hsha256_finup_2x_is_optimizedh]jJ)}(hsha256_finup_2x_is_optimizedh]hsha256_finup_2x_is_optimized}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjSubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj2hhhjDhMubjY)}(h(void)h]j_)}(hvoidh]j!)}(hvoidh]hvoid}(hjshhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjoubah}(h]h ]h"]h$]h&]noemphhhuh1j^hjkubah}(h]h ]h"]h$]h&]hhuh1jXhj2hhhjDhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj.hhhjDhMubah}(h]j)ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjDhMhj+hhubjv)}(hhh]h)}(hjCheck if sha256_finup_2x() is using a real interleaved implementation, as opposed to a sequential fallbackh]hjCheck if sha256_finup_2x() is using a real interleaved implementation, as opposed to a sequential fallback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj+hhhjDhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(ha**Parameters** ``void`` no arguments **Return** true if optimized **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhKhjubh)}(htrue if optimizedh]htrue if optimized}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hj@h]hContext}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_key (C struct)c.hmac_sha256_keyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha256_keyh]j)}(hstruct hmac_sha256_keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_keyh]jJ)}(hjh]hhmac_sha256_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj}hhhjhMubah}(h]jxah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjzhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA256h]hPrepared key for HMAC-SHA256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjzhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha256_key { struct __hmac_sha256_key key; }; **Members** ``key`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(h=struct hmac_sha256_key { struct __hmac_sha256_key key; };h]h=struct hmac_sha256_key { struct __hmac_sha256_key key; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``key`` privateh](j)}(h``key``h]j)}(hj4h]hkey}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj.ubj)}(hhh]h)}(hprivateh]hprivate}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_ctx (C struct)c.hmac_sha256_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha256_ctxh]j)}(hstruct hmac_sha256_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_ctxh]jJ)}(hjh]hhmac_sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA256 of a messageh]h.Context for computing HMAC-SHA256 of a message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha256_ctx { struct __hmac_sha256_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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(h=struct hmac_sha256_ctx { struct __hmac_sha256_ctx ctx; };h]h=struct hmac_sha256_ctx { struct __hmac_sha256_ctx ctx; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Members**h]j)}(hjh]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hj=h]hctx}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj7ubj)}(hhh]h)}(hprivateh]hprivate}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhMhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha256_preparekey (C function)c.hmac_sha256_preparekeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(h`void hmac_sha256_preparekey (struct hmac_sha256_key *key, const u8 *raw_key, size_t raw_key_len)h]j)}(h_void hmac_sha256_preparekey(struct hmac_sha256_key *key, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_preparekeyh]jJ)}(hhmac_sha256_preparekeyh]hhmac_sha256_preparekey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(hD(struct hmac_sha256_key *key, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha256_key *keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_keyh]hhmac_sha256_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hkeyh]hkey}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjFhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjBubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubh)}(hhh]jJ)}(hu8h]hu8}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]jc.hmac_sha256_preparekeyasbuh1hhjBubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha256_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA256h]hPrepare a key for HMAC-SHA256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'jj'jjjuh1jhhhjohNhNubj)}(hX|**Parameters** ``struct hmac_sha256_key *key`` (output) the key structure to initialize ``const u8 *raw_key`` the raw HMAC-SHA256 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Note** the caller is responsible for zeroizing both the struct hmac_sha256_key and the raw key once they are no longer needed. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj+ubj)}(hhh](j)}(hI``struct hmac_sha256_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha256_key *key``h]j)}(hjPh]hstruct hmac_sha256_key *key}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehMhjGubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA256 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe raw HMAC-SHA256 keyh]hthe raw HMAC-SHA256 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjGubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjGubeh}(h]h ]h"]h$]h&]uh1jhj+ubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj+ubh)}(hwthe caller is responsible for zeroizing both the struct hmac_sha256_key and the raw key once they are no longer needed.h]hwthe caller is responsible for zeroizing both the struct hmac_sha256_key and the raw key once they are no longer needed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj+ubh)}(h **Context**h]j)}(hj$h]hContext}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj+ubh)}(h Any context.h]h Any context.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_init (C function)c.hmac_sha256_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha256_init (struct hmac_sha256_ctx *ctx, const struct hmac_sha256_key *key)h]j)}(hUvoid hmac_sha256_init(struct hmac_sha256_ctx *ctx, const struct hmac_sha256_key *key)h](j!)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjehhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjehhhjwhMubjD)}(hhmac_sha256_inith]jJ)}(hhmac_sha256_inith]hhmac_sha256_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjehhhjwhMubjY)}(h@(struct hmac_sha256_ctx *ctx, const struct hmac_sha256_key *key)h](j_)}(hstruct hmac_sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!const struct hmac_sha256_key *keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj!)}(hj$h]hstruct}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_keyh]hhmac_sha256_key}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]jc.hmac_sha256_initasbuh1hhjubj3)}(h h]h }(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjehhhjwhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjahhhjwhMubah}(h]j\ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjwhMhj^hhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA256 context for a new messageh]h3Initialize an HMAC-SHA256 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj^hhhjwhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha256_ctx *ctx`` (output) the HMAC context to initialize ``const struct hmac_sha256_key *key`` the prepared HMAC key **Description** If you don't need incremental computation, consider hmac_sha256() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(hH``struct hmac_sha256_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha256_ctx *ctx``h]j)}(hjh]hstruct hmac_sha256_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubj)}(h<``const struct hmac_sha256_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha256_key *key``h]j)}(hj.h]h!const struct hmac_sha256_key *key}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj(ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhjChMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjih]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(hJIf you don't need incremental computation, consider hmac_sha256() instead.h]hLIf you don’t need incremental computation, consider hmac_sha256() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha256_init_usingrawkey (C function)c.hmac_sha256_init_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hfvoid hmac_sha256_init_usingrawkey (struct hmac_sha256_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h]j)}(hevoid hmac_sha256_init_usingrawkey(struct hmac_sha256_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_init_usingrawkeyh]jJ)}(hhmac_sha256_init_usingrawkeyh]hhmac_sha256_init_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(hD(struct hmac_sha256_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jLc.hmac_sha256_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jLc.hmac_sha256_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(hDInitialize an HMAC-SHA256 context for a new message, using a raw keyh]hDInitialize an HMAC-SHA256 context for a new message, using a raw key}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjJhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjejjejjjuh1jhhhjohNhNubj)}(hXa**Parameters** ``struct hmac_sha256_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-SHA256 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_sha256_usingrawkey() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjoh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjiubj)}(hhh](j)}(hH``struct hmac_sha256_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha256_ctx *ctx``h]j)}(hjh]hstruct hmac_sha256_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA256 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe raw HMAC-SHA256 keyh]hthe raw HMAC-SHA256 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjiubh)}(h**Description**h]j)}(hj;h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjiubh)}(hVIf you don't need incremental computation, consider hmac_sha256_usingrawkey() instead.h]hXIf you don’t need incremental computation, consider hmac_sha256_usingrawkey() instead.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjiubh)}(h **Context**h]j)}(hjbh]hContext}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjiubh)}(h Any context.h]h Any context.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjiubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_update (C function)c.hmac_sha256_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha256_update (struct hmac_sha256_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hUvoid hmac_sha256_update(struct hmac_sha256_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_updateh]jJ)}(hhmac_sha256_updateh]hhmac_sha256_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(h>(struct hmac_sha256_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_updateasbuh1hhjubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hj=hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjVhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjRubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRubh)}(hhh]jJ)}(hu8h]hu8}(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]jc.hmac_sha256_updateasbuh1hhjRubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha256_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h/Update an HMAC-SHA256 context with message datah]h/Update an HMAC-SHA256 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj7jj7jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha256_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjAh]h Parameters}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj;ubj)}(hhh](j)}(hW``struct hmac_sha256_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_sha256_ctx *ctx``h]j)}(hj`h]hstruct hmac_sha256_ctx *ctx}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjZubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhMhjWubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjWubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjWubeh}(h]h ]h"]h$]h&]uh1jhj;ubh)}(h**Description**h]j)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj;ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj;ubh)}(h **Context**h]j)}(hj4h]hContext}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj;ubh)}(h Any context.h]h Any context.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_final (C function)c.hmac_sha256_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hWvoid hmac_sha256_final (struct hmac_sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h]j)}(hVvoid hmac_sha256_final(struct hmac_sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjyhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjuhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuhhhjhMubjD)}(hhmac_sha256_finalh]jJ)}(hhmac_sha256_finalh]hhmac_sha256_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjuhhhjhMubjY)}(h@(struct hmac_sha256_ctx *ctx, u8 out[static SHA256_DIGEST_SIZE])h](j_)}(hstruct hmac_sha256_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]jc.hmac_sha256_finalasbuh1hhj$ubj3)}(h h]h }(hjIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubjJ)}(houth]hout}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$ubj)}(hjh]h[}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj!)}(hjh]hstatic}(hjrhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj$ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha256_finalasbuh1hhj$ubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjuhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjqhhhjhMubah}(h]jlah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjnhhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA256 valueh]h%Finish computing an HMAC-SHA256 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjnhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX8**Parameters** ``struct hmac_sha256_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(hY``struct hmac_sha256_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_sha256_ctx *ctx``h]j)}(hjh]hstruct hmac_sha256_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMhjubj)}(hO``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjQh]h!u8 out[static SHA256_DIGEST_SIZE]}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjKubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 value}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjgubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjfhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256 (C function) c.hmac_sha256hNtauh1hhjohhhNhNubj)}(hhh](j)}(hxvoid hmac_sha256 (const struct hmac_sha256_key *key, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h]j)}(hwvoid hmac_sha256(const struct hmac_sha256_key *key, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h hmac_sha256h]jJ)}(h hmac_sha256h]h hmac_sha256}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(hg(const struct hmac_sha256_key *key, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h](j_)}(h!const struct hmac_sha256_key *keyh](j!)}(hjh]hconst}(hjGhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjCubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubj!)}(hj$h]hstruct}(hjbhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjCubj3)}(h h]h }(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubh)}(hhh]jJ)}(hhmac_sha256_keyh]hhmac_sha256_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj-sb c.hmac_sha256asbuh1hhjCubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha256asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]j c.hmac_sha256asbuh1hhj@ubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubjJ)}(hdata_lenh]hdata_len}(hjshhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubj_)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha256asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha256asbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj?ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h5Compute HMAC-SHA256 in one shot, using a prepared keyh]h5Compute HMAC-SHA256 in one shot, using a prepared key}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj8hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1jhhhjohNhNubj)}(hXp**Parameters** ``const struct hmac_sha256_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value **Description** If you're using the key only once, consider using hmac_sha256_usingrawkey(). **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjWubj)}(hhh](j)}(h<``const struct hmac_sha256_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha256_key *key``h]j)}(hj|h]h!const struct hmac_sha256_key *key}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjvubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjhMhjsubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjsubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjsubj)}(hO``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hj'h]h!u8 out[static SHA256_DIGEST_SIZE]}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj!ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 value}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhjsubeh}(h]h ]h"]h$]h&]uh1jhjWubh)}(h**Description**h]j)}(hjbh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjWubh)}(hLIf you're using the key only once, consider using hmac_sha256_usingrawkey().h]hNIf you’re using the key only once, consider using hmac_sha256_usingrawkey().}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjWubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjWubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha256_usingrawkey (C function)c.hmac_sha256_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hvoid hmac_sha256_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h]j)}(hvoid hmac_sha256_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_usingrawkeyh]jJ)}(hhmac_sha256_usingrawkeyh]hhmac_sha256_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(hk(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA256_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hj)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j)}jjsbc.hmac_sha256_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jEc.hmac_sha256_usingrawkeyasbuh1hhjyubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jEc.hmac_sha256_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]jEc.hmac_sha256_usingrawkeyasbuh1hhj1ubj3)}(h h]h }(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubjJ)}(hdata_lenh]hdata_len}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jEc.hmac_sha256_usingrawkeyasbuh1hhjyubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjyubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jEc.hmac_sha256_usingrawkeyasbuh1hhjyubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h0Compute HMAC-SHA256 in one shot, using a raw keyh]h0Compute HMAC-SHA256 in one shot, using a raw key}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj)hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjDjjDjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-SHA256 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value **Description** If you're using the key multiple times, prefer to use hmac_sha256_preparekey() followed by multiple calls to hmac_sha256() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjHubj)}(hhh](j)}(h.``const u8 *raw_key`` the raw HMAC-SHA256 key h](j)}(h``const u8 *raw_key``h]j)}(hjmh]hconst u8 *raw_key}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjgubj)}(hhh]h)}(hthe raw HMAC-SHA256 keyh]hthe raw HMAC-SHA256 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhMhjdubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjdubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjdubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjh]hsize_t data_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMhjdubj)}(hO``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjQh]h!u8 out[static SHA256_DIGEST_SIZE]}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjKubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 value}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjgubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjfhMhjdubeh}(h]h ]h"]h$]h&]uh1jhjHubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjHubh)}(hIf you're using the key multiple times, prefer to use hmac_sha256_preparekey() followed by multiple calls to hmac_sha256() instead.h]hIf you’re using the key multiple times, prefer to use hmac_sha256_preparekey() followed by multiple calls to hmac_sha256() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjHubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjHubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_ctx (C struct) c.sha384_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(h sha384_ctxh]j)}(hstruct sha384_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h sha384_ctxh]jJ)}(hjh]h sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-384h]h*Context for hashing a message with SHA-384}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM4hj7hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjRjjRjjjuh1jhhhjohNhNubj)}(hk**Definition**:: struct sha384_ctx { struct __sha512_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh:}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM8hjVubj)}(h3struct sha384_ctx { struct __sha512_ctx ctx; };h]h3struct sha384_ctx { struct __sha512_ctx ctx; };}hjwsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM:hjVubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM>hjVubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjh]hctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM5hjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM6hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM5hjubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_init (C function) c.sha384_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(h)void sha384_init (struct sha384_ctx *ctx)h]j)}(h(void sha384_init(struct sha384_ctx *ctx)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM<ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhM<ubjD)}(h sha384_inith]jJ)}(h sha384_inith]h sha384_init}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhM<ubjY)}(h(struct sha384_ctx *ctx)h]j_)}(hstruct sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hj>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj:ubj3)}(h h]h }(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubh)}(hhh]jJ)}(h sha384_ctxh]h sha384_ctx}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sb c.sha384_initasbuh1hhj:ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubah}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhM<ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhM<ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhM<hjhhubjv)}(hhh]h)}(h.Initialize a SHA-384 context for a new messageh]h.Initialize a SHA-384 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM<hjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhM<ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(h**Parameters** ``struct sha384_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider sha384() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM@hjubj)}(hhh]j)}(h5``struct sha384_ctx *ctx`` the context to initialize h](j)}(h``struct sha384_ctx *ctx``h]j)}(hjh]hstruct sha384_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM=hjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM=hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM=hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM?hjubh)}(hEIf you don't need incremental computation, consider sha384() instead.h]hGIf you don’t need incremental computation, consider sha384() instead.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM>hjubh)}(h **Context**h]j)}(hjdh]hContext}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM@hjubh)}(h Any context.h]h Any context.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_update (C function)c.sha384_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hGvoid sha384_update (struct sha384_ctx *ctx, const u8 *data, size_t len)h]j)}(hFvoid sha384_update(struct sha384_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMFubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMFubjD)}(h sha384_updateh]jJ)}(h sha384_updateh]h sha384_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMFubjY)}(h4(struct sha384_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha384_ctxh]h sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.sha384_updateasbuh1hhjubj3)}(h h]h }(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjXhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjTubj3)}(h h]h }(hjehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubh)}(hhh]jJ)}(hu8h]hu8}(hjvhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j c.sha384_updateasbuh1hhjTubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.sha384_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMFubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMFubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMFhjhhubjv)}(hhh]h)}(h*Update a SHA-384 context with message datah]h*Update a SHA-384 context with message data}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMFhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMFubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct sha384_ctx *ctx`` the context to update; must have been initialized ``const u8 *data`` the message data ``size_t len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMJhj=ubj)}(hhh](j)}(hM``struct sha384_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha384_ctx *ctx``h]j)}(hjbh]hstruct sha384_ctx *ctx}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMGhj\ubj)}(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&]uh1hhjwhMGhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhMGhjYubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMHhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjYubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMIhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMIhjYubeh}(h]h ]h"]h$]h&]uh1jhj=ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMKhj=ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMJhj=ubh)}(h **Context**h]j)}(hj6h]hContext}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMLhj=ubh)}(h Any context.h]h Any context.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMMhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_final (C function)c.sha384_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hMvoid sha384_final (struct sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h]j)}(hLvoid sha384_final(struct sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj{hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjwhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMVubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwhhhjhMVubjD)}(h sha384_finalh]jJ)}(h sha384_finalh]h sha384_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjwhhhjhMVubjY)}(h;(struct sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h](j_)}(hstruct sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha384_ctxh]h sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.sha384_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]jc.sha384_finalasbuh1hhj&ubj3)}(h h]h }(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubjJ)}(houth]hout}(hjYhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubj)}(hjh]h[}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj!)}(hjh]hstatic}(hjthhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj&ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha384_finalasbuh1hhj&ubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjwhhhjhMVubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjshhhjhMVubah}(h]jnah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMVhjphhubjv)}(hhh]h)}(h)Finish computing a SHA-384 message digesth]h)Finish computing a SHA-384 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMVhjhhubah}(h]h ]h"]h$]h&]uh1juhjphhhjhMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX3**Parameters** ``struct sha384_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting SHA-384 message digest **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMZhjubj)}(hhh](j)}(hO``struct sha384_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha384_ctx *ctx``h]j)}(hjh]hstruct sha384_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMWhjubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMWhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj/hMWhjubj)}(hT``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting SHA-384 message digest h](j)}(h%``u8 out[static SHA384_DIGEST_SIZE]``h]j)}(hjSh]h!u8 out[static SHA384_DIGEST_SIZE]}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMXhjMubj)}(hhh]h)}(h-(output) the resulting SHA-384 message digesth]h-(output) the resulting SHA-384 message digest}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMXhjiubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjhhMXhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMZhjubh)}(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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMYhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM[hjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM\hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384 (C function)c.sha384hNtauh1hhjohhhNhNubj)}(hhh](j)}(hKvoid sha384 (const u8 *data, size_t len, u8 out[static SHA384_DIGEST_SIZE])h]j)}(hJvoid sha384(const u8 *data, size_t len, u8 out[static SHA384_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMaubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMaubjD)}(hsha384h]jJ)}(hsha384h]hsha384}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMaubjY)}(h?(const u8 *data, size_t len, u8 out[static SHA384_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjIhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjEubj3)}(h h]h }(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubh)}(hhh]jJ)}(hu8h]hu8}(hjghhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j)}jj/sbc.sha384asbuh1hhjEubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjAubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha384asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjAubj_)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha384asbuh1hhjubj3)}(h h]h }(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hj2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjMhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]jc.sha384asbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjAubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMaubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMaubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMahjhhubjv)}(hhh]h)}(h*Compute SHA-384 message digest in one shoth]h*Compute SHA-384 message digest in one shot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMahjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMaubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting SHA-384 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMehjubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMbhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMbhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMbhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj,h]h size_t len}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMchj&ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMchjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhMchjubj)}(hT``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting SHA-384 message digest h](j)}(h%``u8 out[static SHA384_DIGEST_SIZE]``h]j)}(hjeh]h!u8 out[static SHA384_DIGEST_SIZE]}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMdhj_ubj)}(hhh]h)}(h-(output) the resulting SHA-384 message digesth]h-(output) the resulting SHA-384 message digest}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMdhj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhMdhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMfhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMfhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_key (C struct)c.hmac_sha384_keyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha384_keyh]j)}(hstruct hmac_sha384_keyh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMkubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMkubjD)}(hhmac_sha384_keyh]jJ)}(hjh]hhmac_sha384_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMkubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMkubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMkhjhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA384h]hPrepared key for HMAC-SHA384}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMkhj$hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMkubeh}(h]h ](jstructeh"]h$]h&]jjjj?jj?jjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha384_key { struct __hmac_sha512_key key; }; **Members** ``key`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh:}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMohjCubj)}(h=struct hmac_sha384_key { struct __hmac_sha512_key key; };h]h=struct hmac_sha384_key { struct __hmac_sha512_key key; };}hjdsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMqhjCubh)}(h **Members**h]j)}(hjuh]hMembers}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMuhjCubj)}(hhh]j)}(h``key`` privateh](j)}(h``key``h]j)}(hjh]hkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMlhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_ctx (C struct)c.hmac_sha384_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(hhmac_sha384_ctxh]j)}(hstruct hmac_sha384_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMsubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMsubjD)}(hhmac_sha384_ctxh]jJ)}(hjh]hhmac_sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMsubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMsubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMshjhhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA384 of a messageh]h.Context for computing HMAC-SHA384 of a message}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMshj-hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMsubeh}(h]h ](jstructeh"]h$]h&]jjjjHjjHjjjuh1jhhhjohNhNubj)}(hu**Definition**:: struct hmac_sha384_ctx { struct __hmac_sha512_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh:}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMwhjLubj)}(h=struct hmac_sha384_ctx { struct __hmac_sha512_ctx ctx; };h]h=struct hmac_sha384_ctx { struct __hmac_sha512_ctx ctx; };}hjmsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMyhjLubh)}(h **Members**h]j)}(hj~h]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM}hjLubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjh]hctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMthjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMuhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMthjubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha384_preparekey (C function)c.hmac_sha384_preparekeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(h`void hmac_sha384_preparekey (struct hmac_sha384_key *key, const u8 *raw_key, size_t raw_key_len)h]j)}(h_void hmac_sha384_preparekey(struct hmac_sha384_key *key, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM{ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhM{ubjD)}(hhmac_sha384_preparekeyh]jJ)}(hhmac_sha384_preparekeyh]hhmac_sha384_preparekey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhM{ubjY)}(hD(struct hmac_sha384_key *key, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha384_key *keyh](j!)}(hj$h]hstruct}(hj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0ubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubh)}(hhh]jJ)}(hhmac_sha384_keyh]hhmac_sha384_key}(hjRhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j)}jjsbc.hmac_sha384_preparekeyasbuh1hhj0ubj3)}(h h]h }(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj,ubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jnc.hmac_sha384_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj,ubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jnc.hmac_sha384_preparekeyasbuh1hhjubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj,ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhM{ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhM{ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhM{hjhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA384h]hPrepare a key for HMAC-SHA384}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM{hjlhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhM{ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX|**Parameters** ``struct hmac_sha384_key *key`` (output) the key structure to initialize ``const u8 *raw_key`` the raw HMAC-SHA384 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Note** the caller is responsible for zeroizing both the struct hmac_sha384_key and the raw key once they are no longer needed. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(hI``struct hmac_sha384_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha384_key *key``h]j)}(hjh]hstruct hmac_sha384_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM|hjubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM|hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM|hjubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA384 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM}hjubj)}(hhh]h)}(hthe raw HMAC-SHA384 keyh]hthe raw HMAC-SHA384 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM}hjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hj"h]hsize_t raw_key_len}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM~hjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hM~hj8ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj7hM~hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Note**h]j)}(hj]h]hNote}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(hwthe caller is responsible for zeroizing both the struct hmac_sha384_key and the raw key once they are no longer needed.h]hwthe caller is responsible for zeroizing both the struct hmac_sha384_key and the raw key once they are no longer needed.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_init (C function)c.hmac_sha384_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha384_init (struct hmac_sha384_ctx *ctx, const struct hmac_sha384_key *key)h]j)}(hUvoid hmac_sha384_init(struct hmac_sha384_ctx *ctx, const struct hmac_sha384_key *key)h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha384_inith]jJ)}(hhmac_sha384_inith]hhmac_sha384_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(h@(struct hmac_sha384_ctx *ctx, const struct hmac_sha384_key *key)h](j_)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hj$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]j)}jjsbc.hmac_sha384_initasbuh1hhjubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hj_hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!const struct hmac_sha384_key *keyh](j!)}(hjh]hconst}(hjxhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjtubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjtubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubh)}(hhh]jJ)}(hhmac_sha384_keyh]hhmac_sha384_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j@c.hmac_sha384_initasbuh1hhjtubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjtubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA384 context for a new messageh]h3Initialize an HMAC-SHA384 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha384_ctx *ctx`` (output) the HMAC context to initialize ``const struct hmac_sha384_key *key`` the prepared HMAC key **Description** If you don't need incremental computation, consider hmac_sha384() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj0ubj)}(hhh](j)}(hH``struct hmac_sha384_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha384_ctx *ctx``h]j)}(hjUh]hstruct hmac_sha384_ctx *ctx}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjOubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhMhjkubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjjhMhjLubj)}(h<``const struct hmac_sha384_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha384_key *key``h]j)}(hjh]h!const struct hmac_sha384_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjLubeh}(h]h ]h"]h$]h&]uh1jhj0ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj0ubh)}(hJIf you don't need incremental computation, consider hmac_sha384() instead.h]hLIf you don’t need incremental computation, consider hmac_sha384() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj0ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj0ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha384_init_usingrawkey (C function)c.hmac_sha384_init_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hfvoid hmac_sha384_init_usingrawkey (struct hmac_sha384_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h]j)}(hevoid hmac_sha384_init_usingrawkey(struct hmac_sha384_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj1hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1hhhjChMubjD)}(hhmac_sha384_init_usingrawkeyh]jJ)}(hhmac_sha384_init_usingrawkeyh]hhmac_sha384_init_usingrawkey}(hjVhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjRubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj1hhhjChMubjY)}(hD(struct hmac_sha384_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjrhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjnubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjXsbc.hmac_sha384_init_usingrawkeyasbuh1hhjnubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjnubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjjubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.hmac_sha384_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hj. hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hraw_keyh]hraw_key}(hj; hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjjubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjW hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjT ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjY modnameN classnameNjj)}j]jc.hmac_sha384_init_usingrawkeyasbuh1hhjP ubj3)}(h h]h }(hju hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjP ubjJ)}(h raw_key_lenh]h raw_key_len}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjP ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjjubeh}(h]h ]h"]h$]h&]hhuh1jXhj1hhhjChMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj-hhhjChMubah}(h]j(ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjChMhj*hhubjv)}(hhh]h)}(hDInitialize an HMAC-SHA384 context for a new message, using a raw keyh]hDInitialize an HMAC-SHA384 context for a new message, using a raw key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj hhubah}(h]h ]h"]h$]h&]uh1juhj*hhhjChMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjohNhNubj)}(hXa**Parameters** ``struct hmac_sha384_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-SHA384 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_sha384_usingrawkey() instead. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubj)}(hhh](j)}(hH``struct hmac_sha384_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha384_ctx *ctx``h]j)}(hj h]hstruct hmac_sha384_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA384 key h](j)}(h``const u8 *raw_key``h]j)}(hj' h]hconst u8 *raw_key}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj! ubj)}(hhh]h)}(hthe raw HMAC-SHA384 keyh]hthe raw HMAC-SHA384 key}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj< hMhj= ubah}(h]h ]h"]h$]h&]uh1jhj! ubeh}(h]h ]h"]h$]h&]uh1jhj< hMhj ubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hj` h]hsize_t raw_key_len}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjZ ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju hMhjv ubah}(h]h ]h"]h$]h&]uh1jhjZ ubeh}(h]h ]h"]h$]h&]uh1jhju hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(hVIf you don't need incremental computation, consider hmac_sha384_usingrawkey() instead.h]hXIf you don’t need incremental computation, consider hmac_sha384_usingrawkey() instead.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_update (C function)c.hmac_sha384_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha384_update (struct hmac_sha384_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hUvoid hmac_sha384_update(struct hmac_sha384_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhj hMubjD)}(hhmac_sha384_updateh]jJ)}(hhmac_sha384_updateh]hhmac_sha384_update}(hj( hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$ ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhj hMubjY)}(h>(struct hmac_sha384_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjD hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj@ ubj3)}(h h]h }(hjQ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ ubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hjb hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjd modnameN classnameNjj)}j]j)}jj* sbc.hmac_sha384_updateasbuh1hhj@ ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ ubjJ)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj< ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j~ c.hmac_sha384_updateasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(hdatah]hdata}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj< ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj) hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj& ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+ modnameN classnameNjj)}j]j~ c.hmac_sha384_updateasbuh1hhj" ubj3)}(h h]h }(hjG hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj" ubjJ)}(hdata_lenh]hdata_len}(hjU hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj" ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj< ubeh}(h]h ]h"]h$]h&]hhuh1jXhj hhhj hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj hMubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hMhj hhubjv)}(hhh]h)}(h/Update an HMAC-SHA384 context with message datah]h/Update an HMAC-SHA384 context with message data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj| hhubah}(h]h ]h"]h$]h&]uh1juhj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha384_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubj)}(hhh](j)}(hW``struct hmac_sha384_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_sha384_ctx *ctx``h]j)}(hj h]hstruct hmac_sha384_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj h]hconst u8 *data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj2 h]hsize_t data_len}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0 ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj, ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG hMhjH ubah}(h]h ]h"]h$]h&]uh1jhj, ubeh}(h]h ]h"]h$]h&]uh1jhjG hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjm h]h Description}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_final (C function)c.hmac_sha384_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hWvoid hmac_sha384_final (struct hmac_sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h]j)}(hVvoid hmac_sha384_final(struct hmac_sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhj hMubjD)}(hhmac_sha384_finalh]jJ)}(hhmac_sha384_finalh]hhmac_sha384_final}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhj hMubjY)}(h@(struct hmac_sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h](j_)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j)}jj sbc.hmac_sha384_finalasbuh1hhjubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjohhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jPc.hmac_sha384_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jPc.hmac_sha384_finalasbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhj hhhj hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj hMubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hMhj hhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA384 valueh]h%Finish computing an HMAC-SHA384 value}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj4hhubah}(h]h ]h"]h$]h&]uh1juhj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjjjuh1jhhhjohNhNubj)}(hX8**Parameters** ``struct hmac_sha384_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubj)}(hhh](j)}(hY``struct hmac_sha384_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_sha384_ctx *ctx``h]j)}(hjxh]hstruct hmac_sha384_ctx *ctx}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjrubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhjoubj)}(hO``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value h](j)}(h%``u8 out[static SHA384_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA384_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA384 valueh]h((output) the resulting HMAC-SHA384 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjoubeh}(h]h ]h"]h$]h&]uh1jhjSubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjhhhNhNubj)}(h**ctx**h]hctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(. So the caller does not need to do it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubh)}(h **Context**h]j)}(hj%h]hContext}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubh)}(h Any context.h]h Any context.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384 (C function) c.hmac_sha384hNtauh1hhjohhhNhNubj)}(hhh](j)}(hxvoid hmac_sha384 (const struct hmac_sha384_key *key, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h]j)}(hwvoid hmac_sha384(const struct hmac_sha384_key *key, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjfhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjfhhhjxhMubjD)}(h hmac_sha384h]jJ)}(h hmac_sha384h]h hmac_sha384}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjfhhhjxhMubjY)}(hg(const struct hmac_sha384_key *key, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h](j_)}(h!const struct hmac_sha384_key *keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha384_keyh]hhmac_sha384_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.hmac_sha384asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0ubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubh)}(hhh]jJ)}(hu8h]hu8}(hjRhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j c.hmac_sha384asbuh1hhj0ubj3)}(h h]h }(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha384asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.hmac_sha384asbuh1hhjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j c.hmac_sha384asbuh1hhjubj)}(hj[h]h]}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjfhhhjxhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjbhhhjxhMubah}(h]j]ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjxhMhj_hhubjv)}(hhh]h)}(h5Compute HMAC-SHA384 in one shot, using a prepared keyh]h5Compute HMAC-SHA384 in one shot, using a prepared key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj_hhhjxhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hXp**Parameters** ``const struct hmac_sha384_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value **Description** If you're using the key only once, consider using hmac_sha384_usingrawkey(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(h<``const struct hmac_sha384_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha384_key *key``h]j)}(hjh]h!const struct hmac_sha384_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj*hMhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjNh]hsize_t data_len}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjHubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchMhjubj)}(hO``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value h](j)}(h%``u8 out[static SHA384_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA384_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA384 valueh]h((output) the resulting HMAC-SHA384 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(hLIf you're using the key only once, consider using hmac_sha384_usingrawkey().h]hNIf you’re using the key only once, consider using hmac_sha384_usingrawkey().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha384_usingrawkey (C function)c.hmac_sha384_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hvoid hmac_sha384_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h]j)}(hvoid hmac_sha384_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*hhhj<hMubjD)}(hhmac_sha384_usingrawkeyh]jJ)}(hhmac_sha384_usingrawkeyh]hhmac_sha384_usingrawkey}(hjOhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjKubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj*hhhj<hMubjY)}(hk(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA384_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjkhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjgubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjgubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjQsbc.hmac_sha384_usingrawkeyasbuh1hhjgubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjgubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjgubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjcubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjcubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj%hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj!ubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubh)}(hhh]jJ)}(hu8h]hu8}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]jc.hmac_sha384_usingrawkeyasbuh1hhj!ubj3)}(h h]h }(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjJ)}(hdatah]hdata}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjcubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjcubj_)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hj'hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj)}(hj[h]h]}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjcubeh}(h]h ]h"]h$]h&]hhuh1jXhj*hhhj<hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj&hhhj<hMubah}(h]j!ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj<hMhj#hhubjv)}(hhh]h)}(h0Compute HMAC-SHA384 in one shot, using a raw keyh]h0Compute HMAC-SHA384 in one shot, using a raw key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj#hhhj<hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-SHA384 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value **Description** If you're using the key multiple times, prefer to use hmac_sha384_preparekey() followed by multiple calls to hmac_sha384() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(h.``const u8 *raw_key`` the raw HMAC-SHA384 key h](j)}(h``const u8 *raw_key``h]j)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe raw HMAC-SHA384 keyh]hthe raw HMAC-SHA384 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj?h]hconst u8 *data}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjxh]hsize_t data_len}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjrubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hO``u8 out[static SHA384_DIGEST_SIZE]`` (output) the resulting HMAC-SHA384 value h](j)}(h%``u8 out[static SHA384_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA384_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA384 valueh]h((output) the resulting HMAC-SHA384 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(hIf you're using the key multiple times, prefer to use hmac_sha384_preparekey() followed by multiple calls to hmac_sha384() instead.h]hIf you’re using the key multiple times, prefer to use hmac_sha384_preparekey() followed by multiple calls to hmac_sha384() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_ctx (C struct) c.sha512_ctxhNtauh1hhjohhhNhNubj)}(hhh](j)}(h sha512_ctxh]j)}(hstruct sha512_ctxh](j!)}(hj$h]hstruct}(hjXhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjThhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjThhhjehMubjD)}(h sha512_ctxh]jJ)}(hjRh]h sha512_ctx}(hjxhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjtubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjThhhjehMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjPhhhjehMubah}(h]jKah ](jmjneh"]h$]h&]jrjs)jthuh1jhjehMhjMhhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-512h]h*Context for hashing a message with SHA-512}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjMhhhjehMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hk**Definition**:: struct sha512_ctx { struct __sha512_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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(h3struct sha512_ctx { struct __sha512_ctx ctx; };h]h3struct sha512_ctx { struct __sha512_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjh]hctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hprivateh]hprivate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_init (C function) c.sha512_inithNtauh1hhjohhhNhNubj)}(hhh](j)}(h)void sha512_init (struct sha512_ctx *ctx)h]j)}(h(void sha512_init(struct sha512_ctx *ctx)h](j!)}(hvoidh]hvoid}(hjahhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj]hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]hhhjohMubjD)}(h sha512_inith]jJ)}(h sha512_inith]h sha512_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj~ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj]hhhjohMubjY)}(h(struct sha512_ctx *ctx)h]j_)}(hstruct sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha512_ctxh]h sha512_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.sha512_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubah}(h]h ]h"]h$]h&]hhuh1jXhj]hhhjohMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjYhhhjohMubah}(h]jTah ](jmjneh"]h$]h&]jrjs)jthuh1jhjohMhjVhhubjv)}(hhh]h)}(h.Initialize a SHA-512 context for a new messageh]h.Initialize a SHA-512 context for a new message}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjVhhhjohMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1jhhhjohNhNubj)}(h**Parameters** ``struct sha512_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider sha512() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj=ubj)}(hhh]j)}(h5``struct sha512_ctx *ctx`` the context to initialize h](j)}(h``struct sha512_ctx *ctx``h]j)}(hjbh]hstruct sha512_ctx *ctx}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj\ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhMhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj=ubh)}(hEIf you don't need incremental computation, consider sha512() instead.h]hGIf you don’t need incremental computation, consider sha512() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj=ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj=ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_update (C function)c.sha512_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hGvoid sha512_update (struct sha512_ctx *ctx, const u8 *data, size_t len)h]j)}(hFvoid sha512_update(struct sha512_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h sha512_updateh]jJ)}(h sha512_updateh]h sha512_update}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(h4(struct sha512_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hjFhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjBubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubh)}(hhh]jJ)}(h sha512_ctxh]h sha512_ctx}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]j)}jj,sbc.sha512_updateasbuh1hhjBubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.sha512_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]jc.sha512_updateasbuh1hhj$ubj3)}(h h]h }(hjIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubjJ)}(hlenh]hlen}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h*Update a SHA-512 context with message datah]h*Update a SHA-512 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj~hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct sha512_ctx *ctx`` the context to update; must have been initialized ``const u8 *data`` the message data ``size_t len`` the data length in bytes **Description** This can be called any number of times. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(hM``struct sha512_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha512_ctx *ctx``h]j)}(hjh]hstruct sha512_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjh]hconst u8 *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj4h]h size_t len}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj.ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_final (C function)c.sha512_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hMvoid sha512_final (struct sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h]j)}(hLvoid sha512_final(struct sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h sha512_finalh]jJ)}(h sha512_finalh]h sha512_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubjY)}(h;(struct sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j_)}(hstruct sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha512_ctxh]h sha512_ctx}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]j)}jjsbc.sha512_finalasbuh1hhjubj3)}(h h]h }(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjJ)}(hctxh]hctx}(hjqhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubj_)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jRc.sha512_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj)}(hjh]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hjh]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jRc.sha512_finalasbuh1hhjubj)}(hj[h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjubeh}(h]h ]h"]h$]h&]hhuh1jXhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h)Finish computing a SHA-512 message digesth]h)Finish computing a SHA-512 message digest}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj6hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1jhhhjohNhNubj)}(hX3**Parameters** ``struct sha512_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting SHA-512 message digest **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&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjUubj)}(hhh](j)}(hO``struct sha512_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha512_ctx *ctx``h]j)}(hjzh]hstruct sha512_ctx *ctx}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjtubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhMhjqubj)}(hT``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting SHA-512 message digest h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[static SHA512_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h-(output) the resulting SHA-512 message digesth]h-(output) the resulting SHA-512 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjqubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjUubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj hhhNhNubj)}(h**ctx**h]hctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh(. So the caller does not need to do it.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhjUubh)}(h **Context**h]j)}(hj' h]hContext}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjUubh)}(h Any context.h]h Any context.}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM hjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512 (C function)c.sha512hNtauh1hhjohhhNhNubj)}(hhh](j)}(hKvoid sha512 (const u8 *data, size_t len, u8 out[static SHA512_DIGEST_SIZE])h]j)}(hJvoid sha512(const u8 *data, size_t len, u8 out[static SHA512_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjl hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjh hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj{ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjh hhhjz hMubjD)}(hsha512h]jJ)}(hsha512h]hsha512}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjh hhhjz hMubjY)}(h?(const u8 *data, size_t len, u8 out[static SHA512_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.sha512asbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjJ)}(hdatah]hdata}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj ubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj !modnameN classnameNjj)}j]j c.sha512asbuh1hhj!ubj3)}(h h]h }(hjhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha512_init_usingrawkey (C function)c.hmac_sha512_init_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hfvoid hmac_sha512_init_usingrawkey (struct hmac_sha512_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h]j)}(hevoid hmac_sha512_init_usingrawkey(struct hmac_sha512_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j!)}(hvoidh]hvoid}(hj*hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMGubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*hhhj*hMGubjD)}(hhmac_sha512_init_usingrawkeyh]jJ)}(hhmac_sha512_init_usingrawkeyh]hhmac_sha512_init_usingrawkey}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj*hhhj*hMGubjY)}(hD(struct hmac_sha512_ctx *ctx, const u8 *raw_key, size_t raw_key_len)h](j_)}(hstruct hmac_sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hj*hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj*ubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubh)}(hhh]jJ)}(hhmac_sha512_ctxh]hhmac_sha512_ctx}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jj*sbc.hmac_sha512_init_usingrawkeyasbuh1hhj*ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjJ)}(hctxh]hctx}(hj++hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubj_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjD+hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj@+ubj3)}(h h]h }(hjQ+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@+ubh)}(hhh]jJ)}(hu8h]hu8}(hjb+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjd+modnameN classnameNjj)}j]j +c.hmac_sha512_init_usingrawkeyasbuh1hhj@+ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@+ubjJ)}(hraw_keyh]hraw_key}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j +c.hmac_sha512_init_usingrawkeyasbuh1hhj+ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubjJ)}(h raw_key_lenh]h raw_key_len}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj*ubeh}(h]h ]h"]h$]h&]hhuh1jXhj*hhhj*hMGubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj*hhhj*hMGubah}(h]j*ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj*hMGhj*hhubjv)}(hhh]h)}(hDInitialize an HMAC-SHA512 context for a new message, using a raw keyh]hDInitialize an HMAC-SHA512 context for a new message, using a raw key}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMGhj ,hhubah}(h]h ]h"]h$]h&]uh1juhj*hhhj*hMGubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%,jj%,jjjuh1jhhhjohNhNubj)}(hXa**Parameters** ``struct hmac_sha512_ctx *ctx`` (output) the HMAC context to initialize ``const u8 *raw_key`` the raw HMAC-SHA512 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. **Description** If you don't need incremental computation, consider hmac_sha512_usingrawkey() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj/,h]h Parameters}(hj1,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-,ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMKhj),ubj)}(hhh](j)}(hH``struct hmac_sha512_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha512_ctx *ctx``h]j)}(hjN,h]hstruct hmac_sha512_ctx *ctx}(hjP,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL,ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMIhjH,ubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjg,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc,hMIhjd,ubah}(h]h ]h"]h$]h&]uh1jhjH,ubeh}(h]h ]h"]h$]h&]uh1jhjc,hMIhjE,ubj)}(h.``const u8 *raw_key`` the raw HMAC-SHA512 key h](j)}(h``const u8 *raw_key``h]j)}(hj,h]hconst u8 *raw_key}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMJhj,ubj)}(hhh]h)}(hthe raw HMAC-SHA512 keyh]hthe raw HMAC-SHA512 key}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMJhj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hMJhjE,ubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hj,h]hsize_t raw_key_len}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMKhj,ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMKhj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hMKhjE,ubeh}(h]h ]h"]h$]h&]uh1jhj),ubh)}(h**Description**h]j)}(hj,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMMhj),ubh)}(hVIf you don't need incremental computation, consider hmac_sha512_usingrawkey() instead.h]hXIf you don’t need incremental computation, consider hmac_sha512_usingrawkey() instead.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMLhj),ubh)}(h **Context**h]j)}(hj"-h]hContext}(hj$-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj -ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMOhj),ubh)}(h Any context.h]h Any context.}(hj8-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMPhj),ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_update (C function)c.hmac_sha512_updatehNtauh1hhjohhhNhNubj)}(hhh](j)}(hVvoid hmac_sha512_update (struct hmac_sha512_ctx *ctx, const u8 *data, size_t data_len)h]j)}(hUvoid hmac_sha512_update(struct hmac_sha512_ctx *ctx, const u8 *data, size_t data_len)h](j!)}(hvoidh]hvoid}(hjg-hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjc-hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMVubj3)}(h h]h }(hjv-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjc-hhhju-hMVubjD)}(hhmac_sha512_updateh]jJ)}(hhmac_sha512_updateh]hhmac_sha512_update}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjc-hhhju-hMVubjY)}(h>(struct hmac_sha512_ctx *ctx, const u8 *data, size_t data_len)h](j_)}(hstruct hmac_sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hj-hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj-ubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubh)}(hhh]jJ)}(hhmac_sha512_ctxh]hhmac_sha512_ctx}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j)}jj-sbc.hmac_sha512_updateasbuh1hhj-ubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjJ)}(hctxh]hctx}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj.ubj3)}(h h]h }(hj#.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubh)}(hhh]jJ)}(hu8h]hu8}(hj4.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6.modnameN classnameNjj)}j]j-c.hmac_sha512_updateasbuh1hhj.ubj3)}(h h]h }(hjR.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubj)}(hjh]h*}(hj`.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubjJ)}(hdatah]hdata}(hjm.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j-c.hmac_sha512_updateasbuh1hhj.ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubjJ)}(hdata_lenh]hdata_len}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj-ubeh}(h]h ]h"]h$]h&]hhuh1jXhjc-hhhju-hMVubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj_-hhhju-hMVubah}(h]jZ-ah ](jmjneh"]h$]h&]jrjs)jthuh1jhju-hMVhj\-hhubjv)}(hhh]h)}(h/Update an HMAC-SHA512 context with message datah]h/Update an HMAC-SHA512 context with message data}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMVhj.hhubah}(h]h ]h"]h$]h&]uh1juhj\-hhhju-hMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.jj.jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``struct hmac_sha512_ctx *ctx`` the HMAC context to update; must have been initialized ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes **Description** This can be called any number of times. **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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMZhj.ubj)}(hhh](j)}(hW``struct hmac_sha512_ctx *ctx`` the HMAC context to update; must have been initialized h](j)}(h``struct hmac_sha512_ctx *ctx``h]j)}(hj /h]hstruct hmac_sha512_ctx *ctx}(hj"/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMWhj/ubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hj9/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5/hMWhj6/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj5/hMWhj/ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjY/h]hconst u8 *data}(hj[/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW/ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMXhjS/ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjr/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjn/hMXhjo/ubah}(h]h ]h"]h$]h&]uh1jhjS/ubeh}(h]h ]h"]h$]h&]uh1jhjn/hMXhj/ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj/h]hsize_t data_len}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMYhj/ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMYhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMYhj/ubeh}(h]h ]h"]h$]h&]uh1jhj.ubh)}(h**Description**h]j)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM[hj.ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMZhj.ubh)}(h **Context**h]j)}(hj/h]hContext}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM\hj.ubh)}(h Any context.h]h Any context.}(hj 0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhM]hj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_final (C function)c.hmac_sha512_finalhNtauh1hhjohhhNhNubj)}(hhh](j)}(hWvoid hmac_sha512_final (struct hmac_sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h]j)}(hVvoid hmac_sha512_final(struct hmac_sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj90hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj50hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMfubj3)}(h h]h }(hjH0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj50hhhjG0hMfubjD)}(hhmac_sha512_finalh]jJ)}(hhmac_sha512_finalh]hhmac_sha512_final}(hjZ0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjV0ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj50hhhjG0hMfubjY)}(h@(struct hmac_sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j_)}(hstruct hmac_sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hjv0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjr0ubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjr0ubh)}(hhh]jJ)}(hhmac_sha512_ctxh]hhmac_sha512_ctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jj\0sbc.hmac_sha512_finalasbuh1hhjr0ubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjr0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjr0ubjJ)}(hctxh]hctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjr0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjn0ubj_)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j0c.hmac_sha512_finalasbuh1hhj0ubj3)}(h h]h }(hj 1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubjJ)}(houth]hout}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubj)}(hjh]h[}(hj%1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj!)}(hjh]hstatic}(hj21hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0ubj3)}(h h]h }(hj?1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hjP1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjM1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjR1modnameN classnameNjj)}j]j0c.hmac_sha512_finalasbuh1hhj0ubj)}(hj[h]h]}(hjn1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjn0ubeh}(h]h ]h"]h$]h&]hhuh1jXhj50hhhjG0hMfubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj10hhhjG0hMfubah}(h]j,0ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjG0hMfhj.0hhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA512 valueh]h%Finish computing an HMAC-SHA512 value}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMfhj1hhubah}(h]h ]h"]h$]h&]uh1juhj.0hhhjG0hMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1jhhhjohNhNubj)}(hX8**Parameters** ``struct hmac_sha512_ctx *ctx`` the HMAC context to finalize; must have been initialized ``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMjhj1ubj)}(hhh](j)}(hY``struct hmac_sha512_ctx *ctx`` the HMAC context to finalize; must have been initialized h](j)}(h``struct hmac_sha512_ctx *ctx``h]j)}(hj1h]hstruct hmac_sha512_ctx *ctx}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMghj1ubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMghj1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1hMghj1ubj)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hj2h]h!u8 out[static SHA512_DIGEST_SIZE]}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhhj 2ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hj*2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&2hMhhj'2ubah}(h]h ]h"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]uh1jhj&2hMhhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Description**h]j)}(hjL2h]h Description}(hjN2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ2ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMjhj1ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjb2hhhNhNubj)}(h**ctx**h]hctx}(hjj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb2ubh(. So the caller does not need to do it.}(hjb2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMihj1ubh)}(h **Context**h]j)}(hj2h]hContext}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMkhj1ubh)}(h Any context.h]h Any context.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMlhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512 (C function) c.hmac_sha512hNtauh1hhjohhhNhNubj)}(hhh](j)}(hxvoid hmac_sha512 (const struct hmac_sha512_key *key, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h]j)}(hwvoid hmac_sha512(const struct hmac_sha512_key *key, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj2hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMrubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2hhhj2hMrubjD)}(h hmac_sha512h]jJ)}(h hmac_sha512h]h hmac_sha512}(hj2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj2ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj2hhhj2hMrubjY)}(hg(const struct hmac_sha512_key *key, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h](j_)}(h!const struct hmac_sha512_key *keyh](j!)}(hjh]hconst}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj!)}(hj$h]hstruct}(hj"3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj/3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hhmac_sha512_keyh]hhmac_sha512_key}(hj@3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB3modnameN classnameNjj)}j]j)}jj2sb c.hmac_sha512asbuh1hhj3ubj3)}(h h]h }(hj`3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj)}(hjh]h*}(hjn3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjJ)}(hkeyh]hkey}(hj{3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hu8h]hu8}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j\3 c.hmac_sha512asbuh1hhj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjJ)}(hdatah]hdata}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj 4modnameN classnameNjj)}j]j\3 c.hmac_sha512asbuh1hhj4ubj3)}(h h]h }(hj%4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubjJ)}(hdata_lenh]hdata_len}(hj34hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubj_)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjO4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjL4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQ4modnameN classnameNjj)}j]j\3 c.hmac_sha512asbuh1hhjH4ubj3)}(h h]h }(hjm4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjH4ubjJ)}(houth]hout}(hj{4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjH4ubj)}(hjh]h[}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH4ubj!)}(hjh]hstatic}(hj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjH4ubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjH4ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4modnameN classnameNjj)}j]j\3 c.hmac_sha512asbuh1hhjH4ubj)}(hj[h]h]}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj2ubeh}(h]h ]h"]h$]h&]hhuh1jXhj2hhhj2hMrubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj2hhhj2hMrubah}(h]j2ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj2hMrhj2hhubjv)}(hhh]h)}(h5Compute HMAC-SHA512 in one shot, using a prepared keyh]h5Compute HMAC-SHA512 in one shot, using a prepared key}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMrhj4hhubah}(h]h ]h"]h$]h&]uh1juhj2hhhj2hMrubeh}(h]h ](jfunctioneh"]h$]h&]jjjj5jj5jjjuh1jhhhjohNhNubj)}(hXp**Parameters** ``const struct hmac_sha512_key *key`` the prepared HMAC key ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value **Description** If you're using the key only once, consider using hmac_sha512_usingrawkey(). **Context** Any context.h](h)}(h**Parameters**h]j)}(hj5h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMvhj5ubj)}(hhh](j)}(h<``const struct hmac_sha512_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha512_key *key``h]j)}(hj<5h]h!const struct hmac_sha512_key *key}(hj>5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMshj65ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjU5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ5hMshjR5ubah}(h]h ]h"]h$]h&]uh1jhj65ubeh}(h]h ]h"]h$]h&]uh1jhjQ5hMshj35ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hju5h]hconst u8 *data}(hjw5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMthjo5ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMthj5ubah}(h]h ]h"]h$]h&]uh1jhjo5ubeh}(h]h ]h"]h$]h&]uh1jhj5hMthj35ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj5h]hsize_t data_len}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMuhj5ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMuhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hMuhj35ubj)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hj5h]h!u8 out[static SHA512_DIGEST_SIZE]}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMvhj5ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMvhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hMvhj35ubeh}(h]h ]h"]h$]h&]uh1jhj5ubh)}(h**Description**h]j)}(hj"6h]h Description}(hj$6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 6ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMxhj5ubh)}(hLIf you're using the key only once, consider using hmac_sha512_usingrawkey().h]hNIf you’re using the key only once, consider using hmac_sha512_usingrawkey().}(hj86hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMwhj5ubh)}(h **Context**h]j)}(hjI6h]hContext}(hjK6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG6ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMyhj5ubh)}(h Any context.h]h Any context.}(hj_6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMzhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha512_usingrawkey (C function)c.hmac_sha512_usingrawkeyhNtauh1hhjohhhNhNubj)}(hhh](j)}(hvoid hmac_sha512_usingrawkey (const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h]j)}(hvoid hmac_sha512_usingrawkey(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj6hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6hhhj6hMubjD)}(hhmac_sha512_usingrawkeyh]jJ)}(hhmac_sha512_usingrawkeyh]hhmac_sha512_usingrawkey}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj6hhhj6hMubjY)}(hk(const u8 *raw_key, size_t raw_key_len, const u8 *data, size_t data_len, u8 out[static SHA512_DIGEST_SIZE])h](j_)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj6ubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubh)}(hhh]jJ)}(hu8h]hu8}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j)}jj6sbc.hmac_sha512_usingrawkeyasbuh1hhj6ubj3)}(h h]h }(hj 7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubjJ)}(hraw_keyh]hraw_key}(hj$7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubj_)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj@7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB7modnameN classnameNjj)}j]j7c.hmac_sha512_usingrawkeyasbuh1hhj97ubj3)}(h h]h }(hj^7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj97ubjJ)}(h raw_key_lenh]h raw_key_len}(hjl7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj97ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj7ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubh)}(hhh]jJ)}(hu8h]hu8}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]j7c.hmac_sha512_usingrawkeyasbuh1hhj7ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjJ)}(hdatah]hdata}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubj_)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]j7c.hmac_sha512_usingrawkeyasbuh1hhj7ubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubjJ)}(hdata_lenh]hdata_len}(hj$8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubj_)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj@8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB8modnameN classnameNjj)}j]j7c.hmac_sha512_usingrawkeyasbuh1hhj98ubj3)}(h h]h }(hj^8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj98ubjJ)}(houth]hout}(hjl8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj98ubj)}(hjh]h[}(hjz8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj98ubj!)}(hjh]hstatic}(hj8hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj98ubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj98ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]j7c.hmac_sha512_usingrawkeyasbuh1hhj98ubj)}(hj[h]h]}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj98ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj6ubeh}(h]h ]h"]h$]h&]hhuh1jXhj6hhhj6hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj6hhhj6hMubah}(h]j6ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj6hMhj6hhubjv)}(hhh]h)}(h0Compute HMAC-SHA512 in one shot, using a raw keyh]h0Compute HMAC-SHA512 in one shot, using a raw key}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj8hhubah}(h]h ]h"]h$]h&]uh1juhj6hhhj6hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1jhhhjohNhNubj)}(hX**Parameters** ``const u8 *raw_key`` the raw HMAC-SHA512 key ``size_t raw_key_len`` the key length in bytes. All key lengths are supported. ``const u8 *data`` the message data ``size_t data_len`` the data length in bytes ``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value **Description** If you're using the key multiple times, prefer to use hmac_sha512_preparekey() followed by multiple calls to hmac_sha512() instead. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 9ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubj)}(hhh](j)}(h.``const u8 *raw_key`` the raw HMAC-SHA512 key h](j)}(h``const u8 *raw_key``h]j)}(hj-9h]hconst u8 *raw_key}(hj/9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj'9ubj)}(hhh]h)}(hthe raw HMAC-SHA512 keyh]hthe raw HMAC-SHA512 key}(hjF9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB9hMhjC9ubah}(h]h ]h"]h$]h&]uh1jhj'9ubeh}(h]h ]h"]h$]h&]uh1jhjB9hMhj$9ubj)}(hP``size_t raw_key_len`` the key length in bytes. All key lengths are supported. h](j)}(h``size_t raw_key_len``h]j)}(hjf9h]hsize_t raw_key_len}(hjh9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj`9ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{9hMhj|9ubah}(h]h ]h"]h$]h&]uh1jhj`9ubeh}(h]h ]h"]h$]h&]uh1jhj{9hMhj$9ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj9h]hconst u8 *data}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj$9ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj9h]hsize_t data_len}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj$9ubj)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hj:h]h!u8 out[static SHA512_DIGEST_SIZE]}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj :ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hj*:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&:hMhj':ubah}(h]h ]h"]h$]h&]uh1jhj :ubeh}(h]h ]h"]h$]h&]uh1jhj&:hMhj$9ubeh}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h**Description**h]j)}(hjL:h]h Description}(hjN:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ:ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubh)}(hIf you're using the key multiple times, prefer to use hmac_sha512_preparekey() followed by multiple calls to hmac_sha512() instead.h]hIf you’re using the key multiple times, prefer to use hmac_sha512_preparekey() followed by multiple calls to hmac_sha512() instead.}(hjb:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubh)}(h **Context**h]j)}(hjs:h]hContext}(hju:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq:ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubh)}(h Any context.h]h Any context.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:74: ./include/crypto/sha2.hhMhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubeh}(h]sha-2ah ]h"]sha-2ah$]h&]uh1hhhhhhhhKDubh)}(hhh](h)}(hSHA-3h]hSHA-3}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhKMubh)}(h2The SHA-3 functions are documented in :ref:`sha3`.h](h&The SHA-3 functions are documented in }(hj:hhhNhNubh)}(h :ref:`sha3`h]hinline)}(hj:h]hsha3}(hj:hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j:hj:ubah}(h]h ]h"]h$]h&]refdoccrypto/libcrypto-hash refdomainj:reftyperef refexplicitrefwarn reftargetsha3uh1hhhhKOhj:ubh.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKOhj:hhubeh}(h]sha-3ah ]h"]sha-3ah$]h&]uh1hhhhhhhhKMubh)}(hhh](h)}(hSM3h]hSM3}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhKRubh)}(h0Support for the SM3 cryptographic hash function.h]h0Support for the SM3 cryptographic hash function.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThj:hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sm3_ctx (C struct) c.sm3_ctxhNtauh1hhj:hhhNhNubj)}(hhh](j)}(hsm3_ctxh]j)}(hstruct sm3_ctxh](j!)}(hj$h]hstruct}(hj/;hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj+;hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKubj3)}(h h]h }(hj=;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+;hhhj<;hKubjD)}(hsm3_ctxh]jJ)}(hj);h]hsm3_ctx}(hjO;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjK;ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj+;hhhj<;hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj';hhhj<;hKubah}(h]j";ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj<;hKhj$;hhubjv)}(hhh]h)}(h&Context for hashing a message with SM3h]h&Context for hashing a message with SM3}(hjq;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK!hjn;hhubah}(h]h ]h"]h$]h&]uh1juhj$;hhhj<;hKubeh}(h]h ](jstructeh"]h$]h&]jjjj;jj;jjjuh1jhhhj:hNhNubj)}(hX7**Definition**:: struct sm3_ctx { struct sm3_block_state state; u64 bytecount; u8 buf[SM3_BLOCK_SIZE]; }; **Members** ``state`` the compression function state ``bytecount`` number of bytes processed so far ``buf`` partial block buffer; bytecount % SM3_BLOCK_SIZE bytes are validh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh:}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK%hj;ubj)}(hdstruct sm3_ctx { struct sm3_block_state state; u64 bytecount; u8 buf[SM3_BLOCK_SIZE]; };h]hdstruct sm3_ctx { struct sm3_block_state state; u64 bytecount; u8 buf[SM3_BLOCK_SIZE]; };}hj;sbah}(h]h ]h"]h$]h&]hhuh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK'hj;ubh)}(h **Members**h]j)}(hj;h]hMembers}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK-hj;ubj)}(hhh](j)}(h)``state`` the compression function state h](j)}(h ``state``h]j)}(hj;h]hstate}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK#hj;ubj)}(hhh]h)}(hthe compression function stateh]hthe compression function state}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK#hj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hK#hj;ubj)}(h/``bytecount`` number of bytes processed so far h](j)}(h ``bytecount``h]j)}(hj<h]h bytecount}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK$h^}j<ubj)}(hhh]h)}(h number of bytes processed so farh]h number of bytes processed so far}(hj0<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,<hK$hj-<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj,<hK$hj;ubj)}(hH``buf`` partial block buffer; bytecount % SM3_BLOCK_SIZE bytes are validh](j)}(h``buf``h]j)}(hjP<h]hbuf}(hjR<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN<ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK$hjJ<ubj)}(hhh]h)}(h@partial block buffer; bytecount % SM3_BLOCK_SIZE bytes are validh]h@partial block buffer; bytecount % SM3_BLOCK_SIZE bytes are valid}(hji<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK%hjf<ubah}(h]h ]h"]h$]h&]uh1jhjJ<ubeh}(h]h ]h"]h$]h&]uh1jhje<hK$hj;ubeh}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sm3_init (C function) c.sm3_inithNtauh1hhj:hhhNhNubj)}(hhh](j)}(h#void sm3_init (struct sm3_ctx *ctx)h]j)}(h"void sm3_init(struct sm3_ctx *ctx)h](j!)}(hvoidh]hvoid}(hj<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj<hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK-ubj3)}(h h]h }(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<hhhj<hK-ubjD)}(hsm3_inith]jJ)}(hsm3_inith]hsm3_init}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj<hhhj<hK-ubjY)}(h(struct sm3_ctx *ctx)h]j_)}(hstruct sm3_ctx *ctxh](j!)}(hj$h]hstruct}(hj<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj<ubj3)}(h h]h }(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubh)}(hhh]jJ)}(hsm3_ctxh]hsm3_ctx}(hj=hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jj<sb c.sm3_initasbuh1hhj<ubj3)}(h h]h }(hj%=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubj)}(hjh]h*}(hj3=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjJ)}(hctxh]hctx}(hj@=hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj<ubah}(h]h ]h"]h$]h&]hhuh1jXhj<hhhj<hK-ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj<hhhj<hK-ubah}(h]j<ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj<hK-hj<hhubjv)}(hhh]h)}(h+Initialize an SM3 context for a new messageh]h+Initialize an SM3 context for a new message}(hjj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK-hjg=hhubah}(h]h ]h"]h$]h&]uh1juhj<hhhj<hK-ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=jj=jjjuh1jhhhj:hNhNubj)}(h**Parameters** ``struct sm3_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider sm3() instead. **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&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK1hj=ubj)}(hhh]j)}(h2``struct sm3_ctx *ctx`` the context to initialize h](j)}(h``struct sm3_ctx *ctx``h]j)}(hj=h]hstruct sm3_ctx *ctx}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK.hj=ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hK.hj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hK.hj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubh)}(h**Description**h]j)}(hj=h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK0hj=ubh)}(hBIf you don't need incremental computation, consider sm3() instead.h]hDIf you don’t need incremental computation, consider sm3() instead.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK/hj=ubh)}(h **Context**h]j)}(hj >h]hContext}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj >ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK1hj=ubh)}(h Any context.h]h Any context.}(hj#>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK2hj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sm3_update (C function) c.sm3_updatehNtauh1hhj:hhhNhNubj)}(hhh](j)}(hAvoid sm3_update (struct sm3_ctx *ctx, const u8 *data, size_t len)h]j)}(h@void sm3_update(struct sm3_ctx *ctx, const u8 *data, size_t len)h](j!)}(hvoidh]hvoid}(hjR>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjN>hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK7ubj3)}(h h]h }(hja>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjN>hhhj`>hK7ubjD)}(h sm3_updateh]jJ)}(h sm3_updateh]h sm3_update}(hjs>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjo>ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjN>hhhj`>hK7ubjY)}(h1(struct sm3_ctx *ctx, const u8 *data, size_t len)h](j_)}(hstruct sm3_ctx *ctxh](j!)}(hj$h]hstruct}(hj>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj>ubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubh)}(hhh]jJ)}(hsm3_ctxh]hsm3_ctx}(hj>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]j)}jju>sb c.sm3_updateasbuh1hhj>ubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjJ)}(hctxh]hctx}(hj>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubj_)}(hconst u8 *datah](j!)}(hjh]hconst}(hj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj>ubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubh)}(hhh]jJ)}(hu8h]hu8}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!?modnameN classnameNjj)}j]j> c.sm3_updateasbuh1hhj>ubj3)}(h h]h }(hj=?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubj)}(hjh]h*}(hjK?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjJ)}(hdatah]hdata}(hjX?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjt?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjq?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjv?modnameN classnameNjj)}j]j> c.sm3_updateasbuh1hhjm?ubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjm?ubjJ)}(hlenh]hlen}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjm?ubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hj>ubeh}(h]h ]h"]h$]h&]hhuh1jXhjN>hhhj`>hK7ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjJ>hhhj`>hK7ubah}(h]jE>ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj`>hK7hjG>hhubjv)}(hhh]h)}(h'Update an SM3 context with message datah]h'Update an SM3 context with message data}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK7hj?hhubah}(h]h ]h"]h$]h&]uh1juhjG>hhhj`>hK7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj?jj?jjjuh1jhhhj:hNhNubj)}(hX**Parameters** ``struct sm3_ctx *ctx`` the context to update; must have been initialized ``const u8 *data`` the message data ``size_t len`` the data length in bytes **Description** This can be called any number of times. **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&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK;hj?ubj)}(hhh](j)}(hJ``struct sm3_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sm3_ctx *ctx``h]j)}(hj @h]hstruct sm3_ctx *ctx}(hj @hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj @ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK8hj@ubj)}(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 @hK8hj!@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj @hK8hj@ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjD@h]hconst u8 *data}(hjF@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB@ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK9hj>@ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj]@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY@hK9hjZ@ubah}(h]h ]h"]h$]h&]uh1jhj>@ubeh}(h]h ]h"]h$]h&]uh1jhjY@hK9hj@ubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj}@h]h size_t len}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{@ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhK:hjw@ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hK:hj@ubah}(h]h ]h"]h$]h&]uh1jhjw@ubeh}(h]h ]h"]h$]h&]uh1jhj@hK:hj@ubeh}(h]h ]h"]h$]h&]uh1jhj?ubh)}(h**Description**h]j)}(hj@h]h Description}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sm3_final (C function) c.sm3_finalhNtauh1hhj:hhhNhNubj)}(hhh](j)}(hDvoid sm3_final (struct sm3_ctx *ctx, u8 out[static SM3_DIGEST_SIZE])h]j)}(hCvoid sm3_final(struct sm3_ctx *ctx, u8 out[static SM3_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hj$AhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj AhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKCubj3)}(h h]h }(hj3AhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj Ahhhj2AhKCubjD)}(h sm3_finalh]jJ)}(h sm3_finalh]h sm3_final}(hjEAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAAubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj Ahhhj2AhKCubjY)}(h5(struct sm3_ctx *ctx, u8 out[static SM3_DIGEST_SIZE])h](j_)}(hstruct sm3_ctx *ctxh](j!)}(hj$h]hstruct}(hjaAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj]Aubj3)}(h h]h }(hjnAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]Aubh)}(hhh]jJ)}(hsm3_ctxh]hsm3_ctx}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|Aubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jjGAsb c.sm3_finalasbuh1hhj]Aubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]Aubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]AubjJ)}(hctxh]hctx}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]Aubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjYAubj_)}(hu8 out[static SM3_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]jA c.sm3_finalasbuh1hhjAubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubjJ)}(houth]hout}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubj)}(hjh]h[}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj!)}(hjh]hstatic}(hjBhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjAubj3)}(h h]h }(hj*BhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubh)}(hhh]jJ)}(hSM3_DIGEST_SIZEh]hSM3_DIGEST_SIZE}(hj;BhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8Bubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=BmodnameN classnameNjj)}j]jA c.sm3_finalasbuh1hhjAubj)}(hj[h]h]}(hjYBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjYAubeh}(h]h ]h"]h$]h&]hhuh1jXhj Ahhhj2AhKCubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjAhhhj2AhKCubah}(h]jAah ](jmjneh"]h$]h&]jrjs)jthuh1jhj2AhKChjAhhubjv)}(hhh]h)}(h&Finish computing an SM3 message digesth]h&Finish computing an SM3 message digest}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKChjBhhubah}(h]h ]h"]h$]h&]uh1juhjAhhhj2AhKCubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1jhhhj:hNhNubj)}(hX)**Parameters** ``struct sm3_ctx *ctx`` the context to finalize; must have been initialized ``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest **Description** After finishing, this zeroizes **ctx**. So the caller does not need to do it. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKGhjBubj)}(hhh](j)}(hL``struct sm3_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sm3_ctx *ctx``h]j)}(hjBh]hstruct sm3_ctx *ctx}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKDhjBubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKDhjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhjBhKDhjBubj)}(hM``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest h](j)}(h"``u8 out[static SM3_DIGEST_SIZE]``h]j)}(hjBh]hu8 out[static SM3_DIGEST_SIZE]}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKEhjBubj)}(hhh]h)}(h)(output) the resulting SM3 message digesth]h)(output) the resulting SM3 message digest}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKEhjCubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhjChKEhjBubeh}(h]h ]h"]h$]h&]uh1jhjBubh)}(h**Description**h]j)}(hj7Ch]h Description}(hj9ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Cubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKGhjBubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjMChhhNhNubj)}(h**ctx**h]hctx}(hjUChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMCubh(. So the caller does not need to do it.}(hjMChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKFhjBubh)}(h **Context**h]j)}(hjpCh]hContext}(hjrChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnCubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKHhjBubh)}(h Any context.h]h Any context.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKIhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sm3 (C function)c.sm3hNtauh1hhj:hhhNhNubj)}(hhh](j)}(hEvoid sm3 (const u8 *data, size_t len, u8 out[static SM3_DIGEST_SIZE])h]j)}(hDvoid sm3(const u8 *data, size_t len, u8 out[static SM3_DIGEST_SIZE])h](j!)}(hvoidh]hvoid}(hjChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjChhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKNubj3)}(h h]h }(hjChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjChhhjChKNubjD)}(hsm3h]jJ)}(hsm3h]hsm3}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjChhhjChKNubjY)}(h<(const u8 *data, size_t len, u8 out[static SM3_DIGEST_SIZE])h](j_)}(hconst u8 *datah](j!)}(hjh]hconst}(hjChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjCubj3)}(h h]h }(hjChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubh)}(hhh]jJ)}(hu8h]hu8}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Dubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jjCsbc.sm3asbuh1hhjCubj3)}(h h]h }(hj0DhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubj)}(hjh]h*}(hj>DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjJ)}(hdatah]hdata}(hjKDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjCubj_)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjgDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjiDmodnameN classnameNjj)}j]j,Dc.sm3asbuh1hhj`Dubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`DubjJ)}(hlenh]hlen}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`Dubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjCubj_)}(hu8 out[static SM3_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j,Dc.sm3asbuh1hhjDubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubjJ)}(houth]hout}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubj)}(hjh]h[}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj!)}(hjh]hstatic}(hjDhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjDubj3)}(h h]h }(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubh)}(hhh]jJ)}(hSM3_DIGEST_SIZEh]hSM3_DIGEST_SIZE}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j,Dc.sm3asbuh1hhjDubj)}(hj[h]h]}(hj2EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1j^hjCubeh}(h]h ]h"]h$]h&]hhuh1jXhjChhhjChKNubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjChhhjChKNubah}(h]jCah ](jmjneh"]h$]h&]jrjs)jthuh1jhjChKNhjChhubjv)}(hhh]h)}(h&Compute SM3 message digest in one shoth]h&Compute SM3 message digest in one shot}(hj[EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKNhjXEhhubah}(h]h ]h"]h$]h&]uh1juhjChhhjChKNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjsEjjsEjjjuh1jhhhj:hNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hj}Eh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{Eubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKRhjwEubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjEh]hconst u8 *data}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKOhjEubj)}(hhh]h)}(hthe message datah]hthe message data}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKOhjEubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjEhKOhjEubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjEh]h size_t len}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKPhjEubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKPhjEubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjEhKPhjEubj)}(hM``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest h](j)}(h"``u8 out[static SM3_DIGEST_SIZE]``h]j)}(hjFh]hu8 out[static SM3_DIGEST_SIZE]}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Fubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKQhjFubj)}(hhh]h)}(h)(output) the resulting SM3 message digesth]h)(output) the resulting SM3 message digest}(hj'FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#FhKQhj$Fubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhj#FhKQhjEubeh}(h]h ]h"]h$]h&]uh1jhjwEubh)}(h **Context**h]j)}(hjIFh]hContext}(hjKFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGFubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKShjwEubh)}(h Any context.h]h Any context.}(hj_FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:86: ./include/crypto/sm3.hhKShjwEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubeh}(h]sm3ah ]h"]sm3ah$]h&]uh1hhhhhhhhKRubeh}(h]hash-functions-macs-and-xofsah ]h"]hash functions, macs, and xofsah$]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_handlerjFerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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}refids}nameids}(jFjFj j j%j%j6j6j_j_jjjچj׆jjjljij:j:j:j:jzFjwFu nametypes}(jFj j%j6j_jjچjjlj:j:jzFuh}(jFhj hj jjjjjjjj j j j jjjPjUj%jj;j@jojtjqjvjjj\jaj!j!j6j%j(&j-&j\(ja(j^*jc*jw-j|-jI0jN0j2j2j_j6j7j7jM9jR9j:j:jg<jl<j=j=j`?je?jAjAj^DjcDj|FjFjHjHjKjKjMjMjPjPjSjSjVjVjXjXj\j\jj_j_j_j=ajBajbjbjejejHhjMhj!kj&kjcljhljmjmjwpj|pjrjrjujujxjxj{j{j~j~j׆jj-j2jj݆jijj/j4jjjRjWj$j)jjjjjГjՓjjjjjPjUj"j'jjjjjIjNj:jojjjjjKjPjj"jjjjjjjjjkjpj׼jܼjjj{jj jjjjjjjjjj}jjjjjj)j.jxj}jjjjj\jajjjjjljqjjjjjjjjjjjnjsjjjjjjjjjjj(j-j j j j j]jbj!j&jKjPjTjYjjjjj_ jd j8#j=#jA$jF$jJ%jO%j(j!(j*j*jZ-j_-j,0j10j2j2j6j6j:j:jwFj:j";j';j<j<jE>jJ>jAjAjCjCu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.