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)}(hYThis API provides support for the AES-CMAC and AES-XCBC-MAC message authentication codes.h]hYThis API provides support 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:12: ./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:12: ./include/crypto/aes-cbc-macs.hhKhjwhhubah}(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:12: ./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:12: ./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:12: ./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:12: ./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:12: ./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:12: ./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_zeroize_key (C function)c.aes_cmac_zeroize_keyhNtauh1hhhhhhNhNubj)}(hhh](j)}(h4void aes_cmac_zeroize_key (struct aes_cmac_key *key)h]j)}(h3void aes_cmac_zeroize_key(struct aes_cmac_key *key)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(haes_cmac_zeroize_keyh]jJ)}(haes_cmac_zeroize_keyh]haes_cmac_zeroize_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubhdesc_parameterlist)}(h(struct aes_cmac_key *key)h]hdesc_parameter)}(hstruct aes_cmac_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)}(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)}j jsbc.aes_cmac_zeroize_keyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubhdesc_sig_punctuation)}(h*h]h*}(hj+hhhNhNubah}(h]h ]pah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h!Zeroize an aes_cmac_key structureh]h!Zeroize an aes_cmac_key structure}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjahhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1jhhhhhNhNubj)}(hX?**Parameters** ``struct aes_cmac_key *key`` The location of the key structure that should be zeroized **Description** Explicitly fills the aes_cmac_key with zeroes. This should be done once the key is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).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:12: ./include/crypto/aes-cbc-macs.hhK!hjubj)}(hhh]j)}(hW``struct aes_cmac_key *key`` The location of the key structure that should be zeroized 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:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(hhh]h)}(h9The location of the key structure that should be zeroizedh]h9The location of the key structure that should be zeroized}(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**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:12: ./include/crypto/aes-cbc-macs.hhK hjubh)}(hExplicitly fills the aes_cmac_key with zeroes. This should be done once the key is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).h]hExplicitly fills the aes_cmac_key with zeroes. This should be done once the key is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubeh}(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}(hj%hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj!hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK&ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!hhhj2hK&ubjD)}(h aes_cmac_ctxh]jJ)}(hjh]h aes_cmac_ctx}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj!hhhj2hK&ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj2hK&ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj2hK&hjhhubjv)}(hhh]h)}(h7Context for computing an AES-CMAC or AES-XCBC-MAC valueh]h7Context for computing an AES-CMAC or AES-XCBC-MAC value}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK*hjdhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj2hK&ubeh}(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:12: ./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:12: ./include/crypto/aes-cbc-macs.hhK0hjubh)}(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:12: ./include/crypto/aes-cbc-macs.hhK6hjubj)}(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)}(hjh]hkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK.hjubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK.hjubj)}(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)}(hjh]h partial_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK1hjubj)}(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 }(hj'hhhNhNubj)}(h**h**h]hh}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubh since the last AES encryption. This is 0 if no data has been processed yet, or between 1 and AES_BLOCK_SIZE inclusive otherwise.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK/hj$ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj#hK1hjubj)}(h ``h`` The current chaining valueh](j)}(h``h``h]j)}(hjZh]hh}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK1hjTubj)}(hhh]h)}(hThe current chaining valueh]hThe current chaining value}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK2hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohK1hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !aes_cmac_zeroize_ctx (C function)c.aes_cmac_zeroize_ctxhNtauh1hhhhhhNhNubj)}(hhh](j)}(h4void aes_cmac_zeroize_ctx (struct aes_cmac_ctx *ctx)h]j)}(h3void aes_cmac_zeroize_ctx(struct aes_cmac_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK:ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhK:ubjD)}(haes_cmac_zeroize_ctxh]jJ)}(haes_cmac_zeroize_ctxh]haes_cmac_zeroize_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhK:ubj)}(h(struct aes_cmac_ctx *ctx)h]j)}(hstruct aes_cmac_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 aes_cmac_ctxh]h aes_cmac_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.aes_cmac_zeroize_ctxasbuh1hhjubj3)}(h h]h }(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj=hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK:ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhK:ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK:hjhhubjv)}(hhh]h)}(h!Zeroize an aes_cmac_ctx structureh]h!Zeroize an aes_cmac_ctx structure}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK:hjqhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhK:ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hXI**Parameters** ``struct aes_cmac_ctx *ctx`` The location of the context that should be zeroized **Description** Explicitly fills the aes_cmac_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap. Only required if not using aes_cmac_final().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:12: ./include/crypto/aes-cbc-macs.hhK>hjubj)}(hhh]j)}(hQ``struct aes_cmac_ctx *ctx`` The location of the context that should be zeroized h](j)}(h``struct aes_cmac_ctx *ctx``h]j)}(hjh]hstruct aes_cmac_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK;hjubj)}(hhh]h)}(h3The location of the context that should be zeroizedh]h3The location of the context that should be zeroized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjubah}(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:12: ./include/crypto/aes-cbc-macs.hhK=hjubh)}(hExplicitly fills the aes_cmac_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap. Only required if not using aes_cmac_final().h]hExplicitly fills the aes_cmac_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap. Only required if not using aes_cmac_final().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK ubah}(h]h ]h"]h$]h&]uh1jhj" ubeh}(h]h ]h"]h$]h&]uh1jhj= hKIhjubj)}(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)}(hja h]hsize_t key_len}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKKhj[ ubj)}(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.}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKJhjw ubah}(h]h ]h"]h$]h&]uh1jhj[ ubeh}(h]h ]h"]h$]h&]uh1jhjv hKKhjubeh}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKMhjubh)}(hOn success, the caller should ensure that the prepared key is zeroized at the end of its lifetime, e.g. by calling aes_cmac_zeroize_key() or kfree_sensitive().h]hOn success, the caller should ensure that the prepared key is zeroized at the end of its lifetime, e.g. by calling aes_cmac_zeroize_key() or kfree_sensitive().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKLhjubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKPhjubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKQhjubh)}(h **Return**h]j)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKShjubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKRhjubeh}(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}(hj0 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj, hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKZubj3)}(h h]h }(hj? hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj, hhhj> hKZubjD)}(haes_xcbcmac_preparekeyh]jJ)}(haes_xcbcmac_preparekeyh]haes_xcbcmac_preparekey}(hjQ hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjM ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj, hhhj> hKZubj)}(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}(hjm hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hji ubj3)}(h h]h }(hjz hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hji 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 classnameNj j)}j]j)}j jS sbc.aes_xcbcmac_preparekeyasbuh1hhji ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hji ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hji ubjJ)}(hkeyh]hkey}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhji ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhje ubj)}(h'const u8 in_key[static AES_KEYSIZE_128]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&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]j c.aes_xcbcmac_preparekeyasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubjJ)}(hin_keyh]hin_key}(hj) hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubj*)}(h[h]h[}(hj7 hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubj!)}(hstatich]hstatic}(hjE hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hjS hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hAES_KEYSIZE_128h]hAES_KEYSIZE_128}(hjd hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhja ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjf modnameN classnameNj j)}j]j c.aes_xcbcmac_preparekeyasbuh1hhj ubj*)}(h]h]h]}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhje ubeh}(h]h ]h"]h$]h&]hhuh1jhj, hhhj> hKZubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj( hhhj> hKZubah}(h]j# ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj> hKZhj% hhubjv)}(hhh]h)}(hPrepare a key for AES-XCBC-MACh]hPrepare a key for AES-XCBC-MAC}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKZhj hhubah}(h]h ]h"]h$]h&]uh1juhj% hhhj> hKZubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(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)}(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:12: ./include/crypto/aes-cbc-macs.hhK^hj ubj)}(hhh](j)}(hC``struct aes_cmac_key *key`` (output) The key struct to initialize h](j)}(h``struct aes_cmac_key *key``h]j)}(hj h]hstruct aes_cmac_key *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:12: ./include/crypto/aes-cbc-macs.hhK[hj ubj)}(hhh]h)}(h%(output) The key struct to initializeh]h%(output) The key struct 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 ubj)}(h``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. h](j)}(h+``const u8 in_key[static AES_KEYSIZE_128]``h]j)}(hj& h]h'const u8 in_key[static AES_KEYSIZE_128]}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK]hj ubj)}(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:12: ./include/crypto/aes-cbc-macs.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 ubh)}(h**Description**h]j)}(hjb h]h Description}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj` ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK_hj ubh)}(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.}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK^hj ubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKahj ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKchj ubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKdhj ubeh}(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 ]jah"]h$]h&]uh1jhj hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhj hKjubjD)}(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 hKjubj)}(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}(hj8 hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5 ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj: modnameN classnameNj j)}j]j)}j j sbc.aes_cmac_initasbuh1hhj ubj3)}(h h]h }(hjX hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hjf hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hctxh]hctx}(hjs hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hconst struct aes_cmac_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}(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 classnameNj j)}j]jT c.aes_cmac_initasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hkeyh]hkey}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKjubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj hKjubah}(h]j ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hKjhj 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:12: ./include/crypto/aes-cbc-macs.hhKjhj%hhubah}(h]h ]h"]h$]h&]uh1juhj hhhj hKjubeh}(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. The caller should ensure that the context is zeroized at the end of its lifetime, e.g. by calling aes_cmac_final() or aes_cmac_zeroize_ctx().h](h)}(h**Parameters**h]j)}(hjJh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKnhjDubj)}(hhh](j)}(h@``struct aes_cmac_ctx *ctx`` (output) The context to initialize h](j)}(h``struct aes_cmac_ctx *ctx``h]j)}(hjih]hstruct aes_cmac_ctx *ctx}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKkhjcubj)}(hhh]h)}(h"(output) The context to initializeh]h"(output) The context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKkhjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj~hKkhj`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)}(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:12: ./include/crypto/aes-cbc-macs.hhKmhjubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKmhj`ubeh}(h]h ]h"]h$]h&]uh1jhjDubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKohjDubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKnhjDubh)}(hThe caller should ensure that the context is zeroized at the end of its lifetime, e.g. by calling aes_cmac_final() or aes_cmac_zeroize_ctx().h]hThe caller should ensure that the context is zeroized at the end of its lifetime, e.g. by calling aes_cmac_final() or aes_cmac_zeroize_ctx().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKqhjDubeh}(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}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK|ubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.hhhj@hK|ubjD)}(haes_cmac_updateh]jJ)}(haes_cmac_updateh]haes_cmac_update}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj.hhhj@hK|ubj)}(h;(struct aes_cmac_ctx *ctx, const u8 *data, size_t data_len)h](j)}(hstruct aes_cmac_ctx *ctxh](j!)}(hj$h]hstruct}(hjohhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjkubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubh)}(hhh]jJ)}(h aes_cmac_ctxh]h aes_cmac_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jUsbc.aes_cmac_updateasbuh1hhjkubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjkubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(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 classnameNj j)}j]jc.aes_cmac_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj+hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjVmodnameN classnameNj j)}j]jc.aes_cmac_updateasbuh1hhjMubj3)}(h h]h }(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjMubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjMubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubeh}(h]h ]h"]h$]h&]hhuh1jhj.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)}(h9Update an AES-CMAC or AES-XCBC-MAC context with more datah]h9Update an AES-CMAC or AES-XCBC-MAC context with more data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK|hjhhubah}(h]h ]h"]h$]h&]uh1juhj'hhhj@hK|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(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)}(hjh]hstruct aes_cmac_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhK}hjubj)}(hhh]h)}(h1The context to update; must have been initializedh]h1The context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK}hjubj)}(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:12: ./include/crypto/aes-cbc-macs.hhK~hjubj)}(hhh]h)}(hThe message datah]hThe message data}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hK~hj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj9hK~hjubj)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjWubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhKhjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhKhjubeh}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubeh}(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 ]jah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(haes_cmac_finalh]jJ)}(haes_cmac_finalh]haes_cmac_final}(hj%hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(h9(struct aes_cmac_ctx *ctx, u8 out[static AES_BLOCK_SIZE])h](j)}(hstruct aes_cmac_ctx *ctxh](j!)}(hj$h]hstruct}(hjAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj=ubj3)}(h h]h }(hjNhhhNhNubah}(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  reftargetjamodnameN classnameNj j)}j]j)}j j'sbc.aes_cmac_finalasbuh1hhj=ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj=ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(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 classnameNj j)}j]j{c.aes_cmac_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]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_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j{c.aes_cmac_finalasbuh1hhjubj*)}(hj h]h]}(hj9hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h2Finish computing an AES-CMAC or AES-XCBC-MAC valueh]h2Finish computing an AES-CMAC or AES-XCBC-MAC value}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhj_hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzjjzjjjuh1jhhhhhNhNubj)}(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)}(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:12: ./include/crypto/aes-cbc-macs.hhKhj~ubj)}(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)}(hjh]hstruct aes_cmac_ctx *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(hhh]h)}(h3The context to finalize; must have been initializedh]h3The context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(hhh]h)}(h(output) The resulting MACh]h(output) The resulting MAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.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}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh(. So the caller does not need to do it.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhj~ubh)}(h **Context**h]j)}(hjPh]hContext}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhj~ubh)}(h Any context.h]h Any context.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhj~ubeh}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(haes_cmach]jJ)}(haes_cmach]haes_cmac}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(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}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]j)}j jsb c.aes_cmacasbuh1hhjubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj9hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjFhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hj_hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj[ubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ubh)}(hhh]jJ)}(hu8h]hu8}(hj}hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j' c.aes_cmacasbuh1hhj[ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj[ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}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&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j' c.aes_cmacasbuh1hhjubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjFhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjThhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hjahhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j' c.aes_cmacasbuh1hhjubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(hhh]h)}(hThe key to useh]hThe key to use}(hj hhhNhNubah}(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}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhj:ubj)}(hhh]h)}(hThe message datah]hThe message data}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjubj)}(h-``size_t data_len`` The data length in bytes h](j)}(h``size_t data_len``h]j)}(hjyh]hsize_t data_len}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjsubj)}(hhh]h)}(hThe data length in bytesh]hThe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubj)}(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&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(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:12: ./include/crypto/aes-cbc-macs.hhKhjubh)}(h Any context.h]h Any context.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:12: ./include/crypto/aes-cbc-macs.hhKhjubeh}(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}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhhhhhKubh)}(hFThis API provides support for the BLAKE2b cryptographic hash function.h]hFThis API provides support for the BLAKE2b cryptographic hash function.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjHhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_ctx (C struct) c.blake2b_ctxhNtauh1hhjHhhhNhNubj)}(hhh](j)}(h blake2b_ctxh]j)}(hstruct blake2b_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj|hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|hhhjhKubjD)}(h blake2b_ctxh]jJ)}(hjzh]h blake2b_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj|hhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjxhhhjhKubah}(h]jsah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjuhhubjv)}(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:19: ./include/crypto/blake2b.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjuhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjHhNhNubj)}(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:19: ./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:19: ./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:19: ./include/crypto/blake2b.hhK%hjubj)}(hhh](j)}(h!``h`` compression function state h](j)}(h``h``h]j)}(hj/h]hh}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhj)ubj)}(hhh]h)}(hcompression function stateh]hcompression function state}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKhjEubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhKhj&ubj)}(h``t`` block counter h](j)}(h``t``h]j)}(hjhh]ht}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhjbubj)}(hhh]h)}(h block counterh]h block counter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hKhj~ubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhj}hKhj&ubj)}(h``f`` finalization indicator h](j)}(h``f``h]j)}(hjh]hf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhjubj)}(hhh]h)}(hfinalization indicatorh]hfinalization indicator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj&ubj)}(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:19: ./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&]uh1jhjhKhj&ubj)}(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:19: ./include/crypto/blake2b.hhKhj ubj)}(hhh]h)}(h#number of bytes buffered in **buf**h](hnumber of bytes buffered in }(hj,hhhNhNubj)}(h**buf**h]hbuf}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1hhj(hKhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj(hKhj&ubj)}(hJ``outlen`` length of output hash value in bytes, at most BLAKE2B_HASH_SIZEh](j)}(h ``outlen``h]j)}(hjZh]houtlen}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhjTubj)}(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}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohKhj&ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_init (C function)c.blake2b_inithNtauh1hhjHhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKLubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKLubjD)}(h blake2b_inith]jJ)}(h blake2b_inith]h blake2b_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKLubj)}(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&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.blake2b_initasbuh1hhjubj3)}(h h]h }(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj=hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjcubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjhmodnameN classnameNj j)}j]j+c.blake2b_initasbuh1hhj_ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ubjJ)}(houtlenh]houtlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKLubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKLubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKLhjhhubjv)}(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:19: ./include/crypto/blake2b.hhKLhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKLubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjHhNhNubj)}(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:19: ./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:19: ./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)}(hj6h]h size_t outlen}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKNhj0ubj)}(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}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhKNhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhKNhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(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:19: ./include/crypto/blake2b.hhKPhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKPhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_init_key (C function)c.blake2b_init_keyhNtauh1hhjHhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKXubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKXubjD)}(hblake2b_init_keyh]jJ)}(hblake2b_init_keyh]hblake2b_init_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKXubj)}(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 classnameNj j)}j]j)}j jsbc.blake2b_init_keyasbuh1hhjubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj?hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjLhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjjmodnameN classnameNj j)}j]j-c.blake2b_init_keyasbuh1hhjaubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubjJ)}(houtlenh]houtlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst void *keyh](j!)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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  reftargetjmodnameN classnameNj j)}j]j-c.blake2b_init_keyasbuh1hhjubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hkeylenh]hkeylen}(hj9hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKXubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKXubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKXhjhhubjv)}(hhh]h)}(h6Initialize a BLAKE2b context for a new message (keyed)h]h6Initialize a BLAKE2b context for a new message (keyed)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKXhj`hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKXubeh}(h]h ](jfunctioneh"]h$]h&]jjjj{jj{jjjuh1jhhhjHhNhNubj)}(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)}(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:19: ./include/crypto/blake2b.hhK\hjubj)}(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:19: ./include/crypto/blake2b.hhKYhjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKYhjubj)}(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:19: ./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&]uh1jhjhKZhjubj)}(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:19: ./include/crypto/blake2b.hhK[hjubj)}(hhh]h)}(hthe keyh]hthe 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[hjubj)}(hD``size_t keylen`` the key length in bytes, at most BLAKE2B_KEY_SIZE h](j)}(h``size_t keylen``h]j)}(hjOh]h size_t keylen}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhK\hjIubj)}(hhh]h)}(h1the key length in bytes, at most BLAKE2B_KEY_SIZEh]h1the key length in bytes, at most BLAKE2B_KEY_SIZE}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhK\hjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjdhK\hjubeh}(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:19: ./include/crypto/blake2b.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:19: ./include/crypto/blake2b.hhK^hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_update (C function)c.blake2b_updatehNtauh1hhjHhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./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&]hhuh1jChjhhhjhKjubj)}(h5(struct blake2b_ctx *ctx, const u8 *in, size_t inlen)h](j)}(hstruct blake2b_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 blake2b_ctxh]h blake2b_ctx}(hj* hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj' ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj, modnameN classnameNj j)}j]j)}j jsbc.blake2b_updateasbuh1hhj ubj3)}(h h]h }(hjJ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hjX hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hctxh]hctx}(hje hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h const u8 *inh](j!)}(hjh]hconst}(hj~ hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjz ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjz ubh)}(hhh]jJ)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]jF c.blake2b_updateasbuh1hhjz ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjz ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjz ubjJ)}(hinh]hin}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjz ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 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 classnameNj j)}j]jF c.blake2b_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&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKjubeh}(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}(hjG!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKjhjD!hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKjubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_!jj_!jjjuh1jhhhjHhNhNubj)}(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)}(hji!h]h Parameters}(hjk!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg!ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKnhjc!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)}(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:19: ./include/crypto/blake2b.hhKkhj!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!hKkhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hKkhj!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:19: ./include/crypto/blake2b.hhKlhj!ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKlhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hKlhj!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:19: ./include/crypto/blake2b.hhKmhj!ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKmhj"ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj"hKmhj!ubeh}(h]h ]h"]h$]h&]uh1jhjc!ubh)}(h**Description**h]j)}(hj5"h]h Description}(hj7"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3"ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKohjc!ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjK"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKnhjc!ubh)}(h **Context**h]j)}(hj\"h]hContext}(hj^"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ"ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKphjc!ubh)}(h Any context.h]h Any context.}(hjr"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKqhjc!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b_final (C function)c.blake2b_finalhNtauh1hhjHhhhNhNubj)}(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}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKvubj3)}(h h]h }(hj"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"hhhj"hKvubjD)}(h blake2b_finalh]jJ)}(h blake2b_finalh]h blake2b_final}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj"hhhj"hKvubj)}(h"(struct blake2b_ctx *ctx, u8 *out)h](j)}(hstruct blake2b_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 blake2b_ctxh]h blake2b_ctx}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj"modnameN classnameNj j)}j]j)}j j"sbc.blake2b_finalasbuh1hhj"ubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubj*)}(hj-h]h*}(hj*#hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj"ubjJ)}(hctxh]hctx}(hj7#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hjS#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjP#ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjU#modnameN classnameNj j)}j]j#c.blake2b_finalasbuh1hhjL#ubj3)}(h h]h }(hjq#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjL#ubj*)}(hj-h]h*}(hj#hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjL#ubjJ)}(houth]hout}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjL#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hKvubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj"hhhj"hKvubah}(h]j"ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj"hKvhj"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:19: ./include/crypto/blake2b.hhKvhj#hhubah}(h]h ]h"]h$]h&]uh1juhj"hhhj"hKvubeh}(h]h ](jfunctioneh"]h$]h&]jjjj#jj#jjjuh1jhhhjHhNhNubj)}(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:19: ./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:19: ./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)}(hj0$h]hu8 *out}(hj2$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.$ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./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 }(hjI$hhhNhNubj)}(h **outlen**h]houtlen}(hjQ$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI$ubh9 that was passed to blake2b_init() or blake2b_init_key().}(hjI$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKxhjF$ubah}(h]h ]h"]h$]h&]uh1jhj*$ubeh}(h]h ]h"]h$]h&]uh1jhjE$hKyhj#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:19: ./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}(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:19: ./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:19: ./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:19: ./include/crypto/blake2b.hhK}hj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2b (C function) c.blake2bhNtauh1hhjHhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhj$hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./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 %hKubj)}(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}(hj9%hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj5%ubj3)}(h h]h }(hjF%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5%ubh)}(hhh]jJ)}(hu8h]hu8}(hjW%hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjT%ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjY%modnameN classnameNj j)}j]j)}j j%sb c.blake2basbuh1hhj5%ubj3)}(h h]h }(hjw%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5%ubj*)}(hj-h]h*}(hj%hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj5%ubjJ)}(hkeyh]hkey}(hj%hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1%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 classnameNj j)}j]js% c.blake2basbuh1hhj%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&]noemphhhuh1jhj1%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 classnameNj j)}j]js% c.blake2basbuh1hhj%ubj3)}(h h]h }(hj/&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubj*)}(hj-h]h*}(hj=&hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj%ubjJ)}(hinh]hin}(hjJ&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1%ubj)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjf&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjc&ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjh&modnameN classnameNj j)}j]js% c.blake2basbuh1hhj_&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&]noemphhhuh1jhj1%ubj)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hj&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj&modnameN classnameNj j)}j]js% c.blake2basbuh1hhj&ubj3)}(h h]h }(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubj*)}(hj-h]h*}(hj&hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj&ubjJ)}(houth]hout}(hj&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1%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 classnameNj j)}j]js% 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&]noemphhhuh1jhj1%ubeh}(h]h ]h"]h$]h&]hhuh1jhj$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}(hjY'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhjV'hhubah}(h]h ]h"]h$]h&]uh1juhj$hhhj %hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjq'jjq'jjjuh1jhhhjHhNhNubj)}(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)}(hj{'h]h Parameters}(hj}'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy'ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./include/crypto/blake2b.hhKhju'ubj)}(hhh](j)}(h7``const u8 *key`` the key, or NULL for an unkeyed hash h](j)}(h``const u8 *key``h]j)}(hj'h]h const u8 *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:19: ./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&]uh1hhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hKhj'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:19: ./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:19: ./include/crypto/blake2b.hhKhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hKhj'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:19: ./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"(hKhj'ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hjF(h]h size_t inlen}(hjH(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD(ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:19: ./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[(hKhj'ubj)}(hH``u8 *out`` (output) the resulting BLAKE2b hash, with length **outlen** 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:19: ./include/crypto/blake2b.hhKhjy(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}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1hhj(hKhj(ubah}(h]h ]h"]h$]h&]uh1jhjy(ubeh}(h]h ]h"]h$]h&]uh1jhj(hKhj'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:19: ./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(hKhj'ubeh}(h]h ]h"]h$]h&]uh1jhju'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:19: ./include/crypto/blake2b.hhKhju'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:19: ./include/crypto/blake2b.hhKhju'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjHhhhNhNubeh}(h]blake2bah ]h"]blake2bah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hBLAKE2sh]hBLAKE2s}(hj8)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5)hhhhhKubh)}(hFThis API provides support for the BLAKE2s cryptographic hash function.h]hFThis API provides support for the BLAKE2s cryptographic hash function.}(hjF)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj5)hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_ctx (C struct) c.blake2s_ctxhNtauh1hhj5)hhhNhNubj)}(hhh](j)}(h blake2s_ctxh]j)}(hstruct blake2s_ctxh](j!)}(hj$h]hstruct}(hjm)hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hji)hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKubj3)}(h h]h }(hj{)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hji)hhhjz)hKubjD)}(h blake2s_ctxh]jJ)}(hjg)h]h blake2s_ctx}(hj)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChji)hhhjz)hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihje)hhhjz)hKubah}(h]j`)ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjz)hKhjb)hhubjv)}(hhh]h)}(h*Context for hashing a message with BLAKE2sh]h*Context for hashing a message with BLAKE2s}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj)hhubah}(h]h ]h"]h$]h&]uh1juhjb)hhhjz)hKubeh}(h]h ](jstructeh"]h$]h&]jjjj)jj)jjjuh1jhhhj5)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:26: ./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:26: ./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:26: ./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:26: ./include/crypto/blake2s.hhKhj*ubj)}(hhh]h)}(hcompression function stateh]hcompression function state}(hj5*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1*hKhj2*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj1*hKhj*ubj)}(h``t`` block counter h](j)}(h``t``h]j)}(hjU*h]ht}(hjW*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS*ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjO*ubj)}(hhh]h)}(h block counterh]h block counter}(hjn*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj*hKhjk*ubah}(h]h ]h"]h$]h&]uh1jhjO*ubeh}(h]h ]h"]h$]h&]uh1jhjj*hKhj*ubj)}(h``f`` finalization indicator h](j)}(h``f``h]j)}(hj*h]hf}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj*ubj)}(hhh]h)}(hfinalization indicatorh]hfinalization indicator}(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)}(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:26: ./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:26: ./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)}(hjG+h]houtlen}(hjI+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE+ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK hjA+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:26: ./include/crypto/blake2s.hhK!hj]+ubah}(h]h ]h"]h$]h&]uh1jhjA+ubeh}(h]h ]h"]h$]h&]uh1jhj\+hK hj*ubeh}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_init (C function)c.blake2s_inithNtauh1hhj5)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}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKPubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+hhhj+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&]hhuh1jChj+hhhj+hKPubj)}(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 classnameNj j)}j]j)}j j+sbc.blake2s_initasbuh1hhj+ubj3)}(h h]h }(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubj*)}(hj-h]h*}(hj*,hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj+ubjJ)}(hctxh]hctx}(hj7,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjS,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjP,ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjU,modnameN classnameNj j)}j]j,c.blake2s_initasbuh1hhjL,ubj3)}(h h]h }(hjq,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjL,ubjJ)}(houtlenh]houtlen}(hj,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjL,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj+hKPubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj+hhhj+hKPubah}(h]j+ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj+hKPhj+hhubjv)}(hhh]h)}(h8Initialize a BLAKE2s context for a new message (unkeyed)h]h8Initialize a BLAKE2s context for a new message (unkeyed)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKPhj,hhubah}(h]h ]h"]h$]h&]uh1juhj+hhhj+hKPubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1jhhhj5)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:26: ./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:26: ./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:26: ./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&]uh1hhj8-hKRhj9-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj8-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:26: ./include/crypto/blake2s.hhKThj,ubh)}(h Any context.h]h Any context.}(hjt-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKThj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_init_key (C function)c.blake2s_init_keyhNtauh1hhj5)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}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK\ubj3)}(h h]h }(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-hhhj-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&]hhuh1jChj-hhhj-hK\ubj)}(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 classnameNj j)}j]j)}j j-sbc.blake2s_init_keyasbuh1hhj-ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubj*)}(hj-h]h*}(hj,.hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj-ubjJ)}(hctxh]hctx}(hj9.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubj)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjU.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjR.ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjW.modnameN classnameNj j)}j]j.c.blake2s_init_keyasbuh1hhjN.ubj3)}(h h]h }(hjs.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjN.ubjJ)}(houtlenh]houtlen}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjN.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubj)}(hconst void *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)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubj*)}(hj-h]h*}(hj.hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj.ubjJ)}(hkeyh]hkey}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-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 classnameNj j)}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&]noemphhhuh1jhj-ubeh}(h]h ]h"]h$]h&]hhuh1jhj-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)}(h6Initialize a BLAKE2s context for a new message (keyed)h]h6Initialize a BLAKE2s context for a new message (keyed)}(hjP/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK\hjM/hhubah}(h]h ]h"]h$]h&]uh1juhj-hhhj-hK\ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjh/jjh/jjjuh1jhhhj5)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)}(hjr/h]h Parameters}(hjt/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp/ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK`hjl/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:26: ./include/crypto/blake2s.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/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:26: ./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^hj/ubj)}(h``const void *key`` the key h](j)}(h``const void *key``h]j)}(hj0h]hconst void *key}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK_hj/ubj)}(hhh]h)}(hthe keyh]hthe key}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hK_hj0ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj0hK_hj/ubj)}(hD``size_t keylen`` the key length in bytes, at most BLAKE2S_KEY_SIZE h](j)}(h``size_t keylen``h]j)}(hj<0h]h size_t keylen}(hj>0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:0ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK`hj60ubj)}(hhh]h)}(h1the key length in bytes, at most BLAKE2S_KEY_SIZEh]h1the key length in bytes, at most BLAKE2S_KEY_SIZE}(hjU0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ0hK`hjR0ubah}(h]h ]h"]h$]h&]uh1jhj60ubeh}(h]h ]h"]h$]h&]uh1jhjQ0hK`hj/ubeh}(h]h ]h"]h$]h&]uh1jhjl/ubh)}(h **Context**h]j)}(hjw0h]hContext}(hjy0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhju0ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKbhjl/ubh)}(h Any context.h]h Any context.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKbhjl/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_update (C function)c.blake2s_updatehNtauh1hhj5)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}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKnubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0hhhj0hKnubjD)}(hblake2s_updateh]jJ)}(hblake2s_updateh]hblake2s_update}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj0hhhj0hKnubj)}(h5(struct blake2s_ctx *ctx, const u8 *in, size_t inlen)h](j)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj1modnameN classnameNj j)}j]j)}j j0sbc.blake2s_updateasbuh1hhj0ubj3)}(h h]h }(hj71hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubj*)}(hj-h]h*}(hjE1hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj0ubjJ)}(hctxh]hctx}(hjR1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(h const u8 *inh](j!)}(hjh]hconst}(hjk1hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjg1ubj3)}(h h]h }(hjx1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjg1ubh)}(hhh]jJ)}(hu8h]hu8}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj1modnameN classnameNj j)}j]j31c.blake2s_updateasbuh1hhjg1ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjg1ubj*)}(hj-h]h*}(hj1hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjg1ubjJ)}(hinh]hin}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjg1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj1modnameN classnameNj j)}j]j31c.blake2s_updateasbuh1hhj1ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubjJ)}(hinlenh]hinlen}(hj 2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhj0hKnubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj0hhhj0hKnubah}(h]j0ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj0hKnhj0hhubjv)}(hhh]h)}(h*Update a BLAKE2s context with message datah]h*Update a BLAKE2s context with message data}(hj42hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKnhj12hhubah}(h]h ]h"]h$]h&]uh1juhj0hhhj0hKnubeh}(h]h ](jfunctioneh"]h$]h&]jjjjL2jjL2jjjuh1jhhhj5)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)}(hjV2h]h Parameters}(hjX2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT2ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKrhjP2ubj)}(hhh](j)}(hN``struct blake2s_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hju2h]hstruct blake2s_ctx *ctx}(hjw2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKohjo2ubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKohj2ubah}(h]h ]h"]h$]h&]uh1jhjo2ubeh}(h]h ]h"]h$]h&]uh1jhj2hKohjl2ubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hj2h]h const u8 *in}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKphj2ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKphj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hKphjl2ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hj2h]h size_t inlen}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKqhj2ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKqhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hKqhjl2ubeh}(h]h ]h"]h$]h&]uh1jhjP2ubh)}(h**Description**h]j)}(hj"3h]h Description}(hj$3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 3ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKshjP2ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj83hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKrhjP2ubh)}(h **Context**h]j)}(hjI3h]hContext}(hjK3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG3ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKthjP2ubh)}(h Any context.h]h Any context.}(hj_3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKuhjP2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s_final (C function)c.blake2s_finalhNtauh1hhj5)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}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKzubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3hhhj3hKzubjD)}(h blake2s_finalh]jJ)}(h blake2s_finalh]h blake2s_final}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj3hhhj3hKzubj)}(h"(struct blake2s_ctx *ctx, u8 *out)h](j)}(hstruct blake2s_ctx *ctxh](j!)}(hj$h]hstruct}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(h blake2s_ctxh]h blake2s_ctx}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj3modnameN classnameNj j)}j]j)}j j3sbc.blake2s_finalasbuh1hhj3ubj3)}(h h]h }(hj 4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj*)}(hj-h]h*}(hj4hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj3ubjJ)}(hctxh]hctx}(hj$4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hj@4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=4ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjB4modnameN classnameNj j)}j]j4c.blake2s_finalasbuh1hhj94ubj3)}(h h]h }(hj^4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj94ubj*)}(hj-h]h*}(hjl4hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj94ubjJ)}(houth]hout}(hjy4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj94ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubeh}(h]h ]h"]h$]h&]hhuh1jhj3hhhj3hKzubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj3hhhj3hKzubah}(h]j3ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj3hKzhj3hhubjv)}(hhh]h)}(hFinish computing a BLAKE2s hashh]hFinish computing a BLAKE2s hash}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKzhj4hhubah}(h]h ]h"]h$]h&]uh1juhj3hhhj3hKzubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4jj4jjjuh1jhhhj5)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)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK~hj4ubj)}(hhh](j)}(hP``struct blake2s_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct blake2s_ctx *ctx``h]j)}(hj4h]hstruct blake2s_ctx *ctx}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK{hj4ubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hK{hj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hK{hj4ubj)}(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)}(hj5h]hu8 *out}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK}hj5ubj)}(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 }(hj65hhhNhNubj)}(h **outlen**h]houtlen}(hj>5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj65ubh9 that was passed to blake2s_init() or blake2s_init_key().}(hj65hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK|hj35ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj25hK}hj4ubeh}(h]h ]h"]h$]h&]uh1jhj4ubh)}(h**Description**h]j)}(hjk5h]h Description}(hjm5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji5ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj4ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj5hhhNhNubj)}(h**ctx**h]hctx}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh(. So the caller does not need to do it.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhK~hj4ubh)}(h **Context**h]j)}(hj5h]hContext}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj4ubh)}(h Any context.h]h Any context.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j blake2s (C function) c.blake2shNtauh1hhj5)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}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKubj3)}(h h]h }(hj5hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5hhhj5hKubjD)}(hblake2sh]jJ)}(hblake2sh]hblake2s}(hj 6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj5hhhj5hKubj)}(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&6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj"6ubj3)}(h h]h }(hj36hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"6ubh)}(hhh]jJ)}(hu8h]hu8}(hjD6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjA6ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjF6modnameN classnameNj j)}j]j)}j j 6sb c.blake2sasbuh1hhj"6ubj3)}(h h]h }(hjd6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"6ubj*)}(hj-h]h*}(hjr6hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj"6ubjJ)}(hkeyh]hkey}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj"6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h size_t keylenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj6modnameN classnameNj j)}j]j`6 c.blake2sasbuh1hhj6ubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubjJ)}(hkeylenh]hkeylen}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h const u8 *inh](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  reftargetj7modnameN classnameNj j)}j]j`6 c.blake2sasbuh1hhj6ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubj*)}(hj-h]h*}(hj*7hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj6ubjJ)}(hinh]hin}(hj77hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h size_t inlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjS7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjP7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjU7modnameN classnameNj j)}j]j`6 c.blake2sasbuh1hhjL7ubj3)}(h h]h }(hjq7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjL7ubjJ)}(hinlenh]hinlen}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjL7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hu8 *outh](h)}(hhh]jJ)}(hu8h]hu8}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj7modnameN classnameNj j)}j]j`6 c.blake2sasbuh1hhj7ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubj*)}(hj-h]h*}(hj7hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj7ubjJ)}(houth]hout}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h size_t outlenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj7modnameN classnameNj j)}j]j`6 c.blake2sasbuh1hhj7ubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubjJ)}(houtlenh]houtlen}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhj5hhhj5hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj5hhhj5hKubah}(h]j5ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj5hKhj5hhubjv)}(hhh]h)}(h Compute BLAKE2s hash in one shoth]h Compute BLAKE2s hash in one shot}(hjF8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjC8hhubah}(h]h ]h"]h$]h&]uh1juhj5hhhj5hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj^8jj^8jjjuh1jhhhj5)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)}(hjh8h]h Parameters}(hjj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf8ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjb8ubj)}(hhh](j)}(h7``const u8 *key`` the key, or NULL for an unkeyed hash h](j)}(h``const u8 *key``h]j)}(hj8h]h const u8 *key}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj8ubj)}(hhh]h)}(h$the key, or NULL for an unkeyed hashh]h$the key, or NULL for an unkeyed hash}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj~8ubj)}(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)}(hj8h]h size_t keylen}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj8ubj)}(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}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj~8ubj)}(h"``const u8 *in`` the message data h](j)}(h``const u8 *in``h]j)}(hj8h]h const u8 *in}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj8ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj9hKhj~8ubj)}(h*``size_t inlen`` the data length in bytes h](j)}(h``size_t inlen``h]j)}(hj39h]h size_t inlen}(hj59hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj19ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj-9ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjL9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH9hKhjI9ubah}(h]h ]h"]h$]h&]uh1jhj-9ubeh}(h]h ]h"]h$]h&]uh1jhjH9hKhj~8ubj)}(hH``u8 *out`` (output) the resulting BLAKE2s hash, with length **outlen** h](j)}(h ``u8 *out``h]j)}(hjl9h]hu8 *out}(hjn9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj9ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjf9ubj)}(hhh]h)}(h;(output) the resulting BLAKE2s hash, with length **outlen**h](h1(output) the resulting BLAKE2s hash, with length }(hj9hhhNhNubj)}(h **outlen**h]houtlen}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhjf9ubeh}(h]h ]h"]h$]h&]uh1jhj9hKhj~8ubj)}(hR``size_t outlen`` length of output hash value in bytes, at most BLAKE2S_HASH_SIZE h](j)}(h``size_t outlen``h]j)}(hj9h]h size_t outlen}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhj9ubj)}(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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hKhj~8ubeh}(h]h ]h"]h$]h&]uh1jhjb8ubh)}(h **Context**h]j)}(hj9h]hContext}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjb8ubh)}(h Any context.h]h Any context.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:26: ./include/crypto/blake2s.hhKhjb8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj5)hhhNhNubeh}(h]blake2sah ]h"]blake2sah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hGHASH and POLYVALh]hGHASH and POLYVAL}(hj%:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj":hhhhhKubh)}(hThis API provides support for the GHASH and POLYVAL universal hash functions. These algorithms are used only as internal components of other algorithms.h]hThis API provides support for the GHASH and POLYVAL universal hash functions. These algorithms are used only as internal components of other algorithms.}(hj3:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj":hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_elem (C struct)c.polyval_elemhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h polyval_elemh]j)}(hstruct polyval_elemh](j!)}(hj$h]hstruct}(hjZ:hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjV:hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjh:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjV:hhhjg:hKubjD)}(h polyval_elemh]jJ)}(hjT:h]h polyval_elem}(hjz:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjv:ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjV:hhhjg:hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjR:hhhjg:hKubah}(h]jM:ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjg:hKhjO:hhubjv)}(hhh]h)}(h&An element of the POLYVAL finite fieldh]h&An element of the POLYVAL finite field}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj:hhubah}(h]h ]h"]h$]h&]uh1juhjO:hhhjg:hKubeh}(h]h ](jstructeh"]h$]h&]jjjj:jj:jjjuh1jhhhj":hNhNubj)}(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}(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:34: ./include/crypto/gf128hash.hhKhj:ubj)}(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; }; }; };}hj:sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj: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:34: ./include/crypto/gf128hash.hhK#hj:ubj)}(hhh](j)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hj ;h]h{unnamed_union}}(hj ;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj;ubj)}(hhh]h)}(h anonymoush]h anonymous}(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)}(hO``bytes`` View of the element as a byte array (unioned with **lo** and **hi**) h](j)}(h ``bytes``h]j)}(hjB;h]hbytes}(hjD;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj<;ubj)}(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[;hhhNhNubj)}(h**lo**h]hlo}(hjc;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[;ubh and }(hj[;hhhNhNubj)}(h**hi**h]hhi}(hju;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[;ubh)}(hj[;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjW;hKhjX;ubah}(h]h ]h"]h$]h&]uh1jhj<;ubeh}(h]h ]h"]h$]h&]uh1jhjW;hKhj;ubj)}(h``{unnamed_struct}`` anonymous h](j)}(h``{unnamed_struct}``h]j)}(hj;h]h{unnamed_struct}}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj;ubj)}(hhh]h)}(h anonymoush]h anonymous}(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)}(h4``lo`` The low 64 terms of the element's polynomial h](j)}(h``lo``h]j)}(hj;h]hlo}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj;ubj)}(hhh]h)}(h,The low 64 terms of the element's polynomialh]h.The low 64 terms of the element’s polynomial}(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)}(h4``hi`` The high 64 terms of the element's polynomialh](j)}(h``hi``h]j)}(hj<h]hhi}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj <ubj)}(hhh]h)}(h-The high 64 terms of the element's polynomialh]h/The high 64 terms of the element’s polynomial}(hj*<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj'<ubah}(h]h ]h"]h$]h&]uh1jhj <ubeh}(h]h ]h"]h$]h&]uh1jhj&<hKhj;ubeh}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(h**Description**h]j)}(hjT<h]h Description}(hjV<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR<ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj":hhubh)}(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.}(hjj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj":hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_key (C struct) c.ghash_keyhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h ghash_keyh]j)}(hstruct ghash_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:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<hhhj<hKubjD)}(h ghash_keyh]jJ)}(hj<h]h ghash_key}(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)}(hPrepared key for GHASHh]hPrepared key for GHASH}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK&hj<hhubah}(h]h ]h"]h$]h&]uh1juhj<hhhj<hKubeh}(h]h ](jstructeh"]h$]h&]jjjj<jj<jjjuh1jhhhj":hNhNubj)}(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}(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:34: ./include/crypto/gf128hash.hhK*hj<ubj)}(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; };}hj=sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.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:34: ./include/crypto/gf128hash.hhK5hj<ubj)}(hhh](j)}(h=``htable`` GHASH key format used by the POWER8 assembly code h](j)}(h ``htable``h]j)}(hjA=h]hhtable}(hjC=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./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}(hjZ=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV=hK-hjW=ubah}(h]h ]h"]h$]h&]uh1jhj;=ubeh}(h]h ]h"]h$]h&]uh1jhjV=hK-hj8=ubj)}(h*``h_raw`` The hash key H, in GHASH format h](j)}(h ``h_raw``h]j)}(hjz=h]hh_raw}(hj|=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK1hjt=ubj)}(hhh]h)}(hThe hash key H, in GHASH formath]hThe hash key H, in GHASH format}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hK1hj=ubah}(h]h ]h"]h$]h&]uh1jhjt=ubeh}(h]h ]h"]h$]h&]uh1jhj=hK1hj8=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&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK3hj=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:34: ./include/crypto/gf128hash.hhK4hj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hK3hj8=ubeh}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(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:34: ./include/crypto/gf128hash.hhK7hj":hhubh)}(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:34: ./include/crypto/gf128hash.hhK'hj":hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_key (C struct) c.polyval_keyhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h polyval_keyh]j)}(hstruct polyval_keyh](j!)}(hj$h]hstruct}(hj4>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj0>hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK,ubj3)}(h h]h }(hjB>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0>hhhjA>hK,ubjD)}(h polyval_keyh]jJ)}(hj.>h]h polyval_key}(hjT>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjP>ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj0>hhhjA>hK,ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj,>hhhjA>hK,ubah}(h]j'>ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjA>hK,hj)>hhubjv)}(hhh]h)}(hPrepared key for POLYVALh]hPrepared key for POLYVAL}(hjv>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK8hjs>hhubah}(h]h ]h"]h$]h&]uh1juhj)>hhhjA>hK,ubeh}(h]h ](jstructeh"]h$]h&]jjjj>jj>jjjuh1jhhhj":hNhNubj)}(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}(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:34: ./include/crypto/gf128hash.hhKubj)}(hstruct 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; };h]hstruct 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; };}hj>sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.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:34: ./include/crypto/gf128hash.hhKFhj>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:34: ./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:34: ./include/crypto/gf128hash.hhKGhj?ubj)}(hhh]h)}(hThe hash key Hh]hThe hash key H}(hj5?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKHhj2?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhj1?hKGhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(h**Description**h]j)}(hj_?h]h Description}(hja?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]?ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKKhj":hhubh)}(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.}(hju?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK9hj":hhubh)}(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.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK=hj":hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_ctx (C struct) c.ghash_ctxhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h ghash_ctxh]j)}(hstruct ghash_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:34: ./include/crypto/gf128hash.hhKCubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?hhhj?hKCubjD)}(h ghash_ctxh]jJ)}(hj?h]h ghash_ctx}(hj?hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj?hhhj?hKCubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj?hhhj?hKCubah}(h]j?ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj?hKChj?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:34: ./include/crypto/gf128hash.hhKMhj?hhubah}(h]h ]h"]h$]h&]uh1juhj?hhhj?hKCubeh}(h]h ](jstructeh"]h$]h&]jjjj@jj@jjjuh1jhhhj":hNhNubj)}(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:34: ./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:34: ./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:34: ./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&]uh1jhjY@ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKPhjU@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.}(hjt@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKOhjq@ubah}(h]h ]h"]h$]h&]uh1jhjU@ubeh}(h]h ]h"]h$]h&]uh1jhjp@hKPhjR@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:34: ./include/crypto/gf128hash.hhKRhj@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.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKQhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hKRhjR@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:34: ./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:34: ./include/crypto/gf128hash.hhKShj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hKRhjR@ubeh}(h]h ]h"]h$]h&]uh1jhj @ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_ctx (C struct) c.polyval_ctxhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h polyval_ctxh]j)}(hstruct polyval_ctxh](j!)}(hj$h]hstruct}(hj)AhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj%Ahhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKYubj3)}(h h]h }(hj7AhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%Ahhhj6AhKYubjD)}(h polyval_ctxh]jJ)}(hj#Ah]h polyval_ctx}(hjIAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEAubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj%Ahhhj6AhKYubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj!Ahhhj6AhKYubah}(h]jAah ](jmjneh"]h$]h&]jrjs)jthuh1jhj6AhKYhjAhhubjv)}(hhh]h)}(h%Context for computing a POLYVAL valueh]h%Context for computing a POLYVAL value}(hjkAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK[hjhAhhubah}(h]h ]h"]h$]h&]uh1juhjAhhhj6AhKYubeh}(h]h ](jstructeh"]h$]h&]jjjjAjjAjjjuh1jhhhj":hNhNubj)}(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}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubh:}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK_hjAubj)}(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; };}hjAsbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKahjAubh)}(h **Members**h]j)}(hjAh]hMembers}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKghjAubj)}(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)}(hjAh]hkey}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK^hjAubj)}(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.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK]hjAubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhjAhK^hjAubj)}(h``acc`` The accumulator h](j)}(h``acc``h]j)}(hjBh]hacc}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK_hj Bubj)}(hhh]h)}(hThe accumulatorh]hThe accumulator}(hj+BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'BhK_hj(Bubah}(h]h ]h"]h$]h&]uh1jhj Bubeh}(h]h ]h"]h$]h&]uh1jhj'BhK_hjAubj)}(hK``partial`` Number of data bytes processed so far modulo POLYVAL_BLOCK_SIZEh](j)}(h ``partial``h]j)}(hjKBh]hpartial}(hjMBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIBubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK_hjEBubj)}(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}(hjdBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK`hjaBubah}(h]h ]h"]h$]h&]uh1jhjEBubeh}(h]h ]h"]h$]h&]uh1jhj`BhK_hjAubeh}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_preparekey (C function)c.ghash_preparekeyhNtauh1hhj":hhhNhNubj)}(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}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBhhhjBhKhubjD)}(hghash_preparekeyh]jJ)}(hghash_preparekeyh]hghash_preparekey}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjBhhhjBhKhubj)}(h;(struct ghash_key *key, const u8 raw_key[GHASH_BLOCK_SIZE])h](j)}(hstruct ghash_key *keyh](j!)}(hj$h]hstruct}(hjBhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjBubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubh)}(hhh]jJ)}(h ghash_keyh]h ghash_key}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjCmodnameN classnameNj j)}j]j)}j jBsbc.ghash_preparekeyasbuh1hhjBubj3)}(h h]h }(hj ChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubj*)}(hj-h]h*}(hj.ChhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjBubjJ)}(hkeyh]hkey}(hj;ChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubj)}(h"const u8 raw_key[GHASH_BLOCK_SIZE]h](j!)}(hjh]hconst}(hjTChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjPCubj3)}(h h]h }(hjaChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPCubh)}(hhh]jJ)}(hu8h]hu8}(hjrChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjoCubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjtCmodnameN classnameNj j)}j]jCc.ghash_preparekeyasbuh1hhjPCubj3)}(h h]h }(hjChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPCubjJ)}(hraw_keyh]hraw_key}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjPCubj*)}(hj9 h]h[}(hjChhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjPCubh)}(hhh]jJ)}(hGHASH_BLOCK_SIZEh]hGHASH_BLOCK_SIZE}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjCubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjCmodnameN classnameNj j)}j]jCc.ghash_preparekeyasbuh1hhjPCubj*)}(hj h]h]}(hjChhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjPCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubeh}(h]h ]h"]h$]h&]hhuh1jhjBhhhjBhKhubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjBhhhjBhKhubah}(h]jBah ](jmjneh"]h$]h&]jrjs)jthuh1jhjBhKhhjBhhubjv)}(hhh]h)}(hPrepare a GHASH keyh]hPrepare a GHASH key}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhhjDhhubah}(h]h ]h"]h$]h&]uh1juhjBhhhjBhKhubeh}(h]h ](jfunctioneh"]h$]h&]jjjjDjjDjjjuh1jhhhj":hNhNubj)}(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%Dh]h Parameters}(hj'DhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#Dubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKlhjDubj)}(hhh](j)}(hC``struct ghash_key *key`` (output) The key structure to initialize h](j)}(h``struct ghash_key *key``h]j)}(hjDDh]hstruct ghash_key *key}(hjFDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBDubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKihj>Dubj)}(hhh]h)}(h((output) The key structure to initializeh]h((output) The key structure to initialize}(hj]DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYDhKihjZDubah}(h]h ]h"]h$]h&]uh1jhj>Dubeh}(h]h ]h"]h$]h&]uh1jhjYDhKihj;Dubj)}(h8``const u8 raw_key[GHASH_BLOCK_SIZE]`` The raw hash key h](j)}(h&``const u8 raw_key[GHASH_BLOCK_SIZE]``h]j)}(hj}Dh]h"const u8 raw_key[GHASH_BLOCK_SIZE]}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{Dubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKjhjwDubj)}(hhh]h)}(hThe raw hash keyh]hThe raw hash key}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKjhjDubah}(h]h ]h"]h$]h&]uh1jhjwDubeh}(h]h ]h"]h$]h&]uh1jhjDhKjhj;Dubeh}(h]h ]h"]h$]h&]uh1jhjDubh)}(h**Description**h]j)}(hjDh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKlhjDubh)}(h0Initialize a GHASH key structure from a raw key.h]h0Initialize a GHASH key structure from a raw key.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKkhjDubh)}(h **Context**h]j)}(hjDh]hContext}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKmhjDubh)}(h Any context.h]h Any context.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKnhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_preparekey (C function)c.polyval_preparekeyhNtauh1hhj":hhhNhNubj)}(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}(hj$EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Ehhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKtubj3)}(h h]h }(hj3EhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj Ehhhj2EhKtubjD)}(hpolyval_preparekeyh]jJ)}(hpolyval_preparekeyh]hpolyval_preparekey}(hjEEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAEubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj Ehhhj2EhKtubj)}(h?(struct polyval_key *key, const u8 raw_key[POLYVAL_BLOCK_SIZE])h](j)}(hstruct polyval_key *keyh](j!)}(hj$h]hstruct}(hjaEhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj]Eubj3)}(h h]h }(hjnEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]Eubh)}(hhh]jJ)}(h polyval_keyh]h polyval_key}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|Eubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjEmodnameN classnameNj j)}j]j)}j jGEsbc.polyval_preparekeyasbuh1hhj]Eubj3)}(h h]h }(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]Eubj*)}(hj-h]h*}(hjEhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj]EubjJ)}(hkeyh]hkey}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]Eubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYEubj)}(h$const u8 raw_key[POLYVAL_BLOCK_SIZE]h](j!)}(hjh]hconst}(hjEhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjEubj3)}(h h]h }(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubh)}(hhh]jJ)}(hu8h]hu8}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjEmodnameN classnameNj j)}j]jEc.polyval_preparekeyasbuh1hhjEubj3)}(h h]h }(hjFhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubjJ)}(hraw_keyh]hraw_key}(hjFhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubj*)}(hj9 h]h[}(hj+FhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjEubh)}(hhh]jJ)}(hPOLYVAL_BLOCK_SIZEh]hPOLYVAL_BLOCK_SIZE}(hj;FhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8Fubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj=FmodnameN classnameNj j)}j]jEc.polyval_preparekeyasbuh1hhjEubj*)}(hj h]h]}(hjYFhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYEubeh}(h]h ]h"]h$]h&]hhuh1jhj Ehhhj2EhKtubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjEhhhj2EhKtubah}(h]jEah ](jmjneh"]h$]h&]jrjs)jthuh1jhj2EhKthjEhhubjv)}(hhh]h)}(hPrepare a POLYVAL keyh]hPrepare a POLYVAL key}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKthjFhhubah}(h]h ]h"]h$]h&]uh1juhjEhhhj2EhKtubeh}(h]h ](jfunctioneh"]h$]h&]jjjjFjjFjjjuh1jhhhj":hNhNubj)}(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)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKxhjFubj)}(hhh](j)}(hE``struct polyval_key *key`` (output) The key structure to initialize h](j)}(h``struct polyval_key *key``h]j)}(hjFh]hstruct polyval_key *key}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKuhjFubj)}(hhh]h)}(h((output) The key structure to initializeh]h((output) The key structure to initialize}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKuhjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjFhKuhjFubj)}(h:``const u8 raw_key[POLYVAL_BLOCK_SIZE]`` The raw hash key h](j)}(h(``const u8 raw_key[POLYVAL_BLOCK_SIZE]``h]j)}(hjFh]h$const u8 raw_key[POLYVAL_BLOCK_SIZE]}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKvhjFubj)}(hhh]h)}(hThe raw hash keyh]hThe raw hash key}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKvhjGubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjGhKvhjFubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hj7Gh]h Description}(hj9GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Gubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKxhjFubh)}(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.}(hjMGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKwhjFubh)}(h **Context**h]j)}(hj^Gh]hContext}(hj`GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\Gubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK{hjFubh)}(h Any context.h]h Any context.}(hjtGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhK|hjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_init (C function) c.ghash_inithNtauh1hhj":hhhNhNubj)}(hhh](j)}(hDvoid ghash_init (struct ghash_ctx *ctx, const struct ghash_key *key)h]j)}(hCvoid ghash_init(struct ghash_ctx *ctx, const struct ghash_key *key)h](j)}(hvoidh]hvoid}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGhhhjGhKubjD)}(h ghash_inith]jJ)}(h ghash_inith]h ghash_init}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjGhhhjGhKubj)}(h4(struct ghash_ctx *ctx, const struct ghash_key *key)h](j)}(hstruct ghash_ctx *ctxh](j!)}(hj$h]hstruct}(hjGhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjGubj3)}(h h]h }(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubh)}(hhh]jJ)}(h ghash_ctxh]h ghash_ctx}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjHmodnameN classnameNj j)}j]j)}j jGsb c.ghash_initasbuh1hhjGubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubj*)}(hj-h]h*}(hj,HhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjGubjJ)}(hctxh]hctx}(hj9HhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(hconst struct ghash_key *keyh](j!)}(hjh]hconst}(hjRHhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjNHubj3)}(h h]h }(hj_HhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNHubj!)}(hj$h]hstruct}(hjmHhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjNHubj3)}(h h]h }(hjzHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNHubh)}(hhh]jJ)}(h ghash_keyh]h ghash_key}(hjHhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjHmodnameN classnameNj j)}j]jH c.ghash_initasbuh1hhjNHubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNHubj*)}(hj-h]h*}(hjHhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjNHubjJ)}(hkeyh]hkey}(hjHhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubeh}(h]h ]h"]h$]h&]hhuh1jhjGhhhjGhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjGhhhjGhKubah}(h]jGah ](jmjneh"]h$]h&]jrjs)jthuh1jhjGhKhjGhhubjv)}(hhh]h)}(h,Initialize a GHASH context for a new messageh]h,Initialize a GHASH context for a new message}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjHhhubah}(h]h ]h"]h$]h&]uh1juhjGhhhjGhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjIjjIjjjuh1jhhhj":hNhNubj)}(h**Parameters** ``struct ghash_ctx *ctx`` The context to initialize ``const struct ghash_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](h)}(h**Parameters**h]j)}(hjIh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj Iubj)}(hhh](j)}(h4``struct ghash_ctx *ctx`` The context to initialize h](j)}(h``struct ghash_ctx *ctx``h]j)}(hj/Ih]hstruct ghash_ctx *ctx}(hj1IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-Iubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj)Iubj)}(hhh]h)}(hThe context to initializeh]hThe context to initialize}(hjHIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDIhKhjEIubah}(h]h ]h"]h$]h&]uh1jhj)Iubeh}(h]h ]h"]h$]h&]uh1jhjDIhKhj&Iubj)}(h``const struct ghash_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 ghash_key *key``h]j)}(hjhIh]hconst struct ghash_key *key}(hjjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfIubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjbIubj)}(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.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}IhKhj~Iubah}(h]h ]h"]h$]h&]uh1jhjbIubeh}(h]h ]h"]h$]h&]uh1jhj}IhKhj&Iubeh}(h]h ]h"]h$]h&]uh1jhj Iubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_init (C function)c.polyval_inithNtauh1hhj":hhhNhNubj)}(hhh](j)}(hJvoid polyval_init (struct polyval_ctx *ctx, const struct polyval_key *key)h]j)}(hIvoid polyval_init(struct polyval_ctx *ctx, const struct polyval_key *key)h](j)}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIhhhjIhKubjD)}(h polyval_inith]jJ)}(h polyval_inith]h polyval_init}(hjIhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjIhhhjIhKubj)}(h8(struct polyval_ctx *ctx, const struct polyval_key *key)h](j)}(hstruct polyval_ctx *ctxh](j!)}(hj$h]hstruct}(hjIhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjIubj3)}(h h]h }(hj JhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubh)}(hhh]jJ)}(h polyval_ctxh]h polyval_ctx}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjJmodnameN classnameNj j)}j]j)}j jIsbc.polyval_initasbuh1hhjIubj3)}(h h]h }(hjThe data length in bytes. Doesn’t need to be block-aligned.}(hjrShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnShKhjoSubah}(h]h ]h"]h$]h&]uh1jhjSSubeh}(h]h ]h"]h$]h&]uh1jhjnShKhjRubeh}(h]h ]h"]h$]h&]uh1jhjRubh)}(h**Description**h]j)}(hjSh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjRubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjRubh)}(h **Context**h]j)}(hjSh]hContext}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjRubh)}(h Any context.h]h Any context.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_update (C function)c.polyval_updatehNtauh1hhj":hhhNhNubj)}(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}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjShhhjThKubjD)}(hpolyval_updateh]jJ)}(hpolyval_updateh]hpolyval_update}(hj!ThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjShhhjThKubj)}(h5(struct polyval_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct polyval_ctx *ctxh](j!)}(hj$h]hstruct}(hj=ThhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj9Tubj3)}(h h]h }(hjJThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9Tubh)}(hhh]jJ)}(h polyval_ctxh]h polyval_ctx}(hj[ThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjXTubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj]TmodnameN classnameNj j)}j]j)}j j#Tsbc.polyval_updateasbuh1hhj9Tubj3)}(h h]h }(hj{ThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9Tubj*)}(hj-h]h*}(hjThhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj9TubjJ)}(hctxh]hctx}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9Tubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5Tubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hjThhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjTubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubh)}(hhh]jJ)}(hu8h]hu8}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjTmodnameN classnameNj j)}j]jwTc.polyval_updateasbuh1hhjTubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubj*)}(hj-h]h*}(hjThhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjTubjJ)}(hdatah]hdata}(hjUhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5Tubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj"UhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj$UmodnameN classnameNj j)}j]jwTc.polyval_updateasbuh1hhjUubj3)}(h h]h }(hj@UhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubjJ)}(hlenh]hlen}(hjNUhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5Tubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjThKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjShhhjThKubah}(h]jSah ](jmjneh"]h$]h&]jrjs)jthuh1jhjThKhjShhubjv)}(hhh]h)}(h*Update a POLYVAL context with message datah]h*Update a POLYVAL context with message data}(hjxUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjuUhhubah}(h]h ]h"]h$]h&]uh1juhjShhhjThKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjUjjUjjjuh1jhhhj":hNhNubj)}(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)}(hjUh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubj)}(hhh](j)}(hN``struct polyval_ctx *ctx`` The context to update; must have been initialized h](j)}(h``struct polyval_ctx *ctx``h]j)}(hjUh]hstruct polyval_ctx *ctx}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubj)}(hhh]h)}(h1The context to update; must have been initializedh]h1The context to update; must have been initialized}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjUubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hjUh]hconst u8 *data}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubj)}(hhh]h)}(hThe message datah]hThe message data}(hj VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjVhKhjUubj)}(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+Vh]h size_t len}(hj-VhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)Vubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj%Vubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hjDVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@VhKhjAVubah}(h]h ]h"]h$]h&]uh1jhj%Vubeh}(h]h ]h"]h$]h&]uh1jhj@VhKhjUubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(h**Description**h]j)}(hjfVh]h Description}(hjhVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdVubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj|VhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubh)}(h **Context**h]j)}(hjVh]hContext}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubh)}(h Any context.h]h Any context.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash_final (C function) c.ghash_finalhNtauh1hhj":hhhNhNubj)}(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}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjVhhhjVhKubjD)}(h ghash_finalh]jJ)}(h ghash_finalh]h ghash_final}(hjVhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjVubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjVhhhjVhKubj)}(h1(struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE])h](j)}(hstruct ghash_ctx *ctxh](j!)}(hj$h]hstruct}(hjWhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj Wubj3)}(h h]h }(hjWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj Wubh)}(hhh]jJ)}(h ghash_ctxh]h ghash_ctx}(hj-WhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*Wubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj/WmodnameN classnameNj j)}j]j)}j jVsb c.ghash_finalasbuh1hhj Wubj3)}(h h]h }(hjMWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj Wubj*)}(hj-h]h*}(hj[WhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj WubjJ)}(hctxh]hctx}(hjhWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Wubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hu8 out[GHASH_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjWmodnameN classnameNj j)}j]jIW c.ghash_finalasbuh1hhj}Wubj3)}(h h]h }(hjWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}WubjJ)}(houth]hout}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}Wubj*)}(hj9 h]h[}(hjWhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj}Wubh)}(hhh]jJ)}(hGHASH_BLOCK_SIZEh]hGHASH_BLOCK_SIZE}(hjWhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjWmodnameN classnameNj j)}j]jIW c.ghash_finalasbuh1hhj}Wubj*)}(hj h]h]}(hjWhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj}Wubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjVhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjVhhhjVhKubah}(h]jVah ](jmjneh"]h$]h&]jrjs)jthuh1jhjVhKhjVhhubjv)}(hhh]h)}(hFinish computing a GHASH valueh]hFinish computing a GHASH value}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjXhhubah}(h]h ]h"]h$]h&]uh1juhjVhhhjVhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-Xjj-Xjjjuh1jhhhj":hNhNubj)}(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)}(hj7Xh]h Parameters}(hj9XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Xubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubj)}(hhh](j)}(h2``struct ghash_ctx *ctx`` The context to finalize h](j)}(h``struct ghash_ctx *ctx``h]j)}(hjVXh]hstruct ghash_ctx *ctx}(hjXXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTXubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjPXubj)}(hhh]h)}(hThe context to finalizeh]hThe context to finalize}(hjoXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkXhKhjlXubah}(h]h ]h"]h$]h&]uh1jhjPXubeh}(h]h ]h"]h$]h&]uh1jhjkXhKhjMXubj)}(h.``u8 out[GHASH_BLOCK_SIZE]`` The output value h](j)}(h``u8 out[GHASH_BLOCK_SIZE]``h]j)}(hjXh]hu8 out[GHASH_BLOCK_SIZE]}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjXubj)}(hhh]h)}(hThe output valueh]hThe output value}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjXubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjXhKhjMXubeh}(h]h ]h"]h$]h&]uh1jhj1Xubh)}(h**Description**h]j)}(hjXh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubh)}(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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjXhhhNhNubj)}(h**ctx**h]hctx}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh(. So the caller does not need to do it.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubh)}(h **Context**h]j)}(hjYh]hContext}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubh)}(h Any context.h]h Any context.}(hj(YhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj1Xubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval_final (C function)c.polyval_finalhNtauh1hhj":hhhNhNubj)}(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}(hjWYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSYhhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hjfYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSYhhhjeYhKubjD)}(h polyval_finalh]jJ)}(h polyval_finalh]h polyval_final}(hjxYhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjtYubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjSYhhhjeYhKubj)}(h5(struct polyval_ctx *ctx, u8 out[POLYVAL_BLOCK_SIZE])h](j)}(hstruct polyval_ctx *ctxh](j!)}(hj$h]hstruct}(hjYhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjYubj3)}(h h]h }(hjYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYubh)}(hhh]jJ)}(h polyval_ctxh]h polyval_ctx}(hjYhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjYmodnameN classnameNj j)}j]j)}j jzYsbc.polyval_finalasbuh1hhjYubj3)}(h h]h }(hjYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYubj*)}(hj-h]h*}(hjYhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjYubjJ)}(hctxh]hctx}(hjYhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubj)}(hu8 out[POLYVAL_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj ZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj ZmodnameN classnameNj j)}j]jYc.polyval_finalasbuh1hhjZubj3)}(h h]h }(hj'ZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZubjJ)}(houth]hout}(hj5ZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZubj*)}(hj9 h]h[}(hjCZhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjZubh)}(hhh]jJ)}(hPOLYVAL_BLOCK_SIZEh]hPOLYVAL_BLOCK_SIZE}(hjSZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjPZubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjUZmodnameN classnameNj j)}j]jYc.polyval_finalasbuh1hhjZubj*)}(hj h]h]}(hjqZhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubeh}(h]h ]h"]h$]h&]hhuh1jhjSYhhhjeYhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjOYhhhjeYhKubah}(h]jJYah ](jmjneh"]h$]h&]jrjs)jthuh1jhjeYhKhjLYhhubjv)}(hhh]h)}(h Finish computing a POLYVAL valueh]h Finish computing a POLYVAL value}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZhhubah}(h]h ]h"]h$]h&]uh1juhjLYhhhjeYhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZjjZjjjuh1jhhhj":hNhNubj)}(hXi**Parameters** ``struct polyval_ctx *ctx`` The context to finalize ``u8 out[POLYVAL_BLOCK_SIZE]`` The output value **Description** If the total data length isn't a multiple of POLYVAL_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)}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZubj)}(hhh](j)}(h4``struct polyval_ctx *ctx`` The context to finalize h](j)}(h``struct polyval_ctx *ctx``h]j)}(hjZh]hstruct polyval_ctx *ctx}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZubj)}(hhh]h)}(hThe context to finalizeh]hThe context to finalize}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhKhjZubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjZhKhjZubj)}(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:34: ./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**Description**h]j)}(hjO[h]h Description}(hjQ[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM[ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZubh)}(hsIf the total data length isn't a multiple of POLYVAL_BLOCK_SIZE, then the final block is automatically zero-padded.h]huIf the total data length isn’t a multiple of POLYVAL_BLOCK_SIZE, then the final block is automatically zero-padded.}(hje[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjt[hhhNhNubj)}(h**ctx**h]hctx}(hj|[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt[ubh(. So the caller does not need to do it.}(hjt[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjZubh)}(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:34: ./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:34: ./include/crypto/gf128hash.hhKhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ghash (C function)c.ghashhNtauh1hhj":hhhNhNubj)}(hhh](j)}(h^void ghash (const struct ghash_key *key, const u8 *data, size_t len, u8 out[GHASH_BLOCK_SIZE])h]j)}(h]void ghash(const struct ghash_key *key, const u8 *data, size_t len, u8 out[GHASH_BLOCK_SIZE])h](j)}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKubj3)}(h h]h }(hj[hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[hhhj[hKubjD)}(hghashh]jJ)}(hghashh]hghash}(hj[hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj[ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj[hhhj[hKubj)}(hS(const struct ghash_key *key, const u8 *data, size_t len, u8 out[GHASH_BLOCK_SIZE])h](j)}(hconst struct ghash_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}(hj4\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj\ubj3)}(h h]h }(hjA\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubh)}(hhh]jJ)}(h ghash_keyh]h ghash_key}(hjR\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjO\ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjT\modnameN classnameNj j)}j]j)}j j[sbc.ghashasbuh1hhj\ubj3)}(h h]h }(hjr\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubj*)}(hj-h]h*}(hj\hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj\ubjJ)}(hkeyh]hkey}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\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 classnameNj j)}j]jn\c.ghashasbuh1hhj\ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubj*)}(hj-h]h*}(hj\hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj\ubjJ)}(hdatah]hdata}(hj\hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\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 classnameNj j)}j]jn\c.ghashasbuh1hhj]ubj3)}(h h]h }(hj7]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubjJ)}(hlenh]hlen}(hjE]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hu8 out[GHASH_BLOCK_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hja]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^]ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjc]modnameN classnameNj j)}j]jn\c.ghashasbuh1hhjZ]ubj3)}(h h]h }(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZ]ubjJ)}(houth]hout}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZ]ubj*)}(hj9 h]h[}(hj]hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjZ]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 classnameNj j)}j]jn\c.ghashasbuh1hhjZ]ubj*)}(hj h]h]}(hj]hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjZ]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubeh}(h]h ]h"]h$]h&]hhuh1jhj[hhhj[hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj[hhhj[hKubah}(h]j[ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj[hKhj[hhubjv)}(hhh]h)}(hCompute a GHASH valueh]hCompute a GHASH value}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj]hhubah}(h]h ]h"]h$]h&]uh1juhj[hhhj[hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj ^jj ^jjjuh1jhhhj":hNhNubj)}(hX**Parameters** ``const struct ghash_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[GHASH_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:34: ./include/crypto/gf128hash.hhKhj^ubj)}(hhh](j)}(h1``const struct ghash_key *key`` The prepared key h](j)}(h``const struct ghash_key *key``h]j)}(hj3^h]hconst struct ghash_key *key}(hj5^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhj-^ubj)}(hhh]h)}(hThe prepared keyh]hThe prepared key}(hjL^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH^hKhjI^ubah}(h]h ]h"]h$]h&]uh1jhj-^ubeh}(h]h ]h"]h$]h&]uh1jhjH^hKhj*^ubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hjl^h]hconst u8 *data}(hjn^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhKhjf^ubj)}(hhh]h)}(hThe message datah]hThe message data}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hKhj^ubah}(h]h ]h"]h$]h&]uh1jhjf^ubeh}(h]h ]h"]h$]h&]uh1jhj^hKhj*^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:34: ./include/crypto/gf128hash.hhKhj^ubj)}(hhh]h)}(hThe 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&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj^hKhj*^ubj)}(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:34: ./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^hKhj*^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:34: ./include/crypto/gf128hash.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:34: ./include/crypto/gf128hash.hhKhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj":hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j polyval (C function) c.polyvalhNtauh1hhj":hhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjZ_hhh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMubj3)}(h h]h }(hjm_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZ_hhhjl_hMubjD)}(hpolyvalh]jJ)}(hpolyvalh]hpolyval}(hj_hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{_ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjZ_hhhjl_hMubj)}(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}(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}(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 classnameNj j)}j]j)}j j_sb c.polyvalasbuh1hhj_ubj3)}(h h]h }(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ubj*)}(hj-h]h*}(hj`hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj_ubjJ)}(hkeyh]hkey}(hj`hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hj(`hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj$`ubj3)}(h h]h }(hj5`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$`ubh)}(hhh]jJ)}(hu8h]hu8}(hjF`hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjC`ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjH`modnameN classnameNj j)}j]j_ c.polyvalasbuh1hhj$`ubj3)}(h h]h }(hjd`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$`ubj*)}(hj-h]h*}(hjr`hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj$`ubjJ)}(hdatah]hdata}(hj`hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_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 classnameNj j)}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&]noemphhhuh1jhj_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 classnameNj j)}j]j_ c.polyvalasbuh1hhj`ubj3)}(h h]h }(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubjJ)}(houth]hout}(hjahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`ubj*)}(hj9 h]h[}(hjahhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj`ubh)}(hhh]jJ)}(hPOLYVAL_BLOCK_SIZEh]hPOLYVAL_BLOCK_SIZE}(hj-ahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*aubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj/amodnameN classnameNj j)}j]j_ c.polyvalasbuh1hhj`ubj*)}(hj h]h]}(hjKahhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhjZ_hhhjl_hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjV_hhhjl_hMubah}(h]jQ_ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjl_hMhjS_hhubjv)}(hhh]h)}(hCompute a POLYVAL valueh]hCompute a POLYVAL value}(hjtahhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMhjqahhubah}(h]h ]h"]h$]h&]uh1juhjS_hhhjl_hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjajjajjjuh1jhhhj":hNhNubj)}(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)}(hjah]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMhjaubj)}(hhh](j)}(h3``const struct polyval_key *key`` The prepared key h](j)}(h!``const struct polyval_key *key``h]j)}(hjah]hconst struct polyval_key *key}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMhjaubj)}(hhh]h)}(hThe prepared keyh]hThe prepared key}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMhjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjahMhjaubj)}(h$``const u8 *data`` The message data h](j)}(h``const u8 *data``h]j)}(hjah]hconst u8 *data}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMhjaubj)}(hhh]h)}(hThe message datah]hThe message data}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjbhMhjaubj)}(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'bh]h size_t len}(hj)bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%bubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:34: ./include/crypto/gf128hash.hhMhj!bubj)}(hhh]h)}(hThe data length in bytes. Doesn’t need to be block-aligned.}(hj@bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdubah}(h]h ]h"]h$]h&]uh1jhj"dubeh}(h]h ]h"]h$]h&]uh1jhj=dhK(hjcubeh}(h]h ]h"]h$]h&]uh1jhjecubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_init (C function) c.md5_inithNtauh1hhjbhhhNhNubj)}(hhh](j)}(h#void md5_init (struct md5_ctx *ctx)h]j)}(h"void md5_init(struct md5_ctx *ctx)h](j)}(hvoidh]hvoid}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~dhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK1ubj3)}(h h]h }(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~dhhhjdhK1ubjD)}(hmd5_inith]jJ)}(hmd5_inith]hmd5_init}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj~dhhhjdhK1ubj)}(h(struct md5_ctx *ctx)h]j)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjdhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjdubj3)}(h h]h }(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubh)}(hhh]jJ)}(hmd5_ctxh]hmd5_ctx}(hjdhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjdmodnameN classnameNj j)}j]j)}j jdsb c.md5_initasbuh1hhjdubj3)}(h h]h }(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubj*)}(hj-h]h*}(hj ehhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjdubjJ)}(hctxh]hctx}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubah}(h]h ]h"]h$]h&]hhuh1jhj~dhhhjdhK1ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjzdhhhjdhK1ubah}(h]judah ](jmjneh"]h$]h&]jrjs)jthuh1jhjdhK1hjwdhhubjv)}(hhh]h)}(h+Initialize an MD5 context for a new messageh]h+Initialize an MD5 context for a new message}(hjBehhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK1hj?ehhubah}(h]h ]h"]h$]h&]uh1juhjwdhhhjdhK1ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZejjZejjjuh1jhhhjbhNhNubj)}(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)}(hjdeh]h Parameters}(hjfehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbeubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK5hj^eubj)}(hhh]j)}(h2``struct md5_ctx *ctx`` the context to initialize h](j)}(h``struct md5_ctx *ctx``h]j)}(hjeh]hstruct md5_ctx *ctx}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK2hj}eubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehK2hjeubah}(h]h ]h"]h$]h&]uh1jhj}eubeh}(h]h ]h"]h$]h&]uh1jhjehK2hjzeubah}(h]h ]h"]h$]h&]uh1jhj^eubh)}(h**Description**h]j)}(hjeh]h Description}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK4hj^eubh)}(hBIf you don't need incremental computation, consider md5() instead.h]hDIf you don’t need incremental computation, consider md5() instead.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK3hj^eubh)}(h **Context**h]j)}(hjeh]hContext}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK5hj^eubh)}(h Any context.h]h Any context.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK6hj^eubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_update (C function) c.md5_updatehNtauh1hhjbhhhNhNubj)}(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}(hj*fhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&fhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK;ubj3)}(h h]h }(hj9fhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&fhhhj8fhK;ubjD)}(h md5_updateh]jJ)}(h md5_updateh]h md5_update}(hjKfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGfubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj&fhhhj8fhK;ubj)}(h1(struct md5_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hjgfhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjcfubj3)}(h h]h }(hjtfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcfubh)}(hhh]jJ)}(hmd5_ctxh]hmd5_ctx}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjfmodnameN classnameNj j)}j]j)}j jMfsb c.md5_updateasbuh1hhjcfubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcfubj*)}(hj-h]h*}(hjfhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjcfubjJ)}(hctxh]hctx}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjcfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_fubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hjfhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjfubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjfubh)}(hhh]jJ)}(hu8h]hu8}(hjfhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjfmodnameN classnameNj j)}j]jf c.md5_updateasbuh1hhjfubj3)}(h h]h }(hjghhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjfubj*)}(hj-h]h*}(hj#ghhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjfubjJ)}(hdatah]hdata}(hj0ghhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_fubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjLghhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIgubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjNgmodnameN classnameNj j)}j]jf c.md5_updateasbuh1hhjEgubj3)}(h h]h }(hjjghhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEgubjJ)}(hlenh]hlen}(hjxghhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEgubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_fubeh}(h]h ]h"]h$]h&]hhuh1jhj&fhhhj8fhK;ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj"fhhhj8fhK;ubah}(h]jfah ](jmjneh"]h$]h&]jrjs)jthuh1jhj8fhK;hjfhhubjv)}(hhh]h)}(h'Update an MD5 context with message datah]h'Update an MD5 context with message data}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK;hjghhubah}(h]h ]h"]h$]h&]uh1juhjfhhhj8fhK;ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjgjjgjjjuh1jhhhjbhNhNubj)}(hX**Parameters** ``struct md5_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)}(hjgh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK?hjgubj)}(hhh](j)}(hJ``struct md5_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct md5_ctx *ctx``h]j)}(hjgh]hstruct md5_ctx *ctx}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjOhubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjnhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhhK>hjkhubah}(h]h ]h"]h$]h&]uh1jhjOhubeh}(h]h ]h"]h$]h&]uh1jhjjhhK>hjgubeh}(h]h ]h"]h$]h&]uh1jhjgubh)}(h**Description**h]j)}(hjhh]h Description}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK@hjgubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhK?hjgubh)}(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:42: ./include/crypto/md5.hhKAhjgubh)}(h Any context.h]h Any context.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKBhjgubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5_final (C function) c.md5_finalhNtauh1hhjbhhhNhNubj)}(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}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKGubj3)}(h h]h }(hj ihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhhj ihKGubjD)}(h md5_finalh]jJ)}(h md5_finalh]h md5_final}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhhj ihKGubj)}(h5(struct md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j)}(hstruct md5_ctx *ctxh](j!)}(hj$h]hstruct}(hj9ihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj5iubj3)}(h h]h }(hjFihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5iubh)}(hhh]jJ)}(hmd5_ctxh]hmd5_ctx}(hjWihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTiubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjYimodnameN classnameNj j)}j]j)}j jisb c.md5_finalasbuh1hhj5iubj3)}(h h]h }(hjwihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5iubj*)}(hj-h]h*}(hjihhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj5iubjJ)}(hctxh]hctx}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5iubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1iubj)}(hu8 out[static MD5_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjimodnameN classnameNj j)}j]jsi c.md5_finalasbuh1hhjiubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubjJ)}(houth]hout}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubj*)}(hj9 h]h[}(hjihhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjiubj!)}(hjG h]hstatic}(hjihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjiubj3)}(h h]h }(hjjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjjmodnameN classnameNj j)}j]jsi c.md5_finalasbuh1hhjiubj*)}(hj h]h]}(hj1jhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1iubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhj ihKGubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhhj ihKGubah}(h]jhah ](jmjneh"]h$]h&]jrjs)jthuh1jhj ihKGhjhhhubjv)}(hhh]h)}(h&Finish computing an MD5 message digesth]h&Finish computing an MD5 message digest}(hjZjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKGhjWjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhhj ihKGubeh}(h]h ](jfunctioneh"]h$]h&]jjjjrjjjrjjjjuh1jhhhjbhNhNubj)}(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)}(hj|jh]h Parameters}(hj~jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKKhjvjubj)}(hhh](j)}(hL``struct md5_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct md5_ctx *ctx``h]j)}(hjjh]hstruct md5_ctx *ctx}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKHhjjubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhKHhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhKHhjjubj)}(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:42: ./include/crypto/md5.hhKIhjjubj)}(hhh]h)}(h)(output) the resulting MD5 message digesth]h)(output) the resulting MD5 message digest}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhKIhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhKIhjjubeh}(h]h ]h"]h$]h&]uh1jhjvjubh)}(h**Description**h]j)}(hjkh]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj kubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKKhjvjubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj%khhhNhNubj)}(h**ctx**h]hctx}(hj-khhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%kubh(. So the caller does not need to do it.}(hj%khhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKJhjvjubh)}(h **Context**h]j)}(hjHkh]hContext}(hjJkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFkubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKLhjvjubh)}(h Any context.h]h Any context.}(hj^khhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKMhjvjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j md5 (C function)c.md5hNtauh1hhjbhhhNhNubj)}(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}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKRubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkhhhjkhKRubjD)}(hmd5h]jJ)}(hmd5h]hmd5}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjkubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjkhhhjkhKRubj)}(h<(const u8 *data, size_t len, u8 out[static MD5_DIGEST_SIZE])h](j)}(hconst u8 *datah](j!)}(hjh]hconst}(hjkhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjkubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubh)}(hhh]jJ)}(hu8h]hu8}(hjkhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjkubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjkmodnameN classnameNj j)}j]j)}j jksbc.md5asbuh1hhjkubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubj*)}(hj-h]h*}(hjlhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjkubjJ)}(hdatah]hdata}(hj#lhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjkubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj?lhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{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**Description**h]j)}(hj`{h]h Description}(hjb{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^{ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjzubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjv{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjzubh)}(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:42: ./include/crypto/md5.hhKhjzubh)}(h Any context.h]h Any context.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5_final (C function)c.hmac_md5_finalhNtauh1hhjbhhhNhNubj)}(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}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{hhhj{hKubjD)}(hhmac_md5_finalh]jJ)}(hhmac_md5_finalh]hhmac_md5_final}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj{hhhj{hKubj)}(h:(struct hmac_md5_ctx *ctx, u8 out[static MD5_DIGEST_SIZE])h](j)}(hstruct hmac_md5_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_md5_ctxh]h hmac_md5_ctx}(hj'|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj$|ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj)|modnameN classnameNj j)}j]j)}j j{sbc.hmac_md5_finalasbuh1hhj|ubj3)}(h h]h }(hjG|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubj*)}(hj-h]h*}(hjU|hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj|ubjJ)}(hctxh]hctx}(hjb|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|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 classnameNj j)}j]jC|c.hmac_md5_finalasbuh1hhjw|ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjw|ubjJ)}(houth]hout}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjw|ubj*)}(hj9 h]h[}(hj|hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjw|ubj!)}(hjG h]hstatic}(hj|hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjw|ubj3)}(h h]h }(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjw|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 classnameNj j)}j]jC|c.hmac_md5_finalasbuh1hhjw|ubj*)}(hj h]h]}(hj}hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjw|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubeh}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj{hhhj{hKubah}(h]j{ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj{hKhj{hhubjv)}(hhh]h)}(h"Finish computing an HMAC-MD5 valueh]h"Finish computing an HMAC-MD5 value}(hj*}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhj'}hhubah}(h]h ]h"]h$]h&]uh1juhj{hhhj{hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjB}jjB}jjjuh1jhhhjbhNhNubj)}(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)}(hjL}h]h Parameters}(hjN}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ}ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjF}ubj)}(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)}(hjk}h]hstruct hmac_md5_ctx *ctx}(hjm}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji}ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhje}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}hKhj}ubah}(h]h ]h"]h$]h&]uh1jhje}ubeh}(h]h ]h"]h$]h&]uh1jhj}hKhjb}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)}(hj}h]hu8 out[static MD5_DIGEST_SIZE]}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./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&]uh1hhj}hKhj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhj}hKhjb}ubeh}(h]h ]h"]h$]h&]uh1jhjF}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:42: ./include/crypto/md5.hhKhjF}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}(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&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjF}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:42: ./include/crypto/md5.hhKhjF}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:42: ./include/crypto/md5.hhKhjF}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_md5 (C function) c.hmac_md5hNtauh1hhjbhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjY~hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKubj3)}(h h]h }(hjl~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjY~hhhjk~hKubjD)}(hhmac_md5h]jJ)}(hhmac_md5h]hhmac_md5}(hj~~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjz~ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjY~hhhjk~hKubj)}(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}(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}(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 classnameNj j)}j]j)}j j~sb c.hmac_md5asbuh1hhj~ubj3)}(h h]h }(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj~ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj~ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~ubj)}(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 classnameNj j)}j]j~ c.hmac_md5asbuh1hhj#ubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubj*)}(hj-h]h*}(hjqhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj#ubjJ)}(hdatah]hdata}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~ubj)}(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 classnameNj j)}j]j~ c.hmac_md5asbuh1hhjubj3)}(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&]noemphhhuh1jhj~ubj)}(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 classnameNj j)}j]j~ c.hmac_md5asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj)hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hMD5_DIGEST_SIZEh]hMD5_DIGEST_SIZE}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjImodnameN classnameNj j)}j]j~ c.hmac_md5asbuh1hhjubj*)}(hj h]h]}(hjehhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~ubeh}(h]h ]h"]h$]h&]hhuh1jhjY~hhhjk~hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjU~hhhjk~hKubah}(h]jP~ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjk~hKhjR~hhubjv)}(hhh]h)}(h2Compute HMAC-MD5 in one shot, using a prepared keyh]h2Compute HMAC-MD5 in one shot, using a prepared key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjR~hhhjk~hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjbhNhNubj)}(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)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubj)}(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:42: ./include/crypto/md5.hhKhjɀubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjɀubeh}(h]h ]h"]h$]h&]uh1jhjhKhjƀubj)}(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&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjƀubj)}(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&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhj;ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKhjƀ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)}(hjzh]hu8 out[static MD5_DIGEST_SIZE]}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjtubj)}(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&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhKhjƀ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&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubh)}(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:42: ./include/crypto/md5.hhKhjubh)}(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:42: ./include/crypto/md5.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !hmac_md5_usingrawkey (C function)c.hmac_md5_usingrawkeyhNtauh1hhjbhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj/hKubjD)}(hhmac_md5_usingrawkeyh]jJ)}(hhmac_md5_usingrawkeyh]hhmac_md5_usingrawkey}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj/hKubj)}(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 hjZubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZubh)}(hhh]jJ)}(hu8h]hu8}(hj|hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj~modnameN classnameNj j)}j]j)}j jDsbc.hmac_md5_usingrawkeyasbuh1hhjZubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjZubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(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 classnameNj j)}j]jc.hmac_md5_usingrawkeyasbuh1hhĵubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hĵubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhĵubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(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}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj8modnameN classnameNj j)}j]jc.hmac_md5_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjbhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjohhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(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 classnameNj j)}j]jc.hmac_md5_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&]noemphhhuh1jhjVubj)}(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 classnameNj j)}j]jc.hmac_md5_usingrawkeyasbuh1hhj̃ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj̃ubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj̃ubj*)}(hj9 h]h[}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj̃ubj!)}(hjG h]hstatic}(hjhhhNhNubah}(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}(hj8hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj:modnameN classnameNj j)}j]jc.hmac_md5_usingrawkeyasbuh1hhj̃ubj*)}(hj h]h]}(hjVhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj̃ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj/hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj/hKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj/hKhjhhubjv)}(hhh]h)}(h-Compute HMAC-MD5 in one shot, using a raw keyh]h-Compute HMAC-MD5 in one shot, using a raw key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhj|hhubah}(h]h ]h"]h$]h&]uh1juhjhhhj/hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjbhNhNubj)}(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)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubj)}(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}(hj„hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubj)}(hhh]h)}(hthe raw HMAC-MD5 keyh]hthe raw HMAC-MD5 key}(hjلhhhNhNubah}(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)}(hjh]hsize_t raw_key_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./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.%}(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)}(hj2h]hconst u8 *data}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhj,ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKhjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhKhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjkh]hsize_t data_len}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjeubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hI``u8 out[static MD5_DIGEST_SIZE]`` (output) the resulting HMAC-MD5 value h](j)}(h"``u8 out[static MD5_DIGEST_SIZE]``h]j)}(hjh]hu8 out[static MD5_DIGEST_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj߅h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj݅ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubh)}(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:42: ./include/crypto/md5.hhKhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:42: ./include/crypto/md5.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubeh}(h]md5ah ]h"]md5ah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(hNHh]hNH}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhK-ubh)}(hThis API provides support for the NH universal hash function. This algorithm is used only as an internal component of other algorithms.h]hThis API provides support for the NH universal hash function. This algorithm is used only as an internal component of other algorithms.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj:hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j nh (C function)c.nhhNtauh1hhj:hhhNhNubj)}(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}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnhhhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK!ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnhhhjhK!ubjD)}(hnhh]jJ)}(hnhh]hnh}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjnhhhjhK!ubj)}(hS(const u32 *key, const u8 *message, size_t message_len, __le64 hash[NH_NUM_PASSES])h](j)}(hconst u32 *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)}(hu32h]hu32}(hj͆hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjʆubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjφmodnameN classnameNj j)}j]j)}j jsbc.nhasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u8 *messageh](j!)}(hjh]hconst}(hj!hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hj.hhhNhNubah}(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  reftargetjAmodnameN classnameNj j)}j]jc.nhasbuh1hhjubj3)}(h h]h }(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjkhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hmessageh]hmessage}(hjxhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t message_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.nhasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h message_lenh]h message_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h__le64 hash[NH_NUM_PASSES]h](h)}(hhh]jJ)}(h__le64h]h__le64}(hj܇hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjهubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjއmodnameN classnameNj j)}j]jc.nhasbuh1hhjՇubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjՇubjJ)}(hhashh]hhash}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjՇubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjՇubh)}(hhh]jJ)}(h NH_NUM_PASSESh]h NH_NUM_PASSES}(hj&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj(modnameN classnameNj j)}j]jc.nhasbuh1hhjՇubj*)}(hj h]h]}(hjDhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjՇubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjnhhhjhK!ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjjhhhjhK!ubah}(h]jeah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK!hjghhubjv)}(hhh]h)}(hNH hash function for Adiantumh]hNH hash function for Adiantum}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK!hjjhhubah}(h]h ]h"]h$]h&]uh1juhjghhhjhK!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj:hNhNubj)}(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)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK%hjubj)}(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)}(hjh]hconst u32 *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK#hjubj)}(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. }(hjLjhhhNhNubj)}(h**message_len**h]h message_len}(hjψhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLjubh5 + 48 bytes of it are used. This is NH_KEY_BYTES if }(hjLjhhhNhNubj)}(h**message_len**h]h message_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLjubh, has its maximum length of NH_MESSAGE_BYTES.}(hjLjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK"hjĈubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjÈhK#hjubj)}(h"``const u8 *message`` The message h](j)}(h``const u8 *message``h]j)}(hj h]hconst u8 *message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK$hjubj)}(hhh]h)}(h The messageh]h The message}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hK$hj"ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hK$hjubj)}(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)}(hjEh]hsize_t message_len}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK&hj?ubj)}(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:50: ./include/crypto/nh.hhK%hj[ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhK&hjubj)}(hA``__le64 hash[NH_NUM_PASSES]`` (output) The resulting hash value h](j)}(h``__le64 hash[NH_NUM_PASSES]``h]j)}(hjh]h__le64 hash[NH_NUM_PASSES]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK'hjyubj)}(hhh]h)}(h!(output) The resulting hash valueh]h!(output) The resulting hash value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK'hjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhjhK'hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(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:50: ./include/crypto/nh.hhK)hjubh)}(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.}(hjЉhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK)hjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj߉ubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK/hjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:50: ./include/crypto/nh.hhK/hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj:hhhNhNubeh}(h]nhah ]h"]nhah$]h&]uh1hhhhhhhhK-ubh)}(hhh](h)}(hPoly1305h]hPoly1305}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK5ubh)}(hThis API provides support for the Poly1305 universal hash function. This algorithm is used only as an internal component of other algorithms.h]hThis API provides support for the Poly1305 universal hash function. This algorithm is used only as an internal component of other algorithms.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubeh}(h]poly1305ah ]h"]poly1305ah$]h&]uh1hhhhhhhhK5ubh)}(hhh](h)}(hSHA-1h]hSHA-1}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hhhhhK=ubh)}(hThis API provides support for the SHA-1 cryptographic hash function and HMAC-SHA1. This algorithm is obsolete and is supported only for backwards compatibility.h]hThis API provides support for the SHA-1 cryptographic hash function and HMAC-SHA1. This algorithm is obsolete and is supported only for backwards compatibility.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hj<hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_ctx (C struct) c.sha1_ctxhNtauh1hhj<hhhNhNubj)}(hhh](j)}(hsha1_ctxh]j)}(hstruct sha1_ctxh](j!)}(hj$h]hstruct}(hjthhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjphhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjphhhjhKubjD)}(hsha1_ctxh]jJ)}(hjnh]hsha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjphhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjlhhhjhKubah}(h]jgah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjihhubjv)}(hhh]h)}(h(Context for hashing a message with SHA-1h]h(Context for hashing a message with SHA-1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK#hjhhubah}(h]h ]h"]h$]h&]uh1juhjihhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjΊjjΊjjjuh1jhhhj<hNhNubj)}(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}(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:67: ./include/crypto/sha1.hhK'hjҊubj)}(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:67: ./include/crypto/sha1.hhK)hjҊubh)}(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:67: ./include/crypto/sha1.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&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK%hjubj)}(hhh]h)}(hthe compression function stateh]hthe compression function state}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hK%hj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj8hK%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&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK&hjVubj)}(hhh]h)}(h number of bytes processed so farh]h number of bytes processed so far}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhK&hjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjqhK&hjubj)}(hI``buf`` partial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are validh](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:67: ./include/crypto/sha1.hhK&hjubj)}(hhh]h)}(hApartial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are validh]hApartial block buffer; bytecount % SHA1_BLOCK_SIZE bytes are valid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjubeh}(h]h ]h"]h$]h&]uh1jhjҊubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_init (C function) c.sha1_inithNtauh1hhj<hhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK/ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhK/ubjD)}(h sha1_inith]jJ)}(h sha1_inith]h sha1_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhK/ubj)}(h(struct sha1_ctx *ctx)h]j)}(hstruct sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hj,hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj(ubj3)}(h h]h }(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubh)}(hhh]jJ)}(hsha1_ctxh]hsha1_ctx}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjLmodnameN classnameNj j)}j]j)}j jsb c.sha1_initasbuh1hhj(ubj3)}(h h]h }(hjjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubj*)}(hj-h]h*}(hjxhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj(ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK/ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhK/ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK/hjhhubjv)}(hhh]h)}(h,Initialize a SHA-1 context for a new messageh]h,Initialize a SHA-1 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK/hjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhK/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjjnjjjjuh1jhhhj<hNhNubj)}(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)}(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:67: ./include/crypto/sha1.hhK3hjˌubj)}(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:67: ./include/crypto/sha1.hhK0hjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK0hjubah}(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:67: ./include/crypto/sha1.hhK2hjˌubh)}(hCIf you don't need incremental computation, consider sha1() instead.h]hEIf you don’t need incremental computation, consider sha1() instead.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK1hjˌubh)}(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:67: ./include/crypto/sha1.hhK3hjˌubh)}(h Any context.h]h Any context.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK4hjˌubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_update (C function) c.sha1_updatehNtauh1hhj<hhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK9ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhK9ubjD)}(h sha1_updateh]jJ)}(h sha1_updateh]h sha1_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhK9ubj)}(h2(struct sha1_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct sha1_ctx *ctxh](j!)}(hj$h]hstruct}(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)}(hsha1_ctxh]hsha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsb c.sha1_updateasbuh1hhjЍubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjЍubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjЍubjJ)}(hctxh]hctx}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjЍubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj̍ubj)}(hconst u8 *datah](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 classnameNj j)}j]j c.sha1_updateasbuh1hhjBubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjBubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj̍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 classnameNj j)}j]j c.sha1_updateasbuh1hhjubj3)}(h h]h }(hj׎hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj̍ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK9ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhK9ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhK9hjhhubjv)}(hhh]h)}(h(Update a SHA-1 context with message datah]h(Update a SHA-1 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK9hj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhK9ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'jj'jjjuh1jhhhj<hNhNubj)}(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)}(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:67: ./include/crypto/sha1.hhK=hj+ubj)}(hhh](j)}(hK``struct sha1_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha1_ctx *ctx``h]j)}(hjPh]hstruct sha1_ctx *ctx}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK:hjJubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehK:hjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehK:hjGubj)}(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:67: ./include/crypto/sha1.hhK;hjubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjGubj)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./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:67: ./include/crypto/sha1.hhK=hj+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:67: ./include/crypto/sha1.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:67: ./include/crypto/sha1.hhK@hj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1_final (C function) c.sha1_finalhNtauh1hhj<hhhNhNubj)}(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}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKEubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjehhhjwhKEubjD)}(h sha1_finalh]jJ)}(h sha1_finalh]h sha1_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjehhhjwhKEubj)}(h7(struct sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])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}(hjĐhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjƐmodnameN classnameNj j)}j]j)}j jsb c.sha1_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j c.sha1_finalasbuh1hhjubj3)}(h h]h }(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjUhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hjbhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j c.sha1_finalasbuh1hhjubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjehhhjwhKEubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjahhhjwhKEubah}(h]j\ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjwhKEhj^hhubjv)}(hhh]h)}(h'Finish computing a SHA-1 message digesth]h'Finish computing a SHA-1 message digest}(hjǑhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKEhjđhhubah}(h]h ]h"]h$]h&]uh1juhj^hhhjwhKEubeh}(h]h ](jfunctioneh"]h$]h&]jjjjߑjjߑjjjuh1jhhhj<hNhNubj)}(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:67: ./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)}(hjh]hstruct sha1_ctx *ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKFhjubj)}(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&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKFhjubj)}(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)}(hjAh]hu8 out[static SHA1_DIGEST_SIZE]}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKGhj;ubj)}(hhh]h)}(h+(output) the resulting SHA-1 message digesth]h+(output) the resulting SHA-1 message digest}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKGhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKGhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj|h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKIhjubh)}(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:67: ./include/crypto/sha1.hhKHhjubh)}(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:67: ./include/crypto/sha1.hhKJhjubh)}(h Any context.h]h Any context.}(hj˒hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha1 (C function)c.sha1hNtauh1hhj<hhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKPubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKPubjD)}(hsha1h]jJ)}(hsha1h]hsha1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKPubj)}(h=(const u8 *data, size_t len, u8 out[static SHA1_DIGEST_SIZE])h](j)}(hconst u8 *datah](j!)}(hjh]hconst}(hj7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hu8h]hu8}(hjUhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjWmodnameN classnameNj j)}j]j)}j jsbc.sha1asbuh1hhj3ubj3)}(h h]h }(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj3ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/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 classnameNj j)}j]jqc.sha1asbuh1hhjubj3)}(h h]h }(hjʓhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjؓhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/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 classnameNj j)}j]jqc.sha1asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hj.hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj;hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjYhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj[modnameN classnameNj j)}j]jqc.sha1asbuh1hhjubj*)}(hj h]h]}(hjwhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKPubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKPubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKPhjhhubjv)}(hhh]h)}(h(Compute SHA-1 message digest in one shoth]h(Compute SHA-1 message digest in one shot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKPhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKPubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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)}(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:67: ./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&]uh1jhjߔubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKQhj۔ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKQhjubah}(h]h ]h"]h$]h&]uh1jhj۔ubeh}(h]h ]h"]h$]h&]uh1jhjhKQhjؔubj)}(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:67: ./include/crypto/sha1.hhKRhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKRhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj/hKRhjؔ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)}(hjSh]hu8 out[static SHA1_DIGEST_SIZE]}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKShjMubj)}(hhh]h)}(h+(output) the resulting SHA-1 message digesth]h+(output) the resulting SHA-1 message digest}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKShjiubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjhhKShjؔubeh}(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:67: ./include/crypto/sha1.hhKUhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_key (C struct)c.hmac_sha1_keyhNtauh1hhj<hhhNhNubj)}(hhh](j)}(h hmac_sha1_keyh]j)}(hstruct hmac_sha1_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:67: ./include/crypto/sha1.hhKZubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjϕhhhjhKZubjD)}(h hmac_sha1_keyh]jJ)}(hj͕h]h hmac_sha1_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjϕhhhjhKZubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj˕hhhjhKZubah}(h]jƕah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKZhjȕhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA1h]hPrepared key for HMAC-SHA1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKZhjhhubah}(h]h ]h"]h$]h&]uh1juhjȕhhhjhKZubeh}(h]h ](jstructeh"]h$]h&]jjjj-jj-jjjuh1jhhhj<hNhNubj)}(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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK^hj1ubj)}(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; };}hjRsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK`hj1ubh)}(h **Members**h]j)}(hjch]hMembers}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKehj1ubj)}(hhh](j)}(h``istate`` private h](j)}(h ``istate``h]j)}(hjh]histate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK\hj|ubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK\hjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhK\hjyubj)}(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:67: ./include/crypto/sha1.hhK\hjubj)}(hhh]h)}(hprivateh]hprivate}(hjԖhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK]hjіubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjЖhK\hjyubeh}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_ctx (C struct)c.hmac_sha1_ctxhNtauh1hhj<hhhNhNubj)}(hhh](j)}(h hmac_sha1_ctxh]j)}(hstruct hmac_sha1_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKcubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj"hKcubjD)}(h hmac_sha1_ctxh]jJ)}(hjh]h hmac_sha1_ctx}(hj5hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj"hKcubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj"hKcubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj"hKchj hhubjv)}(hhh]h)}(h,Context for computing HMAC-SHA1 of a messageh]h,Context for computing HMAC-SHA1 of a message}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKdhjThhubah}(h]h ]h"]h$]h&]uh1juhj hhhj"hKcubeh}(h]h ](jstructeh"]h$]h&]jjjjojjojjjuh1jhhhj<hNhNubj)}(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}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh:}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhhjsubj)}(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; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKjhjsubh)}(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:67: ./include/crypto/sha1.hhKohjsubj)}(hhh](j)}(h``sha_ctx`` private h](j)}(h ``sha_ctx``h]j)}(hjėh]hsha_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:67: ./include/crypto/sha1.hhKfhjubj)}(hhh]h)}(hprivateh]hprivate}(hjݗhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjٗhKfhjڗubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjٗhKfhjubj)}(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:67: ./include/crypto/sha1.hhKfhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKfhjubeh}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !hmac_sha1_preparekey (C function)c.hmac_sha1_preparekeyhNtauh1hhj<hhhNhNubj)}(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}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKnubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjShhhjehKnubjD)}(hhmac_sha1_preparekeyh]jJ)}(hhmac_sha1_preparekeyh]hhmac_sha1_preparekey}(hjxhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjtubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjShhhjehKnubj)}(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}(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_keyh]h hmac_sha1_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jzsbc.hmac_sha1_preparekeyasbuh1hhjubj3)}(h h]h }(hjҘhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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&]uh1jIhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj&modnameN classnameNj j)}j]jΘc.hmac_sha1_preparekeyasbuh1hhjubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjPhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjyhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj{modnameN classnameNj j)}j]jΘc.hmac_sha1_preparekeyasbuh1hhjrubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubjJ)}(h raw_key_lenh]h raw_key_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjehKnubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjOhhhjehKnubah}(h]jJah ](jmjneh"]h$]h&]jrjs)jthuh1jhjehKnhjLhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA1h]hPrepare a key for HMAC-SHA1}(hjϙhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKnhj̙hhubah}(h]h ]h"]h$]h&]uh1juhjLhhhjehKnubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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:67: ./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)}(hjh]hstruct 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:67: ./include/crypto/sha1.hhKohj ubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKohj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hKohjubj)}(h,``const u8 *raw_key`` the raw HMAC-SHA1 key h](j)}(h``const u8 *raw_key``h]j)}(hjIh]hconst u8 *raw_key}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKphjCubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hKphj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hKphjubj)}(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:67: ./include/crypto/sha1.hhKqhj|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&]uh1hhjhKqhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhKqhjubeh}(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:67: ./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.}(hjӚhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./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:67: ./include/crypto/sha1.hhKvhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKvhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_init (C function)c.hmac_sha1_inithNtauh1hhj<hhhNhNubj)}(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}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK|ubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%hhhj7hK|ubjD)}(hhmac_sha1_inith]jJ)}(hhmac_sha1_inith]hhmac_sha1_init}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjFubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj%hhhj7hK|ubj)}(h<(struct hmac_sha1_ctx *ctx, const struct hmac_sha1_key *key)h](j)}(hstruct hmac_sha1_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 hmac_sha1_ctxh]h hmac_sha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jLsbc.hmac_sha1_initasbuh1hhjbubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjbubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjbubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^ubj)}(hconst struct hmac_sha1_key *keyh](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ԛ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  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha1_initasbuh1hhjԛubj3)}(h h]h }(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjԛubj*)}(hj-h]h*}(hj=hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjԛubjJ)}(hkeyh]hkey}(hjJhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjԛubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^ubeh}(h]h ]h"]h$]h&]hhuh1jhj%hhhj7hK|ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj!hhhj7hK|ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj7hK|hjhhubjv)}(hhh]h)}(h1Initialize an HMAC-SHA1 context for a new messageh]h1Initialize an HMAC-SHA1 context for a new message}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhK|hjqhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj7hK|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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)}(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:67: ./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:67: ./include/crypto/sha1.hhK}hjubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjΜhhhNhNubah}(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 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:67: ./include/crypto/sha1.hhK~hjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK~hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK~hjubeh}(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:67: ./include/crypto/sha1.hhKhjubh)}(hHIf you don't need incremental computation, consider hmac_sha1() instead.h]hJIf you don’t need incremental computation, consider hmac_sha1() instead.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubh)}(h **Context**h]j)}(hjPh]hContext}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubh)}(h Any context.h]h Any context.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'hmac_sha1_init_usingrawkey (C function)c.hmac_sha1_init_usingrawkeyhNtauh1hhj<hhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha1_init_usingrawkeyh]jJ)}(hhmac_sha1_init_usingrawkeyh]hhmac_sha1_init_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(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}(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}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.hmac_sha1_init_usingrawkeyasbuh1hhjΝubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjΝubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjΝubjJ)}(hctxh]hctx}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjΝubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjʝubj)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hjDhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj@ubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubh)}(hhh]jJ)}(hu8h]hu8}(hjbhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjdmodnameN classnameNj j)}j]j c.hmac_sha1_init_usingrawkeyasbuh1hhj@ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj@ubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjʝ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 classnameNj j)}j]j c.hmac_sha1_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj՞hhhNhNubah}(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&]noemphhhuh1jhjʝubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(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:67: ./include/crypto/sha1.hhKhj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%jj%jjjuh1jhhhj<hNhNubj)}(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)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhj)ubj)}(hhh](j)}(hF``struct hmac_sha1_ctx *ctx`` (output) the HMAC context to initialize h](j)}(h``struct hmac_sha1_ctx *ctx``h]j)}(hjNh]hstruct hmac_sha1_ctx *ctx}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjHubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchKhjEubj)}(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:67: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjEubj)}(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&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./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.}(hjٟhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj՟hKhj֟ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj՟hKhjEubeh}(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:67: ./include/crypto/sha1.hhKhj)ubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhj)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:67: ./include/crypto/sha1.hhKhj)ubh)}(h Any context.h]h Any context.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_update (C function)c.hmac_sha1_updatehNtauh1hhj<hhhNhNubj)}(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}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjvhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjchhhjuhKubjD)}(hhmac_sha1_updateh]jJ)}(hhmac_sha1_updateh]hhmac_sha1_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjchhhjuhKubj)}(h<(struct hmac_sha1_ctx *ctx, const u8 *data, size_t data_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}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjĠmodnameN classnameNj j)}j]j)}j jsbc.hmac_sha1_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj6modnameN classnameNj j)}j]jޠc.hmac_sha1_updateasbuh1hhjubj3)}(h h]h }(hjRhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj`hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjmhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jޠc.hmac_sha1_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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjchhhjuhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj_hhhjuhKubah}(h]jZah ](jmjneh"]h$]h&]jrjs)jthuh1jhjuhKhj\hhubjv)}(hhh]h)}(h-Update an HMAC-SHA1 context with message datah]h-Update an HMAC-SHA1 context with message data}(hjߡhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjܡhhubah}(h]h ]h"]h$]h&]uh1juhj\hhhjuhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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)}(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:67: ./include/crypto/sha1.hhKhjubj)}(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)}(hj h]hstruct hmac_sha1_ctx *ctx}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hKhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjYh]hconst u8 *data}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjSubj)}(hhh]h)}(hthe message datah]hthe message data}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhKhjoubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjnhKhjubj)}(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:67: ./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&]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:67: ./include/crypto/sha1.hhKhjubh)}(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:67: ./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:67: ./include/crypto/sha1.hhKhjubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1_final (C function)c.hmac_sha1_finalhNtauh1hhj<hhhNhNubj)}(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}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5hhhjGhKubjD)}(hhmac_sha1_finalh]jJ)}(hhmac_sha1_finalh]hhmac_sha1_final}(hjZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjVubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj5hhhjGhKubj)}(h<(struct hmac_sha1_ctx *ctx, u8 out[static SHA1_DIGEST_SIZE])h](j)}(hstruct hmac_sha1_ctx *ctxh](j!)}(hj$h]hstruct}(hjvhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjrubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubh)}(hhh]jJ)}(h hmac_sha1_ctxh]h hmac_sha1_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j j\sbc.hmac_sha1_finalasbuh1hhjrubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubj*)}(hj-h]h*}(hj£hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjrubjJ)}(hctxh]hctx}(hjϣhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(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 classnameNj j)}j]jc.hmac_sha1_finalasbuh1hhjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hj%hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj2hhhNhNubah}(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}(hjPhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjRmodnameN classnameNj j)}j]jc.hmac_sha1_finalasbuh1hhjubj*)}(hj h]h]}(hjnhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubeh}(h]h ]h"]h$]h&]hhuh1jhj5hhhjGhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj1hhhjGhKubah}(h]j,ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjGhKhj.hhubjv)}(hhh]h)}(h#Finish computing an HMAC-SHA1 valueh]h#Finish computing an HMAC-SHA1 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhj.hhhjGhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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:67: ./include/crypto/sha1.hhKhjubj)}(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)}(hjؤh]hstruct hmac_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:67: ./include/crypto/sha1.hhKhjҤubj)}(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&]uh1jhjҤubeh}(h]h ]h"]h$]h&]uh1jhjhKhjϤubj)}(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:67: ./include/crypto/sha1.hhKhj ubj)}(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&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhjϤubeh}(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:67: ./include/crypto/sha1.hhKhjubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjbhhhNhNubj)}(h**ctx**h]hctx}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh(. So the caller does not need to do it.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./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:67: ./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:67: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha1 (C function) c.hmac_sha1hNtauh1hhj<hhhNhNubj)}(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}(hjʥhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjƥhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hj٥hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjƥhhhjإhKubjD)}(h hmac_sha1h]jJ)}(h hmac_sha1h]h hmac_sha1}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjƥhhhjإhKubj)}(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}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj!)}(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)}(h hmac_sha1_keyh]h hmac_sha1_key}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjBmodnameN classnameNj j)}j]j)}j jsb c.hmac_sha1asbuh1hhjubj3)}(h h]h }(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjnhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j\ c.hmac_sha1asbuh1hhjubj3)}(h h]h }(hjЦhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjަhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j\ c.hmac_sha1asbuh1hhjubj3)}(h h]h }(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjOhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjQmodnameN classnameNj j)}j]j\ c.hmac_sha1asbuh1hhjHubj3)}(h h]h }(hjmhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHubjJ)}(houth]hout}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjHubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjHubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjHubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j\ c.hmac_sha1asbuh1hhjHubj*)}(hj h]h]}(hjҧhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjƥhhhjإhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj¥hhhjإhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjإhKhjhhubjv)}(hhh]h)}(h3Compute HMAC-SHA1 in one shot, using a prepared keyh]h3Compute HMAC-SHA1 in one shot, using a prepared key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjإhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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:67: ./include/crypto/sha1.hhKhjubj)}(hhh](j)}(h:``const struct hmac_sha1_key *key`` the prepared HMAC key h](j)}(h#``const struct hmac_sha1_key *key``h]j)}(hj<h]hconst struct 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:67: ./include/crypto/sha1.hhKhj6ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhKhj3ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjuh]hconst u8 *data}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjoubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhKhj3ubj)}(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:67: ./include/crypto/sha1.hhKhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjèhKhj3ubj)}(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:67: ./include/crypto/sha1.hhKhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj3ubeh}(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:67: ./include/crypto/sha1.hhKhjubh)}(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().}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubh)}(h **Context**h]j)}(hjIh]hContext}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubh)}(h Any context.h]h Any context.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "hmac_sha1_usingrawkey (C function)c.hmac_sha1_usingrawkeyhNtauh1hhj<hhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha1_usingrawkeyh]jJ)}(hhmac_sha1_usingrawkeyh]hhmac_sha1_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(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}(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 classnameNj j)}j]j)}j jsbc.hmac_sha1_usingrawkeyasbuh1hhjǩubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjǩubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjǩubjJ)}(hraw_keyh]hraw_key}(hj$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjǩubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjé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  reftargetjBmodnameN classnameNj j)}j]jc.hmac_sha1_usingrawkeyasbuh1hhj9ubj3)}(h h]h }(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubjJ)}(h raw_key_lenh]h raw_key_len}(hjlhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjé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 classnameNj j)}j]jc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjϪhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjܪhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjéubj)}(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 classnameNj j)}j]jc.hmac_sha1_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hj$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjéubj)}(hu8 out[static SHA1_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjBmodnameN classnameNj j)}j]jc.hmac_sha1_usingrawkeyasbuh1hhj9ubj3)}(h h]h }(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubjJ)}(houth]hout}(hjlhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubj*)}(hj9 h]h[}(hjzhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj9ubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj9ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubh)}(hhh]jJ)}(hSHA1_DIGEST_SIZEh]hSHA1_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha1_usingrawkeyasbuh1hhj9ubj*)}(hj h]h]}(hjëhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjéubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(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:67: ./include/crypto/sha1.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhj<hNhNubj)}(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)}(hjh]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:67: ./include/crypto/sha1.hhKhjubj)}(hhh](j)}(h,``const u8 *raw_key`` the raw HMAC-SHA1 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:67: ./include/crypto/sha1.hhKhj'ubj)}(hhh]h)}(hthe raw HMAC-SHA1 keyh]hthe raw HMAC-SHA1 key}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhKhj$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)}(hjfh]hsize_t raw_key_len}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./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.}(hjhhhNhNubah}(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)}(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:67: ./include/crypto/sha1.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&]uh1jhjhKhj$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:67: ./include/crypto/sha1.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&]uh1jhjhKhj$ubj)}(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:67: ./include/crypto/sha1.hhKhj ubj)}(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&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhj$ubeh}(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:67: ./include/crypto/sha1.hhKhjubh)}(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.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:67: ./include/crypto/sha1.hhKhjubh)}(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:67: ./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:67: ./include/crypto/sha1.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj<hhhNhNubeh}(h]sha-1ah ]h"]sha-1ah$]h&]uh1hhhhhhhhK=ubh)}(hhh](h)}(hSHA-2h]hSHA-2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKFubh)}(hThis API provides support for the SHA-2 family of cryptographic hash functions, including SHA-224, SHA-256, SHA-384, and SHA-512. This also includes their corresponding HMACs: HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, and HMAC-SHA512.h]hThis API provides support for the SHA-2 family of cryptographic hash functions, including SHA-224, SHA-256, SHA-384, and SHA-512. This also includes their corresponding HMACs: HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, and HMAC-SHA512.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224_ctx (C struct) c.sha224_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h sha224_ctxh]j)}(hstruct sha224_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:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjۭhhhjhKubjD)}(h sha224_ctxh]jJ)}(hj٭h]h sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjۭhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj׭hhhjhKubah}(h]jҭah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjԭhhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-224h]h*Context for hashing a message with SHA-224}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjԭhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj9jj9jjjuh1jhhhjhNhNubj)}(hk**Definition**:: struct sha224_ctx { struct __sha256_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubh:}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj=ubj)}(h3struct sha224_ctx { struct __sha256_ctx ctx; };h]h3struct sha224_ctx { struct __sha256_ctx ctx; };}hj^sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj=ubh)}(h **Members**h]j)}(hjoh]hMembers}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj=ubj)}(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:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224_init (C function) c.sha224_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h)void sha224_init (struct sha224_ctx *ctx)h]j)}(h(void sha224_init(struct sha224_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(h sha224_inith]jJ)}(h sha224_inith]h sha224_init}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(h(struct sha224_ctx *ctx)h]j)}(hstruct sha224_ctx *ctxh](j!)}(hj$h]hstruct}(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)}(h sha224_ctxh]h sha224_ctx}(hjChhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjEmodnameN classnameNj j)}j]j)}j j sb c.sha224_initasbuh1hhj!ubj3)}(h h]h }(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubj*)}(hj-h]h*}(hjqhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj!ubjJ)}(hctxh]hctx}(hj~hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jۮah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjݮhhubjv)}(hhh]h)}(h.Initialize a SHA-224 context for a new messageh]h.Initialize a SHA-224 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjݮhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct sha224_ctx *ctx`` the context to initialize **Description** If you don't need incremental computation, consider 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:76: ./include/crypto/sha2.hhKhjįubj)}(hhh]j)}(h5``struct sha224_ctx *ctx`` the context to initialize h](j)}(h``struct sha224_ctx *ctx``h]j)}(hjh]hstruct 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:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(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:76: ./include/crypto/sha2.hhKhjįubh)}(hEIf you don't need incremental computation, consider sha224() instead.h]hGIf you don’t need incremental computation, consider sha224() instead.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjįubh)}(h **Context**h]j)}(hjKh]hContext}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjįubh)}(h Any context.h]h Any context.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjįubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224_update (C function)c.sha224_updatehNtauh1hhjhhhNhNubj)}(hhh](j)}(hGvoid sha224_update (struct sha224_ctx *ctx, const u8 *data, size_t len)h]j)}(hFvoid sha224_update(struct sha224_ctx *ctx, const u8 *data, size_t len)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(h sha224_updateh]jJ)}(h sha224_updateh]h sha224_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(h4(struct sha224_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct sha224_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 sha224_ctxh]h sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.sha224_updateasbuh1hhjɰubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjɰubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjɰubjJ)}(hctxh]hctx}(hj&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjɰubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjŰubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj;ubj3)}(h h]h }(hjLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;ubh)}(hhh]jJ)}(hu8h]hu8}(hj]hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj_modnameN classnameNj j)}j]jc.sha224_updateasbuh1hhj;ubj3)}(h h]h }(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj;ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjŰ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 classnameNj j)}j]jc.sha224_updateasbuh1hhjubj3)}(h h]h }(hjбhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjޱhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjŰubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h*Update a SHA-224 context with message datah]h*Update a SHA-224 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct sha224_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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj$ubj)}(hhh](j)}(hM``struct sha224_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sha224_ctx *ctx``h]j)}(hjIh]hstruct sha224_ctx *ctx}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjCubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hKhj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hKhj@ubj)}(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:76: ./include/crypto/sha2.hhKhj|ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj@ubj)}(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:76: ./include/crypto/sha2.hhKhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjвhKhj@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:76: ./include/crypto/sha2.hhKhj$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:76: ./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:76: ./include/crypto/sha2.hhKhj$ubh)}(h Any context.h]h Any context.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224_final (C function)c.sha224_finalhNtauh1hhjhhhNhNubj)}(hhh](j)}(hMvoid sha224_final (struct sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h]j)}(hLvoid sha224_final(struct sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h](j)}(hvoidh]hvoid}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjqhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^hhhjphKubjD)}(h sha224_finalh]jJ)}(h sha224_finalh]h sha224_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj^hhhjphKubj)}(h;(struct sha224_ctx *ctx, u8 out[static SHA224_DIGEST_SIZE])h](j)}(hstruct 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)}(h sha224_ctxh]h sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.sha224_finalasbuh1hhjubj3)}(h h]h }(hjݳhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jٳc.sha224_finalasbuh1hhj ubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubjJ)}(houth]hout}(hj@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubj*)}(hj9 h]h[}(hjNhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubj!)}(hjG h]hstatic}(hj[hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjyhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj{modnameN classnameNj j)}j]jٳc.sha224_finalasbuh1hhj ubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj^hhhjphKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjZhhhjphKubah}(h]jUah ](jmjneh"]h$]h&]jrjs)jthuh1jhjphKhjWhhubjv)}(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:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjWhhhjphKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjشjjشjjjuh1jhhhjhNhNubj)}(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:76: ./include/crypto/sha2.hhKhjܴubj)}(hhh](j)}(hO``struct sha224_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha224_ctx *ctx``h]j)}(hjh]hstruct 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:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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)}(hj:h]h!u8 out[static SHA224_DIGEST_SIZE]}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj4ubj)}(hhh]h)}(h-(output) the resulting SHA-224 message digesth]h-(output) the resulting SHA-224 message digest}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhKhjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhKhjubeh}(h]h ]h"]h$]h&]uh1jhjܴubh)}(h**Description**h]j)}(hjuh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjܴubh)}(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:76: ./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:76: ./include/crypto/sha2.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:76: ./include/crypto/sha2.hhKhjܴubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha224 (C function)c.sha224hNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hsha224h]jJ)}(hsha224h]hsha224}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(h?(const u8 *data, size_t len, u8 out[static SHA224_DIGEST_SIZE])h](j)}(hconst u8 *datah](j!)}(hjh]hconst}(hj0hhhNhNubah}(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}(hjNhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjPmodnameN classnameNj j)}j]j)}j jsbc.sha224asbuh1hhj,ubj3)}(h h]h }(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,ubj*)}(hj-h]h*}(hj|hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj,ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(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 classnameNj j)}j]jjc.sha224asbuh1hhjubj3)}(h h]h }(hjöhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hjѶhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(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 classnameNj j)}j]jjc.sha224asbuh1hhjubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hj'hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjRhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjTmodnameN classnameNj j)}j]jjc.sha224asbuh1hhjubj*)}(hj h]h]}(hjphhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h*Compute SHA-224 message digest in one shoth]h*Compute SHA-224 message digest in one shot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(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 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:76: ./include/crypto/sha2.hhKhjubj)}(hhh](j)}(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:76: ./include/crypto/sha2.hhKhjԷubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjԷubeh}(h]h ]h"]h$]h&]uh1jhjhKhjѷubj)}(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:76: ./include/crypto/sha2.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)}(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)}(hjLh]h!u8 out[static SHA224_DIGEST_SIZE]}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjFubj)}(hhh]h)}(h-(output) the resulting SHA-224 message digesth]h-(output) the resulting SHA-224 message digest}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahKhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahKhjѷubeh}(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:76: ./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:76: ./include/crypto/sha2.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_key (C struct)c.hmac_sha224_keyhNtauh1hhjhhhNhNubj)}(hhh](j)}(hhmac_sha224_keyh]j)}(hstruct hmac_sha224_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:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjڸhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjȸhhhjٸhKubjD)}(hhmac_sha224_keyh]jJ)}(hjƸh]hhmac_sha224_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjȸhhhjٸhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjĸhhhjٸhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjٸhKhjhhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA224h]hPrepared key for HMAC-SHA224}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjٸhKubeh}(h]h ](jstructeh"]h$]h&]jjjj&jj&jjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha224_key { struct __hmac_sha256_key key; }; **Members** ``key`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh:}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj*ubj)}(h=struct hmac_sha224_key { struct __hmac_sha256_key key; };h]h=struct hmac_sha224_key { struct __hmac_sha256_key key; };}hjKsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj*ubh)}(h **Members**h]j)}(hj\h]hMembers}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj*ubj)}(hhh]j)}(h``key`` privateh](j)}(h``key``h]j)}(hj{h]hkey}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjuubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhKhjrubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_ctx (C struct)c.hmac_sha224_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(hhmac_sha224_ctxh]j)}(hstruct hmac_sha224_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:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjѹhhhjhKubjD)}(hhmac_sha224_ctxh]jJ)}(hjϹh]hhmac_sha224_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjѹhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj͹hhhjhKubah}(h]jȹah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjʹhhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA224 of a messageh]h.Context for computing HMAC-SHA224 of a message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjʹhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj/jj/jjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha224_ctx { struct __hmac_sha256_ctx ctx; }; **Members** ``ctx`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh:}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj3ubj)}(h=struct hmac_sha224_ctx { struct __hmac_sha256_ctx ctx; };h]h=struct hmac_sha224_ctx { struct __hmac_sha256_ctx ctx; };}hjTsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj3ubh)}(h **Members**h]j)}(hjeh]hMembers}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhj3ubj)}(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:76: ./include/crypto/sha2.hhKhj~ubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj{ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha224_preparekey (C function)c.hmac_sha224_preparekeyhNtauh1hhjhhhNhNubj)}(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}(hj޺hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjںhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjںhhhjhKubjD)}(hhmac_sha224_preparekeyh]jJ)}(hhmac_sha224_preparekeyh]hhmac_sha224_preparekey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjںhhhjhKubj)}(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 hjubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_keyh]hhmac_sha224_key}(hj9hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj;modnameN classnameNj j)}j]j)}j jsbc.hmac_sha224_preparekeyasbuh1hhjubj3)}(h h]h }(hjYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjghhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jUc.hmac_sha224_preparekeyasbuh1hhjubj3)}(h h]h }(hjɻhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj׻hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jUc.hmac_sha224_preparekeyasbuh1hhjubj3)}(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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjںhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjֺhhhjhKubah}(h]jѺah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjӺhhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA224h]hPrepare a key for HMAC-SHA224}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjShhubah}(h]h ]h"]h$]h&]uh1juhjӺhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjnjjjuh1jhhhjhNhNubj)}(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)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjrubj)}(hhh](j)}(hI``struct hmac_sha224_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha224_key *key``h]j)}(hjh]hstruct 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:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure 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:76: ./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)}(hj h]hsize_t raw_key_len}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.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&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjrubh)}(h**Note**h]j)}(hjDh]hNote}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjrubh)}(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.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjrubh)}(h **Context**h]j)}(hjkh]hContext}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjrubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_init (C function)c.hmac_sha224_inithNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhKubjD)}(hhmac_sha224_inith]jJ)}(hhmac_sha224_inith]hhmac_sha224_init}(hjѽhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjͽubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhKubj)}(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 }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]j)}j jӽsbc.hmac_sha224_initasbuh1hhjubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj9hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjFhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!const struct hmac_sha224_key *keyh](j!)}(hjh]hconst}(hj_hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj[ubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ubj!)}(hj$h]hstruct}(hjzhhhNhNubah}(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 classnameNj j)}j]j'c.hmac_sha224_initasbuh1hhj[ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ubj*)}(hj-h]h*}(hjľhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj[ubjJ)}(hkeyh]hkey}(hjѾhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhKhjhhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA224 context for a new messageh]h3Initialize an HMAC-SHA224 context for a new message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./include/crypto/sha2.hhKhjubj)}(hhh](j)}(hH``struct hmac_sha224_ctx *ctx`` (output) the HMAC context to initialize 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:76: ./include/crypto/sha2.hhKhj6ubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhKhj3ubj)}(h<``const struct hmac_sha224_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha224_key *key``h]j)}(hjuh]h!const struct hmac_sha224_key *key}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjoubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhKhj3ubeh}(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:76: ./include/crypto/sha2.hhKhjubh)}(hJIf you don't need incremental computation, consider hmac_sha224() instead.h]hLIf you don’t need incremental computation, consider hmac_sha224() instead.}(hjƿhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubh)}(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:76: ./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:76: ./include/crypto/sha2.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha224_init_usingrawkey (C function)c.hmac_sha224_init_usingrawkeyhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj*hKubjD)}(hhmac_sha224_init_usingrawkeyh]jJ)}(hhmac_sha224_init_usingrawkeyh]hhmac_sha224_init_usingrawkey}(hj=hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj*hKubj)}(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}(hjYhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjUubj3)}(h h]h }(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hjwhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjtubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjymodnameN classnameNj j)}j]j)}j j?sbc.hmac_sha224_init_usingrawkeyasbuh1hhjUubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjUubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(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 classnameNj j)}j]jc.hmac_sha224_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(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 classnameNj j)}j]jc.hmac_sha224_init_usingrawkeyasbuh1hhj7ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubjJ)}(h raw_key_lenh]h raw_key_len}(hjjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj*hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj*hKubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj*hKhjhhubjv)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhj*hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhKhjubj)}(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:76: ./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)}(hjh]hconst u8 *raw_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(hthe raw HMAC-SHA224 keyh]hthe raw HMAC-SHA224 key}(hj'hhhNhNubah}(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)}(hjGh]hsize_t raw_key_len}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjAubj)}(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&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hKhjubeh}(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:76: ./include/crypto/sha2.hhMhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_update (C function)c.hmac_sha224_updatehNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhM ubjD)}(hhmac_sha224_updateh]jJ)}(hhmac_sha224_updateh]hhmac_sha224_update}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhM ubj)}(h>(struct hmac_sha224_ctx *ctx, const u8 *data, size_t data_len)h](j)}(hstruct hmac_sha224_ctx *ctxh](j!)}(hj$h]hstruct}(hj+hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj'ubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'ubh)}(hhh]jJ)}(hhmac_sha224_ctxh]hhmac_sha224_ctx}(hjIhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjFubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjKmodnameN classnameNj j)}j]j)}j jsbc.hmac_sha224_updateasbuh1hhj'ubj3)}(h h]h }(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'ubj*)}(hj-h]h*}(hjwhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj'ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#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 classnameNj j)}j]jec.hmac_sha224_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jec.hmac_sha224_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&]noemphhhuh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhM ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhM hjhhubjv)}(hhh]h)}(h/Update an HMAC-SHA224 context with message datah]h/Update an HMAC-SHA224 context with message data}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM hjchhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj~jj~jjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(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)}(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:76: ./include/crypto/sha2.hhM hjubj)}(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&]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:76: ./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:76: ./include/crypto/sha2.hhM hjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.hM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjTh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hj{h]hContext}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224_final (C function)c.hmac_sha224_finalhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]hhuh1jChjhhhjhMubj)}(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 }(hj hhhNhNubah}(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 classnameNj j)}j]j)}j jsbc.hmac_sha224_finalasbuh1hhjubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjIhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjVhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!u8 out[static SHA224_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjrhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjoubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjtmodnameN classnameNj j)}j]j7c.hmac_sha224_finalasbuh1hhjkubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjkubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjkubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjkubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubh)}(hhh]jJ)}(hSHA224_DIGEST_SIZEh]hSHA224_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j7c.hmac_sha224_finalasbuh1hhjkubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6jj6jjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhj:ubj)}(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}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjYubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthMhjVubj)}(hO``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value 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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjVubeh}(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:76: ./include/crypto/sha2.hhMhj:ubh)}(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:76: ./include/crypto/sha2.hhMhj:ubh)}(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:76: ./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:76: ./include/crypto/sha2.hhM hj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha224 (C function) c.hmac_sha224hNtauh1hhjhhhNhNubj)}(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}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM&ubj3)}(h h]h }(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjMhhhj_hM&ubjD)}(h hmac_sha224h]jJ)}(h hmac_sha224h]h hmac_sha224}(hjrhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjnubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjMhhhj_hM&ubj)}(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}(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_sha224_keyh]hhmac_sha224_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jtsb c.hmac_sha224asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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}(hj9hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj;modnameN classnameNj j)}j]j c.hmac_sha224asbuh1hhjubj3)}(h h]h }(hjWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjehhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjrhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j c.hmac_sha224asbuh1hhjubj3)}(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&]noemphhhuh1jhjubj)}(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 classnameNj j)}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*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]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}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj=modnameN classnameNj j)}j]j c.hmac_sha224asbuh1hhjubj*)}(hj h]h]}(hjYhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjMhhhj_hM&ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjIhhhj_hM&ubah}(h]jDah ](jmjneh"]h$]h&]jrjs)jthuh1jhj_hM&hjFhhubjv)}(hhh]h)}(h5Compute HMAC-SHA224 in one shot, using a prepared keyh]h5Compute HMAC-SHA224 in one shot, using a prepared key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM&hjhhubah}(h]h ]h"]h$]h&]uh1juhjFhhhj_hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhM*hjubj)}(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:76: ./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:76: ./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)}(hj5h]hsize_t data_len}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM)hj/ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM)hjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhM)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)}(hjnh]h!u8 out[static SHA224_DIGEST_SIZE]}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM*hjhubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhjhM*hjubeh}(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:76: ./include/crypto/sha2.hhM,hjubh)}(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:76: ./include/crypto/sha2.hhM+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:76: ./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:76: ./include/crypto/sha2.hhM.hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha224_usingrawkey (C function)c.hmac_sha224_usingrawkeyhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM5ubj3)}(h h]h }(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj#hM5ubjD)}(hhmac_sha224_usingrawkeyh]jJ)}(hhmac_sha224_usingrawkeyh]hhmac_sha224_usingrawkey}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj2ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj#hM5ubj)}(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}(hjRhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjNubj3)}(h h]h }(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubh)}(hhh]jJ)}(hu8h]hu8}(hjphhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjmubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjrmodnameN classnameNj j)}j]j)}j j8sbc.hmac_sha224_usingrawkeyasbuh1hhjNubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjNubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(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 classnameNj j)}j]jc.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&]noemphhhuh1jhjJubj)}(hconst u8 *datah](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 classnameNj j)}j]jc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjVhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha224_usingrawkeyasbuh1hhjxubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(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 classnameNj j)}j]jc.hmac_sha224_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]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}(hj,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj.modnameN classnameNj j)}j]jc.hmac_sha224_usingrawkeyasbuh1hhjubj*)}(hj h]h]}(hjJhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hM5ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhj#hM5ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj#hM5hj hhubjv)}(hhh]h)}(h0Compute HMAC-SHA224 in one shot, using a raw keyh]h0Compute HMAC-SHA224 in one shot, using a raw key}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM5hjphhubah}(h]h ]h"]h$]h&]uh1juhj hhhj#hM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhM9hjubj)}(hhh](j)}(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:76: ./include/crypto/sha2.hhM6hjubj)}(hhh]h)}(hthe raw HMAC-SHA224 keyh]hthe raw HMAC-SHA224 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM6hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM6hjubj)}(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:76: ./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&]uh1jhjhM7hjubj)}(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:76: ./include/crypto/sha2.hhM8hj ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hM8hj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hM8hjubj)}(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}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM9hjYubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthM9hjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthM9hjubj)}(hO``u8 out[static SHA224_DIGEST_SIZE]`` (output) the resulting HMAC-SHA224 value 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:76: ./include/crypto/sha2.hhM:hjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA224 valueh]h((output) the resulting HMAC-SHA224 value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubeh}(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:76: ./include/crypto/sha2.hhM<hjubh)}(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:76: ./include/crypto/sha2.hhM;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:76: ./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:76: ./include/crypto/sha2.hhM?hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_ctx (C struct) c.sha256_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h sha256_ctxh]j)}(hstruct sha256_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:76: ./include/crypto/sha2.hhMDubj3)}(h h]h }(hjMhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;hhhjLhMDubjD)}(h sha256_ctxh]jJ)}(hj9h]h sha256_ctx}(hj_hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj[ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj;hhhjLhMDubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj7hhhjLhMDubah}(h]j2ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjLhMDhj4hhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-256h]h*Context for hashing a message with SHA-256}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMFhj~hhubah}(h]h ]h"]h$]h&]uh1juhj4hhhjLhMDubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hk**Definition**:: struct sha256_ctx { struct __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:76: ./include/crypto/sha2.hhMJhjubj)}(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:76: ./include/crypto/sha2.hhMLhjubh)}(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:76: ./include/crypto/sha2.hhMPhjubj)}(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:76: ./include/crypto/sha2.hhMGhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_init (C function) c.sha256_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h)void sha256_init (struct sha256_ctx *ctx)h]j)}(h(void sha256_init(struct sha256_ctx *ctx)h](j)}(hvoidh]hvoid}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMNubj3)}(h h]h }(hjWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDhhhjVhMNubjD)}(h sha256_inith]jJ)}(h sha256_inith]h sha256_init}(hjihhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjDhhhjVhMNubj)}(h(struct sha256_ctx *ctx)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 classnameNj j)}j]j)}j jksb c.sha256_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubah}(h]h ]h"]h$]h&]hhuh1jhjDhhhjVhMNubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj@hhhjVhMNubah}(h]j;ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjVhMNhj=hhubjv)}(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:76: ./include/crypto/sha2.hhMNhjhhubah}(h]h ]h"]h$]h&]uh1juhj=hhhjVhMNubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMRhj$ubj)}(hhh]j)}(h5``struct sha256_ctx *ctx`` the context to initialize h](j)}(h``struct sha256_ctx *ctx``h]j)}(hjIh]hstruct sha256_ctx *ctx}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMOhjCubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMOhj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hMOhj@ubah}(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:76: ./include/crypto/sha2.hhMQhj$ubh)}(hEIf you don't need incremental computation, consider sha256() instead.h]hGIf you don’t need incremental computation, consider sha256() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMPhj$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:76: ./include/crypto/sha2.hhMRhj$ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMShj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_update (C function)c.sha256_updatehNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMXubj)}(h4(struct sha256_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct sha256_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 sha256_ctxh]h sha256_ctx}(hjKhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjMmodnameN classnameNj j)}j]j)}j jsbc.sha256_updateasbuh1hhj)ubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubj*)}(hj-h]h*}(hjyhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj)ubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%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 classnameNj j)}j]jgc.sha256_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%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 classnameNj j)}j]jgc.sha256_updateasbuh1hhj ubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubjJ)}(hlenh]hlen}(hj>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMXubeh}(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}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMXhjehhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMXubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhM\hjubj)}(hhh](j)}(hM``struct sha256_ctx *ctx`` the context to update; must have been initialized 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:76: ./include/crypto/sha2.hhMYhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMYhjubj)}(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:76: ./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&]uh1jhjhMZhjubj)}(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:76: ./include/crypto/sha2.hhM[hjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM[hj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hM[hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjVh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM]hjubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM\hjubh)}(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:76: ./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:76: ./include/crypto/sha2.hhM_hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_final (C function)c.sha256_finalhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]hhuh1jChjhhhjhMhubj)}(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 }(hj hhhNhNubah}(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 classnameNj j)}j]j)}j jsbc.sha256_finalasbuh1hhjubj3)}(h h]h }(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjKhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjXhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjvmodnameN classnameNj j)}j]j9c.sha256_finalasbuh1hhjmubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjmubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjmubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjmubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j9c.sha256_finalasbuh1hhjmubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMhubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMhubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhhjhhubjv)}(hhh]h)}(h)Finish computing a SHA-256 message digesth]h)Finish computing a SHA-256 message digest}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMhubeh}(h]h ](jfunctioneh"]h$]h&]jjjj8jj8jjjuh1jhhhjhNhNubj)}(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)}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMlhj<ubj)}(hhh](j)}(hO``struct sha256_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha256_ctx *ctx``h]j)}(hjah]hstruct sha256_ctx *ctx}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMihj[ubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMihjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhMihjXubj)}(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)}(hjh]h!u8 out[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:76: ./include/crypto/sha2.hhMjhjubj)}(hhh]h)}(h-(output) the resulting SHA-256 message digesth]h-(output) the resulting SHA-256 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMjhjXubeh}(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:76: ./include/crypto/sha2.hhMlhj<ubh)}(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:76: ./include/crypto/sha2.hhMkhj<ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMmhj<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:76: ./include/crypto/sha2.hhMnhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256 (C function)c.sha256hNtauh1hhjhhhNhNubj)}(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}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMsubj3)}(h h]h }(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOhhhjahMsubjD)}(hsha256h]jJ)}(hsha256h]hsha256}(hjthhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjpubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjOhhhjahMsubj)}(h?(const u8 *data, size_t len, u8 out[static SHA256_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 classnameNj j)}j]j)}j jvsbc.sha256asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jc.sha256asbuh1hhjubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjMhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjOmodnameN classnameNj j)}j]jc.sha256asbuh1hhjFubj3)}(h h]h }(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFubjJ)}(houth]hout}(hjyhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjFubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjFubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjFubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFubh)}(hhh]jJ)}(hSHA256_DIGEST_SIZEh]hSHA256_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.sha256asbuh1hhjFubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjFubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjOhhhjahMsubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjKhhhjahMsubah}(h]jFah ](jmjneh"]h$]h&]jrjs)jthuh1jhjahMshjHhhubjv)}(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:76: ./include/crypto/sha2.hhMshjhhubah}(h]h ]h"]h$]h&]uh1juhjHhhhjahMsubeh}(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 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:76: ./include/crypto/sha2.hhMwhjubj)}(hhh](j)}(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&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMthj4ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMthjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhMthj1ubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjsh]h size_t len}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMuhjmubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMuhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhMuhj1ubj)}(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)}(hjh]h!u8 out[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:76: ./include/crypto/sha2.hhMvhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMvhj1ubeh}(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:76: ./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:76: ./include/crypto/sha2.hhMxhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha256_finup_2x (C function)c.sha256_finup_2xhNtauh1hhjhhhNhNubj)}(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}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM}ubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(hhhj:hM}ubjD)}(hsha256_finup_2xh]jJ)}(hsha256_finup_2xh]hsha256_finup_2x}(hjMhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj(hhhj:hM}ubj)}(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}(hjihhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjeubj3)}(h h]h }(hjvhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjeubj!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjeubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjeubh)}(hhh]jJ)}(h sha256_ctxh]h sha256_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jOsbc.sha256_finup_2xasbuh1hhjeubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjeubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjeubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubj)}(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 classnameNj j)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj@hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdata1h]hdata1}(hjMhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubj)}(hconst u8 *data2h](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}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.sha256_finup_2xasbuh1hhjbubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjbubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjbubjJ)}(hdata2h]hdata2}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubj)}(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 classnameNj j)}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&]noemphhhuh1jhjaubj)}(h"u8 out1[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj#modnameN classnameNj j)}j]jc.sha256_finup_2xasbuh1hhjubj3)}(h h]h }(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hout1h]hout1}(hjMhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hj[hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hjhhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjuhhhNhNubah}(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 classnameNj j)}j]jc.sha256_finup_2xasbuh1hhjubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubj)}(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 classnameNj j)}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*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]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}(hj$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj&modnameN classnameNj j)}j]jc.sha256_finup_2xasbuh1hhjubj*)}(hj h]h]}(hjBhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubeh}(h]h ]h"]h$]h&]hhuh1jhj(hhhj:hM}ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj$hhhj:hM}ubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj:hM}hj!hhubjv)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM}hjhhhubah}(h]h ]h"]h$]h&]uh1juhj!hhhj:hM}ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(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)}(hjh]hconst struct 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:76: ./include/crypto/sha2.hhMhjubj)}(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:76: ./include/crypto/sha2.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(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:76: ./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&]uh1jhjhMhjubj)}(h0``const u8 *data2`` data for the second message h](j)}(h``const u8 *data2``h]j)}(hjh]hconst u8 *data2}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hdata for the second messageh]hdata for the second message}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hMhjubj)}(hG``size_t len`` the length of each of **data1** and **data2**, in bytes h](j)}(h``size_t len``h]j)}(hjXh]h size_t len}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjRubj)}(hhh]h)}(h7the length of each of **data1** and **data2**, in bytesh](hthe length of each of }(hjqhhhNhNubj)}(h **data1**h]hdata1}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubh and }(hjqhhhNhNubj)}(h **data2**h]hdata2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubh , in bytes}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhMhjubj)}(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)}(hjh]h"u8 out1[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:76: ./include/crypto/sha2.hhMhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(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:76: ./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&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )sha256_finup_2x_is_optimized (C function)c.sha256_finup_2x_is_optimizedhNtauh1hhjhhhNhNubj)}(hhh](j)}(h(bool sha256_finup_2x_is_optimized (void)h]j)}(h'bool sha256_finup_2x_is_optimized(void)h](j)}(hboolh]hbool}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjjhhhj|hMubjD)}(hsha256_finup_2x_is_optimizedh]jJ)}(hsha256_finup_2x_is_optimizedh]hsha256_finup_2x_is_optimized}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjjhhhj|hMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjjhhhj|hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjfhhhj|hMubah}(h]jaah ](jmjneh"]h$]h&]jrjs)jthuh1jhj|hMhjchhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjchhhj|hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./include/crypto/sha2.hhKhjubj)}(hhh]h)}(h no argumentsh]h no arguments}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjQh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhKhjubh)}(htrue if optimizedh]htrue if optimized}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjxh]hContext}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_key (C struct)c.hmac_sha256_keyhNtauh1hhjhhhNhNubj)}(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:76: ./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&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha256_key { struct __hmac_sha256_key key; }; **Members** ``key`` privateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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; };}hj<sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``key`` privateh](j)}(h``key``h]j)}(hjlh]hkey}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjfubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjhMhjcubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_ctx (C struct)c.hmac_sha256_ctxhNtauh1hhjhhhNhNubj)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha256_ctx { struct __hmac_sha256_ctx ctx; }; **Members** ``ctx`` privateh](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:76: ./include/crypto/sha2.hhMhj$ubj)}(h=struct hmac_sha256_ctx { struct __hmac_sha256_ctx ctx; };h]h=struct hmac_sha256_ctx { struct __hmac_sha256_ctx ctx; };}hjEsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj$ubh)}(h **Members**h]j)}(hjVh]hMembers}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj$ubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hjuh]hctx}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjoubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhMhjlubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha256_preparekey (C function)c.hmac_sha256_preparekeyhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]hhuh1jChjhhhjhMubj)}(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}(hj hhhNhNubah}(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}(hj*hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj,modnameN classnameNj j)}j]j)}j jsbc.hmac_sha256_preparekeyasbuh1hhjubj3)}(h h]h }(hjJhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjXhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj~hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjzubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jFc.hmac_sha256_preparekeyasbuh1hhjzubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjzubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jFc.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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(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}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjDhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_jj_jjjuh1jhhhjhNhNubj)}(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)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjcubj)}(hhh](j)}(hI``struct hmac_sha256_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha256_key *key``h]j)}(hjh]hstruct hmac_sha256_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure 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:76: ./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:76: ./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&]uh1jhjcubh)}(h**Note**h]j)}(hj5h]hNote}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjcubh)}(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.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjcubh)}(h **Context**h]j)}(hj\h]hContext}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjcubh)}(h Any context.h]h Any context.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_init (C function)c.hmac_sha256_inithNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_inith]jJ)}(hhmac_sha256_inith]hhmac_sha256_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubj)}(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 classnameNj j)}j]j)}j jsbc.hmac_sha256_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj*hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!const struct hmac_sha256_key *keyh](j!)}(hjh]hconst}(hjPhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjLubj3)}(h h]h }(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubj!)}(hj$h]hstruct}(hjkhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjLubj3)}(h h]h }(hjxhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubh)}(hhh]jJ)}(hhmac_sha256_keyh]hhmac_sha256_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha256_initasbuh1hhjLubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjLubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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)}(hj-h]hstruct hmac_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:76: ./include/crypto/sha2.hhMhj'ubj)}(hhh]h)}(h'(output) the HMAC context to initializeh]h'(output) the HMAC context to initialize}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhMhj$ubj)}(h<``const struct hmac_sha256_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha256_key *key``h]j)}(hjfh]h!const struct hmac_sha256_key *key}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj`ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hMhj$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:76: ./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:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha256_init_usingrawkey (C function)c.hmac_sha256_init_usingrawkeyhNtauh1hhjhhhNhNubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhjhMubjD)}(hhmac_sha256_init_usingrawkeyh]jJ)}(hhmac_sha256_init_usingrawkeyh]hhmac_sha256_init_usingrawkey}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj*ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhjhMubj)}(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}(hjJhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjFubj3)}(h h]h }(hjWhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hjhhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjjmodnameN classnameNj j)}j]j)}j j0sbc.hmac_sha256_init_usingrawkeyasbuh1hhjFubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjFubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjFubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubj)}(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 classnameNj j)}j]jc.hmac_sha256_init_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubj)}(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  reftargetj1modnameN classnameNj j)}j]jc.hmac_sha256_init_usingrawkeyasbuh1hhj(ubj3)}(h h]h }(hjMhhhNhNubah}(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&]noemphhhuh1jhjBubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhMubeh}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./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:76: ./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:76: ./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)}(hj8h]hsize_t raw_key_len}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj2ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjsh]h Description}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_update (C function)c.hmac_sha256_updatehNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]hhuh1jChjhhhjhMubj)}(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 }(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hhmac_sha256_ctxh]hhmac_sha256_ctx}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj<modnameN classnameNj j)}j]j)}j jsbc.hmac_sha256_updateasbuh1hhjubj3)}(h h]h }(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjuhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jVc.hmac_sha256_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jVc.hmac_sha256_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hj-hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(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}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjThhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjojjojjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjsubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(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&]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:76: ./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 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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjsubh)}(h**Description**h]j)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjsubh)}(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:76: ./include/crypto/sha2.hhMhjsubh)}(h **Context**h]j)}(hjlh]hContext}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjsubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256_final (C function)c.hmac_sha256_finalhNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(hhmac_sha256_finalh]jJ)}(hhmac_sha256_finalh]hhmac_sha256_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubj)}(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}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.hmac_sha256_finalasbuh1hhjubj3)}(h h]h }(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj:hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!u8 out[static SHA256_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjemodnameN classnameNj j)}j]j(c.hmac_sha256_finalasbuh1hhj\ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj\ubj!)}(hjG h]hstatic}(hjhhhNhNubah}(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 classnameNj j)}j]j(c.hmac_sha256_finalasbuh1hhj\ubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(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:76: ./include/crypto/sha2.hhMhj hhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'jj'jjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhj+ubj)}(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)}(hjPh]hstruct hmac_sha256_ctx *ctx}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjJubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehMhjGubj)}(hO``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 value}(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**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:76: ./include/crypto/sha2.hhMhj+ubh)}(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:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha256 (C function) c.hmac_sha256hNtauh1hhjhhhNhNubj)}(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}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>hhhjPhMubjD)}(h hmac_sha256h]jJ)}(h hmac_sha256h]h hmac_sha256}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj_ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj>hhhjPhMubj)}(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}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj{ubj3)}(h h]h }(hjhhhNhNubah}(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)}(hhmac_sha256_keyh]hhmac_sha256_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jesb c.hmac_sha256asbuh1hhj{ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj{ubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubj)}(hconst u8 *datah](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 classnameNj j)}j]j c.hmac_sha256asbuh1hhjubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjVhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j c.hmac_sha256asbuh1hhjxubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubj)}(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 classnameNj j)}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*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]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}(hj,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj.modnameN classnameNj j)}j]j c.hmac_sha256asbuh1hhjubj*)}(hj h]h]}(hjJhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubeh}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj:hhhjPhMubah}(h]j5ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjPhMhj7hhubjv)}(hhh]h)}(h5Compute HMAC-SHA256 in one shot, using a prepared keyh]h5Compute HMAC-SHA256 in one shot, using a prepared key}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjphhubah}(h]h ]h"]h$]h&]uh1juhj7hhhjPhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(h<``const struct hmac_sha256_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha256_key *key``h]j)}(hjh]h!const struct hmac_sha256_key *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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 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:76: ./include/crypto/sha2.hhMhj ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(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 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]}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjYubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 value}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthMhjubeh}(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:76: ./include/crypto/sha2.hhMhjubh)}(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().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha256_usingrawkey (C function)c.hmac_sha256_usingrawkeyhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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}(hj'hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubj)}(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}(hjChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj?ubj3)}(h h]h }(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubh)}(hhh]jJ)}(hu8h]hu8}(hjahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjcmodnameN classnameNj j)}j]j)}j j)sbc.hmac_sha256_usingrawkeyasbuh1hhj?ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj?ubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;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 classnameNj j)}j]j}c.hmac_sha256_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&]noemphhhuh1jhj;ubj)}(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 classnameNj j)}j]j}c.hmac_sha256_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjGhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjThhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjphhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjmubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjrmodnameN classnameNj j)}j]j}c.hmac_sha256_usingrawkeyasbuh1hhjiubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;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 classnameNj j)}j]j}c.hmac_sha256_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hjhhhNhNubah}(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}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetJjmodnameN classnameNj j)}j]j}c.hmac_sha256_usingrawkeyasbuh1hhjubj*)}(hj h]h]}(hj;hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(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}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjahhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(hhh](j)}(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:76: ./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:76: ./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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe message datah]hthe message data}(hj0hhhNhNubah}(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)}(hjPh]hsize_t data_len}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjJubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehMhjubj)}(hO``u8 out[static SHA256_DIGEST_SIZE]`` (output) the resulting HMAC-SHA256 value h](j)}(h%``u8 out[static SHA256_DIGEST_SIZE]``h]j)}(hjh]h!u8 out[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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(h((output) the resulting HMAC-SHA256 valueh]h((output) the resulting HMAC-SHA256 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:76: ./include/crypto/sha2.hhMhjubh)}(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:76: ./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:76: ./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:76: ./include/crypto/sha2.hhM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_ctx (C struct) c.sha384_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h sha384_ctxh]j)}(hstruct sha384_ctxh](j!)}(hj$h]hstruct}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj,hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,hhhj=hMubjD)}(h sha384_ctxh]jJ)}(hj*h]h sha384_ctx}(hjPhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj,hhhj=hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj(hhhj=hMubah}(h]j#ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj=hMhj%hhubjv)}(hhh]h)}(h*Context for hashing a message with SHA-384h]h*Context for hashing a message with SHA-384}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM4hjohhubah}(h]h ]h"]h$]h&]uh1juhj%hhhj=hMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hk**Definition**:: struct sha384_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:76: ./include/crypto/sha2.hhM8hjubj)}(h3struct sha384_ctx { struct __sha512_ctx ctx; };h]h3struct sha384_ctx { struct __sha512_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM:hjubh)}(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:76: ./include/crypto/sha2.hhM>hjubj)}(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:76: ./include/crypto/sha2.hhM5hjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM6hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM5hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_init (C function) c.sha384_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h)void sha384_init (struct sha384_ctx *ctx)h]j)}(h(void sha384_init(struct sha384_ctx *ctx)h](j)}(hvoidh]hvoid}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM<ubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5hhhjGhM<ubjD)}(h sha384_inith]jJ)}(h sha384_inith]h sha384_init}(hjZhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjVubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj5hhhjGhM<ubj)}(h(struct sha384_ctx *ctx)h]j)}(hstruct sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hjvhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjrubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubh)}(hhh]jJ)}(h sha384_ctxh]h sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j j\sb c.sha384_initasbuh1hhjrubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjrubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubah}(h]h ]h"]h$]h&]hhuh1jhj5hhhjGhM<ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj1hhhjGhM<ubah}(h]j,ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjGhM<hj.hhubjv)}(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:76: ./include/crypto/sha2.hhM<hjhhubah}(h]h ]h"]h$]h&]uh1juhj.hhhjGhM<ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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)}(hj:h]hstruct sha384_ctx *ctx}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM=hj4ubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhM=hjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhM=hj1ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjuh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM>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:76: ./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:76: ./include/crypto/sha2.hhMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_update (C function)c.sha384_updatehNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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&]hhuh1jChjhhhjhMFubj)}(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 }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(h sha384_ctxh]h sha384_ctx}(hj<hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj>modnameN classnameNj j)}j]j)}j jsbc.sha384_updateasbuh1hhjubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjwhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jXc.sha384_updateasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jXc.sha384_updateasbuh1hhjubj3)}(h h]h }(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hj/hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMFubeh}(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}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMFhjVhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMFubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMJhjuubj)}(hhh](j)}(hM``struct sha384_ctx *ctx`` the context to update; 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:76: ./include/crypto/sha2.hhMGhjubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubj)}(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:76: ./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&]uh1jhjhMHhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj h]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMIhjubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMIhj"ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hMIhjubeh}(h]h ]h"]h$]h&]uh1jhjuubh)}(h**Description**h]j)}(hjGh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMKhjuubh)}(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:76: ./include/crypto/sha2.hhMJhjuubh)}(h **Context**h]j)}(hjnh]hContext}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMLhjuubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384_final (C function)c.sha384_finalhNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMVubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMVubjD)}(h sha384_finalh]jJ)}(h sha384_finalh]h sha384_final}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMVubj)}(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&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jsbc.sha384_finalasbuh1hhjubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj<hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hjIhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h!u8 out[static SHA384_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjbubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjgmodnameN classnameNj j)}j]j*c.sha384_finalasbuh1hhj^ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^ubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^ubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj^ubj!)}(hjG h]hstatic}(hjhhhNhNubah}(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 classnameNj j)}j]j*c.sha384_finalasbuh1hhj^ubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMVubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMVubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMVhjhhubjv)}(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:76: ./include/crypto/sha2.hhMVhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1jhhhjhNhNubj)}(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)}(hj3h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMZhj-ubj)}(hhh](j)}(hO``struct sha384_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha384_ctx *ctx``h]j)}(hjRh]hstruct sha384_ctx *ctx}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMWhjLubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMWhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhjghMWhjIubj)}(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)}(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:76: ./include/crypto/sha2.hhMXhjubj)}(hhh]h)}(h-(output) the resulting SHA-384 message digesth]h-(output) the resulting SHA-384 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMXhjIubeh}(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:76: ./include/crypto/sha2.hhMZhj-ubh)}(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:76: ./include/crypto/sha2.hhMYhj-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:76: ./include/crypto/sha2.hhM[hj-ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM\hj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha384 (C function)c.sha384hNtauh1hhjhhhNhNubj)}(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}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMaubj3)}(h h]h }(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@hhhjRhMaubjD)}(hsha384h]jJ)}(hsha384h]hsha384}(hjehhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjaubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj@hhhjRhMaubj)}(h?(const u8 *data, size_t len, u8 out[static SHA384_DIGEST_SIZE])h](j)}(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}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jgsbc.sha384asbuh1hhj}ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj}ubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(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 classnameNj j)}j]jc.sha384asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hlenh]hlen}(hj"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(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 classnameNj j)}j]jc.sha384asbuh1hhj7ubj3)}(h h]h }(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubjJ)}(houth]hout}(hjjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubj*)}(hj9 h]h[}(hjxhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj7ubj!)}(hjG h]hstatic}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj7ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.sha384asbuh1hhj7ubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubeh}(h]h ]h"]h$]h&]hhuh1jhj@hhhjRhMaubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj<hhhjRhMaubah}(h]j7ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjRhMahj9hhubjv)}(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:76: ./include/crypto/sha2.hhMahjhhubah}(h]h ]h"]h$]h&]uh1juhj9hhhjRhMaubeh}(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 SHA384_DIGEST_SIZE]`` (output) the resulting SHA-384 message digest **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:76: ./include/crypto/sha2.hhMehjubj)}(hhh](j)}(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:76: ./include/crypto/sha2.hhMbhj%ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMbhjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMbhj"ubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjdh]h size_t len}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMchj^ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMchjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMchj"ubj)}(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)}(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:76: ./include/crypto/sha2.hhMdhjubj)}(hhh]h)}(h-(output) the resulting SHA-384 message digesth]h-(output) the resulting SHA-384 message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMdhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMdhj"ubeh}(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:76: ./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:76: ./include/crypto/sha2.hhMfhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_key (C struct)c.hmac_sha384_keyhNtauh1hhjhhhNhNubj)}(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:76: ./include/crypto/sha2.hhMkubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj*hMkubjD)}(hhmac_sha384_keyh]jJ)}(hjh]hhmac_sha384_key}(hj=hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj*hMkubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj*hMkubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj*hMkhjhhubjv)}(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:76: ./include/crypto/sha2.hhMkhj\hhubah}(h]h ]h"]h$]h&]uh1juhjhhhj*hMkubeh}(h]h ](jstructeh"]h$]h&]jjjjwjjwjjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha384_key { struct __hmac_sha512_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:76: ./include/crypto/sha2.hhMohj{ubj)}(h=struct hmac_sha384_key { struct __hmac_sha512_key key; };h]h=struct hmac_sha384_key { struct __hmac_sha512_key key; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMqhj{ubh)}(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:76: ./include/crypto/sha2.hhMuhj{ubj)}(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:76: ./include/crypto/sha2.hhMlhjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_ctx (C struct)c.hmac_sha384_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(hhmac_sha384_ctxh]j)}(hstruct hmac_sha384_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:76: ./include/crypto/sha2.hhMsubj3)}(h h]h }(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"hhhj3hMsubjD)}(hhmac_sha384_ctxh]jJ)}(hj h]hhmac_sha384_ctx}(hjFhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj"hhhj3hMsubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj3hMsubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj3hMshjhhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA384 of a messageh]h.Context for computing HMAC-SHA384 of a message}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMshjehhubah}(h]h ]h"]h$]h&]uh1juhjhhhj3hMsubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha384_ctx { struct __hmac_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:76: ./include/crypto/sha2.hhMwhjubj)}(h=struct hmac_sha384_ctx { struct __hmac_sha512_ctx ctx; };h]h=struct hmac_sha384_ctx { struct __hmac_sha512_ctx ctx; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMyhjubh)}(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:76: ./include/crypto/sha2.hhM}hjubj)}(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:76: ./include/crypto/sha2.hhMthjubj)}(hhh]h)}(hprivateh]hprivate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMuhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMthjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha384_preparekey (C function)c.hmac_sha384_preparekeyhNtauh1hhjhhhNhNubj)}(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}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM{ubj3)}(h h]h }(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+hhhj=hM{ubjD)}(hhmac_sha384_preparekeyh]jJ)}(hhmac_sha384_preparekeyh]hhmac_sha384_preparekey}(hjPhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjLubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj+hhhj=hM{ubj)}(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}(hjlhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubh)}(hhh]jJ)}(hhmac_sha384_keyh]hhmac_sha384_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jRsbc.hmac_sha384_preparekeyasbuh1hhjhubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjhubjJ)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(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 classnameNj j)}j]jc.hmac_sha384_preparekeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj(hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hj5hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjQhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjSmodnameN classnameNj j)}j]jc.hmac_sha384_preparekeyasbuh1hhjJubj3)}(h h]h }(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubjJ)}(h raw_key_lenh]h raw_key_len}(hj}hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj=hM{ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj'hhhj=hM{ubah}(h]j"ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj=hM{hj$hhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA384h]hPrepare a key for HMAC-SHA384}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM{hjhhubah}(h]h ]h"]h$]h&]uh1juhj$hhhj=hM{ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./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)}(hj!h]hconst u8 *raw_key}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM}hjubj)}(hhh]h)}(hthe raw HMAC-SHA384 keyh]hthe raw HMAC-SHA384 key}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM}hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6hM}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)}(hjZh]hsize_t raw_key_len}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM~hjTubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohM~hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohM~hjubeh}(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:76: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_init (C function)c.hmac_sha384_inithNtauh1hhjhhhNhNubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhj hMubjD)}(hhmac_sha384_inith]jJ)}(hhmac_sha384_inith]hhmac_sha384_init}(hj" hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhj hMubj)}(h@(struct hmac_sha384_ctx *ctx, const struct hmac_sha384_key *key)h](j)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hj> hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj: ubj3)}(h h]h }(hjK hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj: ubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hj\ hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjY ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj^ modnameN classnameNj j)}j]j)}j j$ sbc.hmac_sha384_initasbuh1hhj: ubj3)}(h h]h }(hj| hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj: ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj: ubjJ)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj: ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6 ubj)}(h!const struct hmac_sha384_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}(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_sha384_keyh]hhmac_sha384_key}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]jx c.hmac_sha384_initasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hkeyh]hkey}(hj" hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6 ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhj hMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhj hMhjhhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA384 context for a new messageh]h3Initialize an HMAC-SHA384 context for a new message}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjI hhubah}(h]h ]h"]h$]h&]uh1juhjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjd jjd jjjuh1jhhhjhNhNubj)}(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)}(hjn h]h Parameters}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjh 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:76: ./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 struct hmac_sha384_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha384_key *key``h]j)}(hj h]h!const struct hmac_sha384_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:76: ./include/crypto/sha2.hhMhj ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC 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 ubeh}(h]h ]h"]h$]h&]uh1jhjh 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:76: ./include/crypto/sha2.hhMhjh ubh)}(hJIf you don't need incremental computation, consider hmac_sha384() instead.h]hLIf you don’t need incremental computation, consider hmac_sha384() instead.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjh 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:76: ./include/crypto/sha2.hhMhjh 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:76: ./include/crypto/sha2.hhMhjh ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha384_init_usingrawkey (C function)c.hmac_sha384_init_usingrawkeyhNtauh1hhjhhhNhNubj)}(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}(hjm hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj| hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hji hhhj{ hMubjD)}(hhmac_sha384_init_usingrawkeyh]jJ)}(hhmac_sha384_init_usingrawkeyh]hhmac_sha384_init_usingrawkey}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChji hhhj{ hMubj)}(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}(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_sha384_ctxh]hhmac_sha384_ctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj modnameN classnameNj j)}j]j)}j j sbc.hmac_sha384_init_usingrawkeyasbuh1hhj ubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hj hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hctxh]hctx}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(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}(hj: hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7 ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj< modnameN classnameNj j)}j]j c.hmac_sha384_init_usingrawkeyasbuh1hhj ubj3)}(h h]h }(hjX hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubj*)}(hj-h]h*}(hjf hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubjJ)}(hraw_keyh]hraw_key}(hjs hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 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 classnameNj j)}j]j c.hmac_sha384_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&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhji hhhj{ hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihje hhhj{ hMubah}(h]j` ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj{ hMhjb 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:76: ./include/crypto/sha2.hhMhj hhubah}(h]h ]h"]h$]h&]uh1juhjb hhhj{ hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./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}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj] ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjY ubj)}(hhh]h)}(hthe raw HMAC-SHA384 keyh]hthe raw HMAC-SHA384 key}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt hMhju ubah}(h]h ]h"]h$]h&]uh1jhjY ubeh}(h]h ]h"]h$]h&]uh1jhjt 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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj 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 hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj 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:76: ./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:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_update (C function)c.hmac_sha384_updatehNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhj;hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjNhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;hhhjMhMubjD)}(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;hhhjMhMubj)}(h>(struct hmac_sha384_ctx *ctx, const u8 *data, size_t data_len)h](j)}(hstruct hmac_sha384_ctx *ctxh](j!)}(hj$h]hstruct}(hj|hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjxubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubh)}(hhh]jJ)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jbsbc.hmac_sha384_updateasbuh1hhjxubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjxubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubj)}(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}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha384_updateasbuh1hhjubj3)}(h h]h }(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj8hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjahhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjcmodnameN classnameNj j)}j]jc.hmac_sha384_updateasbuh1hhjZubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjZubjJ)}(hdata_lenh]hdata_len}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubeh}(h]h ]h"]h$]h&]hhuh1jhj;hhhjMhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj7hhhjMhMubah}(h]j2ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjMhMhj4hhubjv)}(hhh]h)}(h/Update an HMAC-SHA384 context with message datah]h/Update an HMAC-SHA384 context with message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj4hhhjMhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(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)}(hjh]hstruct hmac_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:76: ./include/crypto/sha2.hhMhjubj)}(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&]uh1hhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj1h]hconst u8 *data}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj+ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhMhjubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hjjh]hsize_t data_len}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjdubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(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:76: ./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:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384_final (C function)c.hmac_sha384_finalhNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj hhhjhMubjD)}(hhmac_sha384_finalh]jJ)}(hhmac_sha384_finalh]hhmac_sha384_final}(hj2hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj hhhjhMubj)}(h@(struct hmac_sha384_ctx *ctx, u8 out[static SHA384_DIGEST_SIZE])h](j)}(hstruct hmac_sha384_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)}(hhmac_sha384_ctxh]hhmac_sha384_ctx}(hjlhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjnmodnameN classnameNj j)}j]j)}j j4sbc.hmac_sha384_finalasbuh1hhjJubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjJubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjFubj)}(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 classnameNj j)}j]jc.hmac_sha384_finalasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj hhhNhNubah}(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}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj*modnameN classnameNj j)}j]jc.hmac_sha384_finalasbuh1hhjubj*)}(hj h]h]}(hjFhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjFubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj hhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA384 valueh]h%Finish computing an HMAC-SHA384 value}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjlhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjubj)}(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)}(hjh]hstruct hmac_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:76: ./include/crypto/sha2.hhMhjubj)}(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&]uh1jhjubeh}(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:76: ./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)}(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:76: ./include/crypto/sha2.hhMhjubh)}(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}(hjBhhhNhNubah}(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:76: ./include/crypto/sha2.hhMhjubh)}(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:76: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha384 (C function) c.hmac_sha384hNtauh1hhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h hmac_sha384h]jJ)}(h hmac_sha384h]h hmac_sha384}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubj)}(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 classnameNj j)}j]j)}j jsb c.hmac_sha384asbuh1hhjubj3)}(h h]h }(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjFhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hkeyh]hkey}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hjlhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhubj3)}(h h]h }(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubh)}(hhh]jJ)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j4 c.hmac_sha384asbuh1hhjhubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjhubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j4 c.hmac_sha384asbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(hdata_lenh]hdata_len}(hj hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]j4 c.hmac_sha384asbuh1hhj ubj3)}(h h]h }(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubjJ)}(houth]hout}(hjShhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ubj*)}(hj9 h]h[}(hjahhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubj!)}(hjG h]hstatic}(hjnhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ubj3)}(h h]h }(hj{hhhNhNubah}(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 classnameNj j)}j]j4 c.hmac_sha384asbuh1hhj ubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjMh]hconst u8 *data}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjGubj)}(hhh]h)}(hthe message datah]hthe message data}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjbhMhj ubj)}(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:76: ./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&]uh1jhjhMhj ubj)}(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:76: ./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&]uh1jhjhMhj 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:76: ./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:76: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hj!h]hContext}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha384_usingrawkey (C function)c.hmac_sha384_usingrawkeyhNtauh1hhjhhhNhNubj)}(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}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjbhhhjthMubjD)}(hhmac_sha384_usingrawkeyh]jJ)}(hhmac_sha384_usingrawkeyh]hhmac_sha384_usingrawkey}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjbhhhjthMubj)}(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}(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 classnameNj j)}j]j)}j jsbc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hraw_keyh]hraw_key}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(h raw_key_lenh]h raw_key_len}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hj]hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjYubj3)}(h h]h }(hjjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYubh)}(hhh]jJ)}(hu8h]hu8}(hj{hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjxubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj}modnameN classnameNj j)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjYubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjYubjJ)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj j)}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&]noemphhhuh1jhjubj)}(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 classnameNj j)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubjJ)}(houth]hout}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubj*)}(hj9 h]h[}(hjRhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubj!)}(hjG h]hstatic}(hj_hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjubj3)}(h h]h }(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubh)}(hhh]jJ)}(hSHA384_DIGEST_SIZEh]hSHA384_DIGEST_SIZE}(hj}hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.hmac_sha384_usingrawkeyasbuh1hhjubj*)}(hj h]h]}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj^hhhjthMubah}(h]jYah ](jmjneh"]h$]h&]jrjs)jthuh1jhjthMhj[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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj[hhhjthMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./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)}(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:76: ./include/crypto/sha2.hhMhj8ubj)}(hhh]h)}(h8the key length in bytes. All key lengths are supported.h]h8the key length in bytes. All key lengths are supported.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjwh]hconst u8 *data}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjqubj)}(hhh]h)}(hthe message datah]hthe message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(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:76: ./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&]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:76: ./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)}(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:76: ./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.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h **Context**h]j)}(hjKh]hContext}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubh)}(h Any context.h]h Any context.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_ctx (C struct) c.sha512_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(h sha512_ctxh]j)}(hstruct sha512_ctxh](j!)}(hj$h]hstruct}(hjhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h sha512_ctxh]jJ)}(hjh]h sha512_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-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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjubh)}(h **Members**h]j)}(hj h]hMembers}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hj?h]hctx}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj9ubj)}(hhh]h)}(hprivateh]hprivate}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_init (C function) c.sha512_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(h)void sha512_init (struct sha512_ctx *ctx)h]j)}(h(void sha512_init(struct sha512_ctx *ctx)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhhhjhMubjD)}(h sha512_inith]jJ)}(h sha512_inith]h sha512_init}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjhhhjhMubj)}(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 classnameNj j)}j]j)}j jsb c.sha512_initasbuh1hhjubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj"hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hctxh]hctx}(hj/hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjhhhjhMubah}(h]jah ](jmjneh"]h$]h&]jrjs)jthuh1jhjhMhjhhubjv)}(hhh]h)}(h.Initialize a SHA-512 context for a new messageh]h.Initialize a SHA-512 context for a new message}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjVhhubah}(h]h ]h"]h$]h&]uh1juhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1jhhhjhNhNubj)}(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)}(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:76: ./include/crypto/sha2.hhMhjuubj)}(hhh]j)}(h5``struct sha512_ctx *ctx`` the context to initialize 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:76: ./include/crypto/sha2.hhMhjubj)}(hhh]h)}(hthe context to initializeh]hthe context to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(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:76: ./include/crypto/sha2.hhMhjuubh)}(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:76: ./include/crypto/sha2.hhMhjuubh)}(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:76: ./include/crypto/sha2.hhMhjuubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_update (C function)c.sha512_updatehNtauh1hhjhhhNhNubj)}(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}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=hhhjOhMubjD)}(h sha512_updateh]jJ)}(h sha512_updateh]h sha512_update}(hjbhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj^ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj=hhhjOhMubj)}(h4(struct sha512_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hj~hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjzubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubh)}(hhh]jJ)}(h sha512_ctxh]h sha512_ctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]j)}j jdsbc.sha512_updateasbuh1hhjzubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubj*)}(hj-h]h*}(hjhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjzubjJ)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvubj)}(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&]uh1jIhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj j)}j]jc.sha512_updateasbuh1hhjubj3)}(h h]h }(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj*)}(hj-h]h*}(hj:hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjubjJ)}(hdatah]hdata}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjchhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjemodnameN classnameNj j)}j]jc.sha512_updateasbuh1hhj\ubj3)}(h h]h }(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubjJ)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvubeh}(h]h ]h"]h$]h&]hhuh1jhj=hhhjOhMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj9hhhjOhMubah}(h]j4ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjOhMhj6hhubjv)}(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:76: ./include/crypto/sha2.hhMhjhhubah}(h]h ]h"]h$]h&]uh1juhj6hhhjOhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjubj)}(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 hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj3 h]hconst u8 *data}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1 ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj- ubj)}(hhh]h)}(hthe message datah]hthe message data}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH hMhjI ubah}(h]h ]h"]h$]h&]uh1jhj- ubeh}(h]h ]h"]h$]h&]uh1jhjH hMhjubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjl h]h size_t len}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjf ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjf ubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubeh}(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:76: ./include/crypto/sha2.hhMhjubh)}(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:76: ./include/crypto/sha2.hhMhjubh)}(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:76: ./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:76: ./include/crypto/sha2.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512_final (C function)c.sha512_finalhNtauh1hhjhhhNhNubj)}(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}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj"!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!hhhj!!hMubjD)}(h sha512_finalh]jJ)}(h sha512_finalh]h sha512_final}(hj4!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0!ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj!hhhj!!hMubj)}(h;(struct sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j)}(hstruct sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hjP!hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjL!ubj3)}(h h]h }(hj]!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjL!ubh)}(hhh]jJ)}(h sha512_ctxh]h sha512_ctx}(hjn!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjk!ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjp!modnameN classnameNj j)}j]j)}j j6!sbc.sha512_finalasbuh1hhjL!ubj3)}(h h]h }(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjL!ubj*)}(hj-h]h*}(hj!hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjL!ubjJ)}(hctxh]hctx}(hj!hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjL!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjH!ubj)}(h!u8 out[static SHA512_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 classnameNj j)}j]j!c.sha512_finalasbuh1hhj!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*)}(hj9 h]h[}(hj!hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj!ubj!)}(hjG h]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)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj*"hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'"ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj,"modnameN classnameNj j)}j]j!c.sha512_finalasbuh1hhj!ubj*)}(hj h]h]}(hjH"hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjH!ubeh}(h]h ]h"]h$]h&]hhuh1jhj!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 a SHA-512 message digesth]h)Finish computing a SHA-512 message digest}(hjq"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjn"hhubah}(h]h ]h"]h$]h&]uh1juhj!hhhj!!hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"jj"jjjuh1jhhhjhNhNubj)}(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&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM hj"ubj)}(hhh](j)}(hO``struct sha512_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sha512_ctx *ctx``h]j)}(hj"h]hstruct 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:76: ./include/crypto/sha2.hhMhj"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"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhj"ubj)}(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)}(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:76: ./include/crypto/sha2.hhMhj"ubj)}(hhh]h)}(h-(output) the resulting SHA-512 message digesth]h-(output) the resulting SHA-512 message digest}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj#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:76: ./include/crypto/sha2.hhM 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:76: ./include/crypto/sha2.hhMhj"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:76: ./include/crypto/sha2.hhM hj"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:76: ./include/crypto/sha2.hhM hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j sha512 (C function)c.sha512hNtauh1hhjhhhNhNubj)}(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}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#hhhj#hMubjD)}(hsha512h]jJ)}(hsha512h]hsha512}(hj#hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj#hhhj#hMubj)}(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 classnameNj j)}j]j)}j j#sbc.sha512asbuh1hhj#ubj3)}(h h]h }(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubj*)}(hj-h]h*}(hj-$hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj#ubjJ)}(hdatah]hdata}(hj:$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjV$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjS$ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjX$modnameN classnameNj j)}j]j$c.sha512asbuh1hhjO$ubj3)}(h h]h }(hjt$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjO$ubjJ)}(hlenh]hlen}(hj$hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjO$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(h!u8 out[static SHA512_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 classnameNj j)}j]j$c.sha512asbuh1hhj$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*)}(hj9 h]h[}(hj$hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj$ubj!)}(hjG h]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)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj%hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj%modnameN classnameNj j)}j]j$c.sha512asbuh1hhj$ubj*)}(hj h]h]}(hj!%hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhj#hhhj#hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj#hhhj#hMubah}(h]j#ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj#hMhj#hhubjv)}(hhh]h)}(h*Compute SHA-512 message digest in one shoth]h*Compute SHA-512 message digest in one shot}(hjJ%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjG%hhubah}(h]h ]h"]h$]h&]uh1juhj#hhhj#hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjb%jjb%jjjuh1jhhhjhNhNubj)}(h**Parameters** ``const u8 *data`` the message data ``size_t len`` the data length in bytes ``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting SHA-512 message digest **Context** Any context.h](h)}(h**Parameters**h]j)}(hjl%h]h Parameters}(hjn%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj%ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjf%ubj)}(hhh](j)}(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:76: ./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 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:76: ./include/crypto/sha2.hhMhj%ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(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)}(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)}(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:76: ./include/crypto/sha2.hhMhj%ubj)}(hhh]h)}(h-(output) the resulting SHA-512 message digesth]h-(output) the resulting SHA-512 message digest}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhj%ubeh}(h]h ]h"]h$]h&]uh1jhjf%ubh)}(h **Context**h]j)}(hj8&h]hContext}(hj:&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6&ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjf%ubh)}(h Any context.h]h Any context.}(hjN&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjf%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_key (C struct)c.hmac_sha512_keyhNtauh1hhjhhhNhNubj)}(hhh](j)}(hhmac_sha512_keyh]j)}(hstruct hmac_sha512_keyh](j!)}(hj$h]hstruct}(hj}&hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjy&hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjy&hhhj&hMubjD)}(hhmac_sha512_keyh]jJ)}(hjw&h]hhmac_sha512_key}(hj&hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjy&hhhj&hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihju&hhhj&hMubah}(h]jp&ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj&hMhjr&hhubjv)}(hhh]h)}(hPrepared key for HMAC-SHA512h]hPrepared key for HMAC-SHA512}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj&hhubah}(h]h ]h"]h$]h&]uh1juhjr&hhhj&hMubeh}(h]h ](jstructeh"]h$]h&]jjjj&jj&jjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha512_key { struct __hmac_sha512_key key; }; **Members** ``key`` privateh](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:76: ./include/crypto/sha2.hhMhj&ubj)}(h=struct hmac_sha512_key { struct __hmac_sha512_key key; };h]h=struct hmac_sha512_key { struct __hmac_sha512_key key; };}hj&sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM 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:76: ./include/crypto/sha2.hhM$hj&ubj)}(hhh]j)}(h``key`` privateh](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:76: ./include/crypto/sha2.hhMhj&'ubj)}(hhh]h)}(hprivateh]hprivate}(hjE'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjB'ubah}(h]h ]h"]h$]h&]uh1jhj&'ubeh}(h]h ]h"]h$]h&]uh1jhjA'hMhj#'ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_ctx (C struct)c.hmac_sha512_ctxhNtauh1hhjhhhNhNubj)}(hhh](j)}(hhmac_sha512_ctxh]j)}(hstruct hmac_sha512_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:76: ./include/crypto/sha2.hhM"ubj3)}(h h]h }(hj'hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'hhhj'hM"ubjD)}(hhmac_sha512_ctxh]jJ)}(hj'h]hhmac_sha512_ctx}(hj'hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj'ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj'hhhj'hM"ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj~'hhhj'hM"ubah}(h]jy'ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj'hM"hj{'hhubjv)}(hhh]h)}(h.Context for computing HMAC-SHA512 of a messageh]h.Context for computing HMAC-SHA512 of a message}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM"hj'hhubah}(h]h ]h"]h$]h&]uh1juhj{'hhhj'hM"ubeh}(h]h ](jstructeh"]h$]h&]jjjj'jj'jjjuh1jhhhjhNhNubj)}(hu**Definition**:: struct hmac_sha512_ctx { struct __hmac_sha512_ctx ctx; }; **Members** ``ctx`` privateh](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:76: ./include/crypto/sha2.hhM&hj'ubj)}(h=struct hmac_sha512_ctx { struct __hmac_sha512_ctx ctx; };h]h=struct hmac_sha512_ctx { struct __hmac_sha512_ctx ctx; };}hj(sbah}(h]h ]h"]h$]h&]hhuh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM(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:76: ./include/crypto/sha2.hhM,hj'ubj)}(hhh]j)}(h``ctx`` privateh](j)}(h``ctx``h]j)}(hj5(h]hctx}(hj7(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3(ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM#hj/(ubj)}(hhh]h)}(hprivateh]hprivate}(hjN(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM$hjK(ubah}(h]h ]h"]h$]h&]uh1jhj/(ubeh}(h]h ]h"]h$]h&]uh1jhjJ(hM#hj,(ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #hmac_sha512_preparekey (C function)c.hmac_sha512_preparekeyhNtauh1hhjhhhNhNubj)}(hhh](j)}(h`void hmac_sha512_preparekey (struct hmac_sha512_key *key, const u8 *raw_key, size_t raw_key_len)h]j)}(h_void hmac_sha512_preparekey(struct hmac_sha512_key *key, const u8 *raw_key, size_t raw_key_len)h](j)}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM*ubj3)}(h h]h }(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(hhhj(hM*ubjD)}(hhmac_sha512_preparekeyh]jJ)}(hhmac_sha512_preparekeyh]hhmac_sha512_preparekey}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj(hhhj(hM*ubj)}(hD(struct hmac_sha512_key *key, const u8 *raw_key, size_t raw_key_len)h](j)}(hstruct hmac_sha512_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)}(hhmac_sha512_keyh]hhmac_sha512_key}(hj(hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj(modnameN classnameNj j)}j]j)}j j(sbc.hmac_sha512_preparekeyasbuh1hhj(ubj3)}(h h]h }(hj )hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubj*)}(hj-h]h*}(hj)hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj(ubjJ)}(hkeyh]hkey}(hj%)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj>)hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj:)ubj3)}(h h]h }(hjK)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:)ubh)}(hhh]jJ)}(hu8h]hu8}(hj\)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjY)ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj^)modnameN classnameNj j)}j]j)c.hmac_sha512_preparekeyasbuh1hhj:)ubj3)}(h h]h }(hjz)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:)ubj*)}(hj-h]h*}(hj)hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj:)ubjJ)}(hraw_keyh]hraw_key}(hj)hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(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 classnameNj j)}j]j)c.hmac_sha512_preparekeyasbuh1hhj)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&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhj(hhhj(hM*ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj(hhhj(hM*ubah}(h]j(ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj(hM*hj(hhubjv)}(hhh]h)}(hPrepare a key for HMAC-SHA512h]hPrepare a key for HMAC-SHA512}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM*hj*hhubah}(h]h ]h"]h$]h&]uh1juhj(hhhj(hM*ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj*jj*jjjuh1jhhhjhNhNubj)}(hX|**Parameters** ``struct hmac_sha512_key *key`` (output) the key structure 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. **Note** the caller is responsible for zeroizing both the struct hmac_sha512_key and the raw key once they are no longer needed. **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:76: ./include/crypto/sha2.hhM.hj#*ubj)}(hhh](j)}(hI``struct hmac_sha512_key *key`` (output) the key structure to initialize h](j)}(h``struct hmac_sha512_key *key``h]j)}(hjH*h]hstruct hmac_sha512_key *key}(hjJ*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF*ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM+hjB*ubj)}(hhh]h)}(h((output) the key structure to initializeh]h((output) the key structure to initialize}(hja*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]*hM+hj^*ubah}(h]h ]h"]h$]h&]uh1jhjB*ubeh}(h]h ]h"]h$]h&]uh1jhj]*hM+hj?*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:76: ./include/crypto/sha2.hhM,hj{*ubj)}(hhh]h)}(hthe raw HMAC-SHA512 keyh]hthe raw HMAC-SHA512 key}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hM,hj*ubah}(h]h ]h"]h$]h&]uh1jhj{*ubeh}(h]h ]h"]h$]h&]uh1jhj*hM,hj?*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:76: ./include/crypto/sha2.hhM-hj*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*hM-hj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hM-hj?*ubeh}(h]h ]h"]h$]h&]uh1jhj#*ubh)}(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:76: ./include/crypto/sha2.hhM/hj#*ubh)}(hwthe caller is responsible for zeroizing both the struct hmac_sha512_key and the raw key once they are no longer needed.h]hwthe caller is responsible for zeroizing both the struct hmac_sha512_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:76: ./include/crypto/sha2.hhM/hj#*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:76: ./include/crypto/sha2.hhM2hj#*ubh)}(h Any context.h]h Any context.}(hj2+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM2hj#*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_init (C function)c.hmac_sha512_inithNtauh1hhjhhhNhNubj)}(hhh](j)}(hVvoid hmac_sha512_init (struct hmac_sha512_ctx *ctx, const struct hmac_sha512_key *key)h]j)}(hUvoid hmac_sha512_init(struct hmac_sha512_ctx *ctx, const struct hmac_sha512_key *key)h](j)}(hvoidh]hvoid}(hja+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]+hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM8ubj3)}(h h]h }(hjp+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]+hhhjo+hM8ubjD)}(hhmac_sha512_inith]jJ)}(hhmac_sha512_inith]hhmac_sha512_init}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj~+ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj]+hhhjo+hM8ubj)}(h@(struct hmac_sha512_ctx *ctx, const struct hmac_sha512_key *key)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 classnameNj j)}j]j)}j j+sbc.hmac_sha512_initasbuh1hhj+ubj3)}(h h]h }(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubj*)}(hj-h]h*}(hj+hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj+ubjJ)}(hctxh]hctx}(hj+hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(h!const struct hmac_sha512_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}(hj+,hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj ,ubj3)}(h h]h }(hj8,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ,ubh)}(hhh]jJ)}(hhmac_sha512_keyh]hhmac_sha512_key}(hjI,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjF,ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjK,modnameN classnameNj j)}j]j+c.hmac_sha512_initasbuh1hhj ,ubj3)}(h h]h }(hjg,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ,ubj*)}(hj-h]h*}(hju,hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj ,ubjJ)}(hkeyh]hkey}(hj,hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj ,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhj]+hhhjo+hM8ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjY+hhhjo+hM8ubah}(h]jT+ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjo+hM8hjV+hhubjv)}(hhh]h)}(h3Initialize an HMAC-SHA512 context for a new messageh]h3Initialize an HMAC-SHA512 context for a new message}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM8hj,hhubah}(h]h ]h"]h$]h&]uh1juhjV+hhhjo+hM8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct hmac_sha512_ctx *ctx`` (output) the HMAC context to initialize ``const struct hmac_sha512_key *key`` the prepared HMAC key **Description** If you don't need incremental computation, consider hmac_sha512() 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:76: ./include/crypto/sha2.hhM<hj,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)}(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:76: ./include/crypto/sha2.hhM9hj,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-hM9hj-ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj-hM9hj,ubj)}(h<``const struct hmac_sha512_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha512_key *key``h]j)}(hj&-h]h!const struct hmac_sha512_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:76: ./include/crypto/sha2.hhM:hj -ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hj?-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;-hM:hj<-ubah}(h]h ]h"]h$]h&]uh1jhj -ubeh}(h]h ]h"]h$]h&]uh1jhj;-hM:hj,ubeh}(h]h ]h"]h$]h&]uh1jhj,ubh)}(h**Description**h]j)}(hja-h]h Description}(hjc-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_-ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM<hj,ubh)}(hJIf you don't need incremental computation, consider hmac_sha512() instead.h]hLIf you don’t need incremental computation, consider hmac_sha512() instead.}(hjw-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM;hj,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:76: ./include/crypto/sha2.hhM=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:76: ./include/crypto/sha2.hhM>hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )hmac_sha512_init_usingrawkey (C function)c.hmac_sha512_init_usingrawkeyhNtauh1hhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhj-hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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-hMGubj)}(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 classnameNj j)}j]j)}j j-sbc.hmac_sha512_init_usingrawkeyasbuh1hhj.ubj3)}(h h]h }(hjH.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubj*)}(hj-h]h*}(hjV.hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj.ubjJ)}(hctxh]hctx}(hjc.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hconst u8 *raw_keyh](j!)}(hjh]hconst}(hj|.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjx.ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjx.ubh)}(hhh]jJ)}(hu8h]hu8}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj.modnameN classnameNj j)}j]jD.c.hmac_sha512_init_usingrawkeyasbuh1hhjx.ubj3)}(h h]h }(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjx.ubj*)}(hj-h]h*}(hj.hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjx.ubjJ)}(hraw_keyh]hraw_key}(hj.hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjx.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.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 classnameNj j)}j]jD.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&]noemphhhuh1jhj.ubeh}(h]h ]h"]h$]h&]hhuh1jhj-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}(hjE/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMGhjB/hhubah}(h]h ]h"]h$]h&]uh1juhj-hhhj-hMGubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]/jj]/jjjuh1jhhhjhNhNubj)}(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)}(hjg/h]h Parameters}(hji/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje/ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMKhja/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)}(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:76: ./include/crypto/sha2.hhMIhj/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/hMIhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMIhj}/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:76: ./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/hMJhj}/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:76: ./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.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 0hMKhj0ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj 0hMKhj}/ubeh}(h]h ]h"]h$]h&]uh1jhja/ubh)}(h**Description**h]j)}(hj30h]h Description}(hj50hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj10ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMMhja/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.}(hjI0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMLhja/ubh)}(h **Context**h]j)}(hjZ0h]hContext}(hj\0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX0ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMOhja/ubh)}(h Any context.h]h Any context.}(hjp0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMPhja/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_update (C function)c.hmac_sha512_updatehNtauh1hhjhhhNhNubj)}(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}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMVubj3)}(h h]h }(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0hhhj0hMVubjD)}(hhmac_sha512_updateh]jJ)}(hhmac_sha512_updateh]hhmac_sha512_update}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj0hhhj0hMVubj)}(h>(struct hmac_sha512_ctx *ctx, const u8 *data, size_t data_len)h](j)}(hstruct hmac_sha512_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)}(hhmac_sha512_ctxh]hhmac_sha512_ctx}(hj0hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj0modnameN classnameNj j)}j]j)}j j0sbc.hmac_sha512_updateasbuh1hhj0ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubj*)}(hj-h]h*}(hj(1hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj0ubjJ)}(hctxh]hctx}(hj51hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hjN1hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjJ1ubj3)}(h h]h }(hj[1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJ1ubh)}(hhh]jJ)}(hu8h]hu8}(hjl1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhji1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjn1modnameN classnameNj j)}j]j1c.hmac_sha512_updateasbuh1hhjJ1ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJ1ubj*)}(hj-h]h*}(hj1hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjJ1ubjJ)}(hdatah]hdata}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjJ1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj1modnameN classnameNj j)}j]j1c.hmac_sha512_updateasbuh1hhj1ubj3)}(h h]h }(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubjJ)}(hdata_lenh]hdata_len}(hj1hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhj0hMVubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj0hhhj0hMVubah}(h]j0ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj0hMVhj0hhubjv)}(hhh]h)}(h/Update an HMAC-SHA512 context with message datah]h/Update an HMAC-SHA512 context with message data}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMVhj2hhubah}(h]h ]h"]h$]h&]uh1juhj0hhhj0hMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/2jj/2jjjuh1jhhhjhNhNubj)}(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)}(hj92h]h Parameters}(hj;2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj72ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMZhj32ubj)}(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)}(hjX2h]hstruct hmac_sha512_ctx *ctx}(hjZ2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMWhjR2ubj)}(hhh]h)}(h6the HMAC context to update; must have been initializedh]h6the HMAC context to update; must have been initialized}(hjq2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm2hMWhjn2ubah}(h]h ]h"]h$]h&]uh1jhjR2ubeh}(h]h ]h"]h$]h&]uh1jhjm2hMWhjO2ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj2h]hconst u8 *data}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMXhj2ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMXhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMXhjO2ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj2h]hsize_t data_len}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMYhj2ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMYhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMYhjO2ubeh}(h]h ]h"]h$]h&]uh1jhj32ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM[hj32ubh)}(h'This can be called any number of times.h]h'This can be called any number of times.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMZhj32ubh)}(h **Context**h]j)}(hj,3h]hContext}(hj.3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*3ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM\hj32ubh)}(h Any context.h]h Any context.}(hjB3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhM]hj32ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512_final (C function)c.hmac_sha512_finalhNtauh1hhjhhhNhNubj)}(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}(hjq3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm3hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMfubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjm3hhhj3hMfubjD)}(hhmac_sha512_finalh]jJ)}(hhmac_sha512_finalh]hhmac_sha512_final}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjm3hhhj3hMfubj)}(h@(struct hmac_sha512_ctx *ctx, u8 out[static SHA512_DIGEST_SIZE])h](j)}(hstruct hmac_sha512_ctx *ctxh](j!)}(hj$h]hstruct}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubh)}(hhh]jJ)}(hhmac_sha512_ctxh]hhmac_sha512_ctx}(hj3hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj3modnameN classnameNj j)}j]j)}j j3sbc.hmac_sha512_finalasbuh1hhj3ubj3)}(h h]h }(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubj*)}(hj-h]h*}(hj3hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj3ubjJ)}(hctxh]hctx}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj#4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj 4ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj%4modnameN classnameNj j)}j]j3c.hmac_sha512_finalasbuh1hhj4ubj3)}(h h]h }(hjA4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubjJ)}(houth]hout}(hjO4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubj*)}(hj9 h]h[}(hj]4hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj4ubj!)}(hjG h]hstatic}(hjj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj4ubj3)}(h h]h }(hjw4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj4hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj4modnameN classnameNj j)}j]j3c.hmac_sha512_finalasbuh1hhj4ubj*)}(hj h]h]}(hj4hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubeh}(h]h ]h"]h$]h&]hhuh1jhjm3hhhj3hMfubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihji3hhhj3hMfubah}(h]jd3ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj3hMfhjf3hhubjv)}(hhh]h)}(h%Finish computing an HMAC-SHA512 valueh]h%Finish computing an HMAC-SHA512 value}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMfhj4hhubah}(h]h ]h"]h$]h&]uh1juhjf3hhhj3hMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4jj4jjjuh1jhhhjhNhNubj)}(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)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMjhj4ubj)}(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)}(hj5h]hstruct hmac_sha512_ctx *ctx}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMghj 5ubj)}(hhh]h)}(h8the HMAC context to finalize; must have been initializedh]h8the HMAC context to finalize; must have been initialized}(hj)5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%5hMghj&5ubah}(h]h ]h"]h$]h&]uh1jhj 5ubeh}(h]h ]h"]h$]h&]uh1jhj%5hMghj5ubj)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hjI5h]h!u8 out[static SHA512_DIGEST_SIZE]}(hjK5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhhjC5ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hjb5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^5hMhhj_5ubah}(h]h ]h"]h$]h&]uh1jhjC5ubeh}(h]h ]h"]h$]h&]uh1jhj^5hMhhj5ubeh}(h]h ]h"]h$]h&]uh1jhj4ubh)}(h**Description**h]j)}(hj5h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMjhj4ubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hj5hhhNhNubj)}(h**ctx**h]hctx}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh(. So the caller does not need to do it.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMihj4ubh)}(h **Context**h]j)}(hj5h]hContext}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMkhj4ubh)}(h Any context.h]h Any context.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMlhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j hmac_sha512 (C function) c.hmac_sha512hNtauh1hhjhhhNhNubj)}(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}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMrubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5hhhj6hMrubjD)}(h hmac_sha512h]jJ)}(h hmac_sha512h]h hmac_sha512}(hj#6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj5hhhj6hMrubj)}(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}(hj?6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj;6ubj3)}(h h]h }(hjL6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;6ubj!)}(hj$h]hstruct}(hjZ6hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj;6ubj3)}(h h]h }(hjg6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;6ubh)}(hhh]jJ)}(hhmac_sha512_keyh]hhmac_sha512_key}(hjx6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhju6ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjz6modnameN classnameNj j)}j]j)}j j%6sb c.hmac_sha512asbuh1hhj;6ubj3)}(h h]h }(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj;6ubj*)}(hj-h]h*}(hj6hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj;6ubjJ)}(hkeyh]hkey}(hj6hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj;6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj76ubj)}(hconst u8 *datah](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 classnameNj j)}j]j6 c.hmac_sha512asbuh1hhj6ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubj*)}(hj-h]h*}(hj7hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj6ubjJ)}(hdatah]hdata}(hj#7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj76ubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj?7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj<7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjA7modnameN classnameNj j)}j]j6 c.hmac_sha512asbuh1hhj87ubj3)}(h h]h }(hj]7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj87ubjJ)}(hdata_lenh]hdata_len}(hjk7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj87ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj76ubj)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj7modnameN classnameNj j)}j]j6 c.hmac_sha512asbuh1hhj7ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubjJ)}(houth]hout}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubj*)}(hj9 h]h[}(hj7hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj7ubj!)}(hjG h]hstatic}(hj7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj7ubj3)}(h h]h }(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj7hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj7modnameN classnameNj j)}j]j6 c.hmac_sha512asbuh1hhj7ubj*)}(hj h]h]}(hj 8hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj76ubeh}(h]h ]h"]h$]h&]hhuh1jhj5hhhj6hMrubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj5hhhj6hMrubah}(h]j5ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj6hMrhj5hhubjv)}(hhh]h)}(h5Compute HMAC-SHA512 in one shot, using a prepared keyh]h5Compute HMAC-SHA512 in one shot, using a prepared key}(hj38hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMrhj08hhubah}(h]h ]h"]h$]h&]uh1juhj5hhhj6hMrubeh}(h]h ](jfunctioneh"]h$]h&]jjjjK8jjK8jjjuh1jhhhjhNhNubj)}(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)}(hjU8h]h Parameters}(hjW8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS8ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMvhjO8ubj)}(hhh](j)}(h<``const struct hmac_sha512_key *key`` the prepared HMAC key h](j)}(h%``const struct hmac_sha512_key *key``h]j)}(hjt8h]h!const struct hmac_sha512_key *key}(hjv8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMshjn8ubj)}(hhh]h)}(hthe prepared HMAC keyh]hthe prepared HMAC key}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMshj8ubah}(h]h ]h"]h$]h&]uh1jhjn8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMshjk8ubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj8h]hconst u8 *data}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMthj8ubj)}(hhh]h)}(hthe message datah]hthe message data}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMthj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMthjk8ubj)}(h-``size_t data_len`` the data length in bytes h](j)}(h``size_t data_len``h]j)}(hj8h]hsize_t data_len}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMuhj8ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMuhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMuhjk8ubj)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hj9h]h!u8 out[static SHA512_DIGEST_SIZE]}(hj!9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMvhj9ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hj89hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj49hMvhj59ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj49hMvhjk8ubeh}(h]h ]h"]h$]h&]uh1jhjO8ubh)}(h**Description**h]j)}(hjZ9h]h Description}(hj\9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX9ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMxhjO8ubh)}(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().}(hjp9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMwhjO8ubh)}(h **Context**h]j)}(hj9h]hContext}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMyhjO8ubh)}(h Any context.h]h Any context.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMzhjO8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $hmac_sha512_usingrawkey (C function)c.hmac_sha512_usingrawkeyhNtauh1hhjhhhNhNubj)}(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}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMubj3)}(h h]h }(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9hhhj9hMubjD)}(hhmac_sha512_usingrawkeyh]jJ)}(hhmac_sha512_usingrawkeyh]hhmac_sha512_usingrawkey}(hj9hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChj9hhhj9hMubj)}(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}(hj:hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj9ubj3)}(h h]h }(hj:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubh)}(hhh]jJ)}(hu8h]hu8}(hj!:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj#:modnameN classnameNj j)}j]j)}j j9sbc.hmac_sha512_usingrawkeyasbuh1hhj9ubj3)}(h h]h }(hjA:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubj*)}(hj-h]h*}(hjO:hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj9ubjJ)}(hraw_keyh]hraw_key}(hj\:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(hsize_t raw_key_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjx:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhju:ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjz:modnameN classnameNj j)}j]j=:c.hmac_sha512_usingrawkeyasbuh1hhjq:ubj3)}(h h]h }(hj:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjq:ubjJ)}(h raw_key_lenh]h raw_key_len}(hj:hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjq:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(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 classnameNj j)}j]j=:c.hmac_sha512_usingrawkeyasbuh1hhj:ubj3)}(h h]h }(hj:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubj*)}(hj-h]h*}(hj;hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj:ubjJ)}(hdatah]hdata}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(hsize_t data_lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hj0;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj-;ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj2;modnameN classnameNj j)}j]j=:c.hmac_sha512_usingrawkeyasbuh1hhj);ubj3)}(h h]h }(hjN;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&]noemphhhuh1jhj9ubj)}(h!u8 out[static SHA512_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjx;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhju;ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjz;modnameN classnameNj j)}j]j=:c.hmac_sha512_usingrawkeyasbuh1hhjq;ubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjq;ubjJ)}(houth]hout}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjq;ubj*)}(hj9 h]h[}(hj;hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjq;ubj!)}(hjG h]hstatic}(hj;hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjq;ubj3)}(h h]h }(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjq;ubh)}(hhh]jJ)}(hSHA512_DIGEST_SIZEh]hSHA512_DIGEST_SIZE}(hj;hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj;modnameN classnameNj j)}j]j=:c.hmac_sha512_usingrawkeyasbuh1hhjq;ubj*)}(hj h]h]}(hj;hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjq;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubeh}(h]h ]h"]h$]h&]hhuh1jhj9hhhj9hMubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj9hhhj9hMubah}(h]j9ah ](jmjneh"]h$]h&]jrjs)jthuh1jhj9hMhj9hhubjv)}(hhh]h)}(h0Compute HMAC-SHA512 in one shot, using a raw keyh]h0Compute HMAC-SHA512 in one shot, using a raw key}(hj$<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj!<hhubah}(h]h ]h"]h$]h&]uh1juhj9hhhj9hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<<jj<<jjjuh1jhhhjhNhNubj)}(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)}(hjF<h]h Parameters}(hjH<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD<ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj@<ubj)}(hhh](j)}(h.``const u8 *raw_key`` the raw HMAC-SHA512 key h](j)}(h``const u8 *raw_key``h]j)}(hje<h]hconst u8 *raw_key}(hjg<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc<ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj_<ubj)}(hhh]h)}(hthe raw HMAC-SHA512 keyh]hthe raw HMAC-SHA512 key}(hj~<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz<hMhj{<ubah}(h]h ]h"]h$]h&]uh1jhj_<ubeh}(h]h ]h"]h$]h&]uh1jhjz<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}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhj<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<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:76: ./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)}(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:76: ./include/crypto/sha2.hhMhj =ubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(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)}(hO``u8 out[static SHA512_DIGEST_SIZE]`` (output) the resulting HMAC-SHA512 value h](j)}(h%``u8 out[static SHA512_DIGEST_SIZE]``h]j)}(hjI=h]h!u8 out[static SHA512_DIGEST_SIZE]}(hjK=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG=ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./include/crypto/sha2.hhMhjC=ubj)}(hhh]h)}(h((output) the resulting HMAC-SHA512 valueh]h((output) the resulting HMAC-SHA512 value}(hjb=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^=hMhj_=ubah}(h]h ]h"]h$]h&]uh1jhjC=ubeh}(h]h ]h"]h$]h&]uh1jhj^=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:76: ./include/crypto/sha2.hhMhj@<ubh)}(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.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:76: ./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:76: ./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:76: ./include/crypto/sha2.hhMhj@<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]sha-2ah ]h"]sha-2ah$]h&]uh1hhhhhhhhKFubh)}(hhh](h)}(hSHA-3h]hSHA-3}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hhhhhKOubh)}(h+The SHA-3 API is documented in :ref:`sha3`.h](hThe SHA-3 API is 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 reftargetsha3uh1hhhhKQhj=ubh.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKQhj=hhubeh}(h]sha-3ah ]h"]sha-3ah$]h&]uh1hhhhhhhhKOubh)}(hhh](h)}(hSM3h]hSM3}(hj2>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/>hhhhhKTubh)}(hBThis API provides support for the SM3 cryptographic hash function.h]hBThis API provides support for the SM3 cryptographic hash function.}(hj@>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhj/>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}(hjg>hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjc>hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKubj3)}(h h]h }(hju>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjc>hhhjt>hKubjD)}(hsm3_ctxh]jJ)}(hja>h]hsm3_ctx}(hj>hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj>ubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjc>hhhjt>hKubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihj_>hhhjt>hKubah}(h]jZ>ah ](jmjneh"]h$]h&]jrjs)jthuh1jhjt>hKhj\>hhubjv)}(hhh]h)}(h&Context for hashing a message with SM3h]h&Context for hashing a message with SM3}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK!hj>hhubah}(h]h ]h"]h$]h&]uh1juhj\>hhhjt>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:88: ./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:88: ./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:88: ./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:88: ./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)}(hjO?h]h bytecount}(hjQ?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM?ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK$hjI?ubj)}(hhh]h)}(h number of bytes processed so farh]h number of bytes processed so far}(hjh?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd?hK$hje?ubah}(h]h ]h"]h$]h&]uh1jhjI?ubeh}(h]h ]h"]h$]h&]uh1jhjd?hK$hj ?ubj)}(hH``buf`` partial block buffer; bytecount % SM3_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:88: ./include/crypto/sm3.hhK$hj?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}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.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 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 ]jah"]h$]h&]uh1jhj?hhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./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-ubj)}(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 classnameNj j)}j]j)}j j@sb c.sm3_initasbuh1hhj@ubj3)}(h h]h }(hj]@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubj*)}(hj-h]h*}(hjk@hhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj@ubjJ)}(hctxh]hctx}(hjx@hhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubah}(h]h ]h"]h$]h&]hhuh1jhj?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}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK-hj@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:88: ./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:88: ./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)}(hjAh]h Description}(hj AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./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.}(hj4AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK/hj@ubh)}(h **Context**h]j)}(hjEAh]hContext}(hjGAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCAubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK1hj@ubh)}(h Any context.h]h Any context.}(hj[AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./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}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK7ubj3)}(h h]h }(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAhhhjAhK7ubjD)}(h sm3_updateh]jJ)}(h sm3_updateh]h sm3_update}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjAhhhjAhK7ubj)}(h1(struct sm3_ctx *ctx, const u8 *data, size_t len)h](j)}(hstruct sm3_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)}(hsm3_ctxh]hsm3_ctx}(hjAhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjAmodnameN classnameNj j)}j]j)}j jAsb c.sm3_updateasbuh1hhjAubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubj*)}(hj-h]h*}(hjBhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjAubjJ)}(hctxh]hctx}(hj BhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubj)}(hconst u8 *datah](j!)}(hjh]hconst}(hj9BhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj5Bubj3)}(h h]h }(hjFBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5Bubh)}(hhh]jJ)}(hu8h]hu8}(hjWBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjTBubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjYBmodnameN classnameNj j)}j]jB c.sm3_updateasbuh1hhj5Bubj3)}(h h]h }(hjuBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5Bubj*)}(hj-h]h*}(hjBhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj5BubjJ)}(hdatah]hdata}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj5Bubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjBmodnameN classnameNj j)}j]jB c.sm3_updateasbuh1hhjBubj3)}(h h]h }(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubjJ)}(hlenh]hlen}(hjBhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubeh}(h]h ]h"]h$]h&]hhuh1jhjAhhhjAhK7ubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjAhhhjAhK7ubah}(h]j}Aah ](jmjneh"]h$]h&]jrjs)jthuh1jhjAhK7hjAhhubjv)}(hhh]h)}(h'Update an SM3 context with message datah]h'Update an SM3 context with message data}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK7hjBhhubah}(h]h ]h"]h$]h&]uh1juhjAhhhjAhK7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCjjCjjjuh1jhhhj/>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$Ch]h Parameters}(hj&ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"Cubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK;hjCubj)}(hhh](j)}(hJ``struct sm3_ctx *ctx`` the context to update; must have been initialized h](j)}(h``struct sm3_ctx *ctx``h]j)}(hjCCh]hstruct sm3_ctx *ctx}(hjEChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjACubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK8hj=Cubj)}(hhh]h)}(h1the context to update; must have been initializedh]h1the context to update; must have been initialized}(hj\ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXChK8hjYCubah}(h]h ]h"]h$]h&]uh1jhj=Cubeh}(h]h ]h"]h$]h&]uh1jhjXChK8hj:Cubj)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hj|Ch]hconst u8 *data}(hj~ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzCubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK9hjvCubj)}(hhh]h)}(hthe message datah]hthe message data}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChK9hjCubah}(h]h ]h"]h$]h&]uh1jhjvCubeh}(h]h ]h"]h$]h&]uh1jhjChK9hj:Cubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hjCh]h size_t len}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhK:hjCubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChK:hjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjChK:hj:Cubeh}(h]h ]h"]h$]h&]uh1jhjCubh)}(h**Description**h]j)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKhjCubeh}(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\DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXDhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKCubj3)}(h h]h }(hjkDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXDhhhjjDhKCubjD)}(h sm3_finalh]jJ)}(h sm3_finalh]h sm3_final}(hj}DhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjyDubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjXDhhhjjDhKCubj)}(h5(struct sm3_ctx *ctx, u8 out[static SM3_DIGEST_SIZE])h](j)}(hstruct sm3_ctx *ctxh](j!)}(hj$h]hstruct}(hjDhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjDubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubh)}(hhh]jJ)}(hsm3_ctxh]hsm3_ctx}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjDmodnameN classnameNj j)}j]j)}j jDsb c.sm3_finalasbuh1hhjDubj3)}(h h]h }(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubj*)}(hj-h]h*}(hjDhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjDubjJ)}(hctxh]hctx}(hjDhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDubj)}(hu8 out[static SM3_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Eubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjEmodnameN classnameNj j)}j]jD c.sm3_finalasbuh1hhjEubj3)}(h h]h }(hj,EhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubjJ)}(houth]hout}(hj:EhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEubj*)}(hj9 h]h[}(hjHEhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjEubj!)}(hjG h]hstatic}(hjUEhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjEubj3)}(h h]h }(hjbEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubh)}(hhh]jJ)}(hSM3_DIGEST_SIZEh]hSM3_DIGEST_SIZE}(hjsEhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjpEubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjuEmodnameN classnameNj j)}j]jD c.sm3_finalasbuh1hhjEubj*)}(hj h]h]}(hjEhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDubeh}(h]h ]h"]h$]h&]hhuh1jhjXDhhhjjDhKCubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjTDhhhjjDhKCubah}(h]jODah ](jmjneh"]h$]h&]jrjs)jthuh1jhjjDhKChjQDhhubjv)}(hhh]h)}(h&Finish computing an SM3 message digesth]h&Finish computing an SM3 message digest}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKChjEhhubah}(h]h ]h"]h$]h&]uh1juhjQDhhhjjDhKCubeh}(h]h ](jfunctioneh"]h$]h&]jjjjEjjEjjjuh1jhhhj/>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)}(hjEh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKGhjEubj)}(hhh](j)}(hL``struct sm3_ctx *ctx`` the context to finalize; must have been initialized h](j)}(h``struct sm3_ctx *ctx``h]j)}(hjEh]hstruct sm3_ctx *ctx}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKDhjEubj)}(hhh]h)}(h3the context to finalize; must have been initializedh]h3the context to finalize; must have been initialized}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKDhjFubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjFhKDhjEubj)}(hM``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest h](j)}(h"``u8 out[static SM3_DIGEST_SIZE]``h]j)}(hj4Fh]hu8 out[static SM3_DIGEST_SIZE]}(hj6FhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2Fubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKEhj.Fubj)}(hhh]h)}(h)(output) the resulting SM3 message digesth]h)(output) the resulting SM3 message digest}(hjMFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIFhKEhjJFubah}(h]h ]h"]h$]h&]uh1jhj.Fubeh}(h]h ]h"]h$]h&]uh1jhjIFhKEhjEubeh}(h]h ]h"]h$]h&]uh1jhjEubh)}(h**Description**h]j)}(hjoFh]h Description}(hjqFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmFubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKGhjEubh)}(hNAfter finishing, this zeroizes **ctx**. So the caller does not need to do it.h](hAfter finishing, this zeroizes }(hjFhhhNhNubj)}(h**ctx**h]hctx}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh(. So the caller does not need to do it.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKFhjEubh)}(h **Context**h]j)}(hjFh]hContext}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKHhjEubh)}(h Any context.h]h Any context.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKIhjEubeh}(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}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKNubj3)}(h h]h }(hjFhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFhhhjFhKNubjD)}(hsm3h]jJ)}(hsm3h]hsm3}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj Gubah}(h]h ](j\j]eh"]h$]h&]hhuh1jChjFhhhjFhKNubj)}(h<(const u8 *data, size_t len, u8 out[static SM3_DIGEST_SIZE])h](j)}(hconst u8 *datah](j!)}(hjh]hconst}(hj*GhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hj&Gubj3)}(h h]h }(hj7GhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&Gubh)}(hhh]jJ)}(hu8h]hu8}(hjHGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjEGubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjJGmodnameN classnameNj j)}j]j)}j jGsbc.sm3asbuh1hhj&Gubj3)}(h h]h }(hjhGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&Gubj*)}(hj-h]h*}(hjvGhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hj&GubjJ)}(hdatah]hdata}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhj&Gubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"Gubj)}(h size_t lenh](h)}(hhh]jJ)}(hsize_th]hsize_t}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjGmodnameN classnameNj j)}j]jdGc.sm3asbuh1hhjGubj3)}(h h]h }(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubjJ)}(hlenh]hlen}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"Gubj)}(hu8 out[static SM3_DIGEST_SIZE]h](h)}(hhh]jJ)}(hu8h]hu8}(hjGhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjGmodnameN classnameNj j)}j]jdGc.sm3asbuh1hhjGubj3)}(h h]h }(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubjJ)}(houth]hout}(hjHhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjGubj*)}(hj9 h]h[}(hj!HhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjGubj!)}(hjG h]hstatic}(hj.HhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j hjGubj3)}(h h]h }(hj;HhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubh)}(hhh]jJ)}(hSM3_DIGEST_SIZEh]hSM3_DIGEST_SIZE}(hjLHhhhNhNubah}(h]h ]jUah"]h$]h&]uh1jIhjIHubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjNHmodnameN classnameNj j)}j]jdGc.sm3asbuh1hhjGubj*)}(hj h]h]}(hjjHhhhNhNubah}(h]h ]j6ah"]h$]h&]uh1j)hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"Gubeh}(h]h ]h"]h$]h&]hhuh1jhjFhhhjFhKNubeh}(h]h ]h"]h$]h&]hhjguh1jjhjihjFhhhjFhKNubah}(h]jFah ](jmjneh"]h$]h&]jrjs)jthuh1jhjFhKNhjFhhubjv)}(hhh]h)}(h&Compute SM3 message digest in one shoth]h&Compute SM3 message digest in one shot}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKNhjHhhubah}(h]h ]h"]h$]h&]uh1juhjFhhhjFhKNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1jhhhj/>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)}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKRhjHubj)}(hhh](j)}(h$``const u8 *data`` the message data h](j)}(h``const u8 *data``h]j)}(hjHh]hconst u8 *data}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKOhjHubj)}(hhh]h)}(hthe message datah]hthe message data}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhKOhjHubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjHhKOhjHubj)}(h(``size_t len`` the data length in bytes h](j)}(h``size_t len``h]j)}(hj Ih]h size_t len}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Iubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKPhjIubj)}(hhh]h)}(hthe data length in bytesh]hthe data length in bytes}(hj&IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"IhKPhj#Iubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhj"IhKPhjHubj)}(hM``u8 out[static SM3_DIGEST_SIZE]`` (output) the resulting SM3 message digest h](j)}(h"``u8 out[static SM3_DIGEST_SIZE]``h]j)}(hjFIh]hu8 out[static SM3_DIGEST_SIZE]}(hjHIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDIubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKQhj@Iubj)}(hhh]h)}(h)(output) the resulting SM3 message digesth]h)(output) the resulting SM3 message digest}(hj_IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[IhKQhj\Iubah}(h]h ]h"]h$]h&]uh1jhj@Iubeh}(h]h ]h"]h$]h&]uh1jhj[IhKQhjHubeh}(h]h ]h"]h$]h&]uh1jhjHubh)}(h **Context**h]j)}(hjIh]hContext}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKShjHubh)}(h Any context.h]h Any context.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-hash:88: ./include/crypto/sm3.hhKShjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj/>hhhNhNubeh}(h]sm3ah ]h"]sm3ah$]h&]uh1hhhhhhhhKTubeh}(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_handlerjIerror_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}(jIjIjEjBj2)j/)j:j:jbjbj7j4jjj9j6jjj=j=j,>j)>jIjIu nametypes}(jIjEj2)j:jbj7jj9jj=j,>jIuh}(jIhjBhj jjjjjjjj(j-j# j( j j j%j*jjjjj/)jHjsjxjjjjjjj"j"j$j$j:j5)j`)je)j+j+j-j-j0j0j3j3j5j5jbj":jM:jR:j<j<j'>j,>j?j?jAj!AjBjBjEjEjGjGjIjIjKjKjNjNj!Qj&QjSjSjVjVjJYjOYj[j[jQ_jV_j4jbjbjbjudjzdjfj"fjhjhjkjkjYnj^njojojpjpjsjsjvj vjxjxj{j{jP~jU~jjjj:jejjj6jjj<jgjljjjjj\jajjjƕj˕jj jJjOjj!jjjZj_j,j1jj¥jjj=jjҭj׭jۮjjjjUjZjjjjĸjȹj͹jѺjֺjjjjjjjjjDjIjj j2j7j;j@jjjjjFjKjj$jajfjjjjjjjjjjjjjjj5j:jjj#j(j,j1jjjjj7j<jjjjj"j'jjj` je j2j7jj jjjYj^jjjjj4j9j!j !j#j#jp&ju&jy'j~'j(j(jT+jY+j-j-j0j0jd3ji3j5j5j9j9j)>j=jIj/>jZ>j_>j?j?j}AjAjODjTDjFjFu 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.