€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ%/translations/zh_CN/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/zh_TW/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/it_IT/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ja_JP/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ko_KR/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/pt_BR/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/sp_SP/crypto/api-digest”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒMessage Digest”h]”hŒMessage Digest”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/crypto/api-digest.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ$Message Digest Algorithm Definitions”h]”hŒ$Message Digest Algorithm Definitions”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒÅThese data structures define modular message digest algorithm implementations, managed via crypto_register_ahash(), crypto_register_shash(), crypto_unregister_ahash() and crypto_unregister_shash().”h]”hŒÅThese data structures define modular message digest algorithm implementations, managed via crypto_register_ahash(), crypto_register_shash(), crypto_unregister_ahash() and crypto_unregister_shash().”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒV/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:7: ./include/crypto/hash.h”h´KhhËh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œahash_alg (C struct)”Œ c.ahash_alg”hNt”auh1híhhËh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ ahash_alg”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct ahash_alg”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhj h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j!hj h²hh³j h´KubhŒ desc_name”“”)�”}”(hŒ ahash_alg”h]”hŒ desc_sig_name”“”)�”}”(hjh]”hŒ ahash_alg”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j8hj4ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j2hj h²hh³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQŒ add_permalink”ˆuh1j Œsphinx_line_type”Œ declarator”hjh²hh³j h´Kubah}”(h]”hüah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒ&asynchronous message digest definition”h]”hŒ&asynchronous message digest definition”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KLhjhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jƒŒobjtype”j„Œdesctype”j„Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1hþh²hhhËh³Nh´NubhŒ container”“”)�”}”(hXÔ**Definition**:: struct ahash_alg { int (*init)(struct ahash_request *req); int (*update)(struct ahash_request *req); int (*final)(struct ahash_request *req); int (*finup)(struct ahash_request *req); int (*digest)(struct ahash_request *req); int (*export)(struct ahash_request *req, void *out); int (*import)(struct ahash_request *req, const void *in); int (*export_core)(struct ahash_request *req, void *out); int (*import_core)(struct ahash_request *req, const void *in); int (*setkey)(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_ahash *tfm); void (*exit_tfm)(struct crypto_ahash *tfm); struct hash_alg_common halg; }; **Members** ``init`` **[mandatory]** Initialize the transformation context. Intended only to initialize the state of the HASH transformation at the beginning. This shall fill in the internal structures used during the entire duration of the whole transformation. No data processing happens at this point. Driver code implementation must not use req->result. ``update`` **[mandatory]** Push a chunk of data into the driver for transformation. This function actually pushes blocks of data from upper layers into the driver, which then passes those to the hardware as seen fit. This function must not finalize the HASH transformation by calculating the final message digest as this only adds more data into the transformation. This function shall not modify the transformation context, as this function may be called in parallel with the same transformation object. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. Driver must not use req->result. For block-only algorithms, **update** must return the number of bytes to store in the API partial block buffer. ``final`` **[mandatory]** Retrieve result from the driver. This function finalizes the transformation and retrieves the resulting hash from the driver and pushes it back to upper layers. No data processing happens at this point unless hardware requires it to finish the transformation (then the data buffered by the device driver is processed). ``finup`` **[optional]** Combination of **update** and **final**. This function is effectively a combination of **update** and **final** calls issued in sequence. As some hardware cannot do **update** and **final** separately, this callback was added to allow such hardware to be used at least by IPsec. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. ``digest`` Combination of **init** and **update** and **final**. This function effectively behaves as the entire chain of operations, **init**, **update** and **final** issued in sequence. Just like **finup**, this was added for hardware which cannot do even the **finup**, but can only do the whole transformation in one run. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. ``export`` Export partial state of the transformation. This function dumps the entire state of the ongoing transformation into a provided block of data so it can be **import** 'ed back later on. This is useful in case you want to save partial result of the transformation after processing certain amount of data and reload this partial result multiple times later on for multiple re-use. No data processing happens at this point. Driver must not use req->result. ``import`` Import partial state of the transformation. This function loads the entire state of the ongoing transformation from a provided block of data so the transformation can continue from this point onward. No data processing happens at this point. Driver must not use req->result. ``export_core`` Export partial state without partial block. Only defined for algorithms that are not block-only. ``import_core`` Import partial state without partial block. Only defined for algorithms that are not block-only. ``setkey`` Set optional key used by the hashing algorithm. Intended to push optional key used by the hashing algorithm from upper layers into the driver. This function can store the key in the transformation context or can outright program it into the hardware. In the former case, one must be careful to program the key into the hardware at appropriate time and one must be careful that .setkey() can be called multiple times during the existence of the transformation object. Not all hashing algorithms do implement this function as it is only needed for keyed message digests. SHAx/MDx/CRCx do NOT implement this function. HMAC(MDx)/HMAC(SHAx)/CMAC(AES) do implement this function. This function must be called before any other of the **init**, **update**, **final**, **finup**, **digest** is called. No data processing happens at this point. ``init_tfm`` Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. ``exit_tfm`` Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**. ``halg`` see struct hash_alg_common”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj”ubhŒ:”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KPhj�ubhŒ literal_block”“”)�”}”(hXÀstruct ahash_alg { int (*init)(struct ahash_request *req); int (*update)(struct ahash_request *req); int (*final)(struct ahash_request *req); int (*finup)(struct ahash_request *req); int (*digest)(struct ahash_request *req); int (*export)(struct ahash_request *req, void *out); int (*import)(struct ahash_request *req, const void *in); int (*export_core)(struct ahash_request *req, void *out); int (*import_core)(struct ahash_request *req, const void *in); int (*setkey)(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_ahash *tfm); void (*exit_tfm)(struct crypto_ahash *tfm); struct hash_alg_common halg; };”h]”hXÀstruct ahash_alg { int (*init)(struct ahash_request *req); int (*update)(struct ahash_request *req); int (*final)(struct ahash_request *req); int (*finup)(struct ahash_request *req); int (*digest)(struct ahash_request *req); int (*export)(struct ahash_request *req, void *out); int (*import)(struct ahash_request *req, const void *in); int (*export_core)(struct ahash_request *req, void *out); int (*import_core)(struct ahash_request *req, const void *in); int (*setkey)(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_ahash *tfm); void (*exit_tfm)(struct crypto_ahash *tfm); struct hash_alg_common halg; };”…”�”}”hjµsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j³h³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KRhj�ubhÝ)�”}”(hŒ **Members**”h]”j™)�”}”(hjÆh]”hŒMembers”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kbhj�ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXZ``init`` **[mandatory]** Initialize the transformation context. Intended only to initialize the state of the HASH transformation at the beginning. This shall fill in the internal structures used during the entire duration of the whole transformation. No data processing happens at this point. Driver code implementation must not use req->result. ”h]”(hŒterm”“”)�”}”(hŒ``init``”h]”hŒliteral”“”)�”}”(hjëh]”hŒinit”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KRhjãubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hXP**[mandatory]** Initialize the transformation context. Intended only to initialize the state of the HASH transformation at the beginning. This shall fill in the internal structures used during the entire duration of the whole transformation. No data processing happens at this point. Driver code implementation must not use req->result.”h]”(j™)�”}”(hŒ**[mandatory]**”h]”hŒ [mandatory]”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjubhXA Initialize the transformation context. Intended only to initialize the state of the HASH transformation at the beginning. This shall fill in the internal structures used during the entire duration of the whole transformation. No data processing happens at this point. Driver code implementation must not use req->result.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KNhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jh´KRhjÞubjâ)�”}”(hXä``update`` **[mandatory]** Push a chunk of data into the driver for transformation. This function actually pushes blocks of data from upper layers into the driver, which then passes those to the hardware as seen fit. This function must not finalize the HASH transformation by calculating the final message digest as this only adds more data into the transformation. This function shall not modify the transformation context, as this function may be called in parallel with the same transformation object. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. Driver must not use req->result. For block-only algorithms, **update** must return the number of bytes to store in the API partial block buffer. ”h]”(jè)�”}”(hŒ ``update``”h]”jî)�”}”(hj7h]”hŒupdate”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K^hj1ubj)�”}”(hhh]”hÝ)�”}”(hXØ**[mandatory]** Push a chunk of data into the driver for transformation. This function actually pushes blocks of data from upper layers into the driver, which then passes those to the hardware as seen fit. This function must not finalize the HASH transformation by calculating the final message digest as this only adds more data into the transformation. This function shall not modify the transformation context, as this function may be called in parallel with the same transformation object. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. Driver must not use req->result. For block-only algorithms, **update** must return the number of bytes to store in the API partial block buffer.”h]”(j™)�”}”(hŒ**[mandatory]**”h]”hŒ [mandatory]”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjPubhXu Push a chunk of data into the driver for transformation. This function actually pushes blocks of data from upper layers into the driver, which then passes those to the hardware as seen fit. This function must not finalize the HASH transformation by calculating the final message digest as this only adds more data into the transformation. This function shall not modify the transformation context, as this function may be called in parallel with the same transformation object. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. Driver must not use req->result. For block-only algorithms, ”…”�”}”(hjPh²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjPubhŒJ must return the number of bytes to store in the API partial block buffer.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KShjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jLh´K^hjÞubjâ)�”}”(hXY``final`` **[mandatory]** Retrieve result from the driver. This function finalizes the transformation and retrieves the resulting hash from the driver and pushes it back to upper layers. No data processing happens at this point unless hardware requires it to finish the transformation (then the data buffered by the device driver is processed). ”h]”(jè)�”}”(hŒ ``final``”h]”jî)�”}”(hj‘h]”hŒfinal”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kchj‹ubj)�”}”(hhh]”hÝ)�”}”(hXN**[mandatory]** Retrieve result from the driver. This function finalizes the transformation and retrieves the resulting hash from the driver and pushes it back to upper layers. No data processing happens at this point unless hardware requires it to finish the transformation (then the data buffered by the device driver is processed).”h]”(j™)�”}”(hŒ**[mandatory]**”h]”hŒ [mandatory]”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjªubhX? Retrieve result from the driver. This function finalizes the transformation and retrieves the resulting hash from the driver and pushes it back to upper layers. No data processing happens at this point unless hardware requires it to finish the transformation (then the data buffered by the device driver is processed).”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K_hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j¦h´KchjÞubjâ)�”}”(hXŠ``finup`` **[optional]** Combination of **update** and **final**. This function is effectively a combination of **update** and **final** calls issued in sequence. As some hardware cannot do **update** and **final** separately, this callback was added to allow such hardware to be used at least by IPsec. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. ”h]”(jè)�”}”(hŒ ``finup``”h]”jî)�”}”(hjÙh]”hŒfinup”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KihjÓubj)�”}”(hhh]”hÝ)�”}”(hX**[optional]** Combination of **update** and **final**. This function is effectively a combination of **update** and **final** calls issued in sequence. As some hardware cannot do **update** and **final** separately, this callback was added to allow such hardware to be used at least by IPsec. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point.”h]”(j™)�”}”(hŒ**[optional]**”h]”hŒ [optional]”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ Combination of ”…”�”}”(hjòh²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ and ”…”�”}”(hjòh²hh³Nh´Nubj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ0. This function is effectively a combination of ”…”�”}”(hjòh²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ and ”…”�”}”hjòsbj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ6 calls issued in sequence. As some hardware cannot do ”…”�”}”(hjòh²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ and ”…”�”}”hjòsbj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjòubhŒ³ separately, this callback was added to allow such hardware to be used at least by IPsec. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point.”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kdhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jîh´KihjÞubjâ)�”}”(hX¡``digest`` Combination of **init** and **update** and **final**. This function effectively behaves as the entire chain of operations, **init**, **update** and **final** issued in sequence. Just like **finup**, this was added for hardware which cannot do even the **finup**, but can only do the whole transformation in one run. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point. ”h]”(jè)�”}”(hŒ ``digest``”h]”jî)�”}”(hj�h]”hŒdigest”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kohj‡ubj)�”}”(hhh]”hÝ)�”}”(hX•Combination of **init** and **update** and **final**. This function effectively behaves as the entire chain of operations, **init**, **update** and **final** issued in sequence. Just like **finup**, this was added for hardware which cannot do even the **finup**, but can only do the whole transformation in one run. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point.”h]”(hŒCombination of ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ**init**”h]”hŒinit”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ and ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ and ”…”�”}”hj¦sbj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒG. This function effectively behaves as the entire chain of operations, ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ**init**”h]”hŒinit”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ, ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ and ”…”�”}”hj¦sbj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ issued in sequence. Just like ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ **finup**”h]”hŒfinup”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ7, this was added for hardware which cannot do even the ”…”�”}”(hj¦h²hh³Nh´Nubj™)�”}”(hŒ **finup**”h]”hŒfinup”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¦ubhŒ�, but can only do the whole transformation in one run. Data processing can happen synchronously [SHASH] or asynchronously [AHASH] at this point.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kjhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j¢h´KohjÞubjâ)�”}”(hXÏ``export`` Export partial state of the transformation. This function dumps the entire state of the ongoing transformation into a provided block of data so it can be **import** 'ed back later on. This is useful in case you want to save partial result of the transformation after processing certain amount of data and reload this partial result multiple times later on for multiple re-use. No data processing happens at this point. Driver must not use req->result. ”h]”(jè)�”}”(hŒ ``export``”h]”jî)�”}”(hjWh]”hŒexport”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KƒhjQubj)�”}”(hhh]”hÝ)�”}”(hXÃExport partial state of the transformation. This function dumps the entire state of the ongoing transformation into a provided block of data so it can be **import** 'ed back later on. This is useful in case you want to save partial result of the transformation after processing certain amount of data and reload this partial result multiple times later on for multiple re-use. No data processing happens at this point. Driver must not use req->result.”h]”(hŒšExport partial state of the transformation. This function dumps the entire state of the ongoing transformation into a provided block of data so it can be ”…”�”}”(hjph²hh³Nh´Nubj™)�”}”(hŒ **import**”h]”hŒimport”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjpubhX! ‘ed back later on. This is useful in case you want to save partial result of the transformation after processing certain amount of data and reload this partial result multiple times later on for multiple re-use. No data processing happens at this point. Driver must not use req->result.”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K}hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jlh´KƒhjÞubjâ)�”}”(hX``import`` Import partial state of the transformation. This function loads the entire state of the ongoing transformation from a provided block of data so the transformation can continue from this point onward. No data processing happens at this point. Driver must not use req->result. ”h]”(jè)�”}”(hŒ ``import``”h]”jî)�”}”(hj£h]”hŒimport”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kˆhj�ubj)�”}”(hhh]”hÝ)�”}”(hXImport partial state of the transformation. This function loads the entire state of the ongoing transformation from a provided block of data so the transformation can continue from this point onward. No data processing happens at this point. Driver must not use req->result.”h]”hXImport partial state of the transformation. This function loads the entire state of the ongoing transformation from a provided block of data so the transformation can continue from this point onward. No data processing happens at this point. Driver must not use req->result.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K„hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j¸h´KˆhjÞubjâ)�”}”(hŒr``export_core`` Export partial state without partial block. Only defined for algorithms that are not block-only. ”h]”(jè)�”}”(hŒ``export_core``”h]”jî)�”}”(hjÝh]”hŒ export_core”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KŠhj×ubj)�”}”(hhh]”hÝ)�”}”(hŒaExport partial state without partial block. Only defined for algorithms that are not block-only.”h]”hŒaExport partial state without partial block. Only defined for algorithms that are not block-only.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K‰hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jòh´KŠhjÞubjâ)�”}”(hŒr``import_core`` Import partial state without partial block. Only defined for algorithms that are not block-only. ”h]”(jè)�”}”(hŒ``import_core``”h]”jî)�”}”(hjh]”hŒ import_core”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KŒhjubj)�”}”(hhh]”hÝ)�”}”(hŒaImport partial state without partial block. Only defined for algorithms that are not block-only.”h]”hŒaImport partial state without partial block. Only defined for algorithms that are not block-only.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K‹hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j,h´KŒhjÞubjâ)�”}”(hXO``setkey`` Set optional key used by the hashing algorithm. Intended to push optional key used by the hashing algorithm from upper layers into the driver. This function can store the key in the transformation context or can outright program it into the hardware. In the former case, one must be careful to program the key into the hardware at appropriate time and one must be careful that .setkey() can be called multiple times during the existence of the transformation object. Not all hashing algorithms do implement this function as it is only needed for keyed message digests. SHAx/MDx/CRCx do NOT implement this function. HMAC(MDx)/HMAC(SHAx)/CMAC(AES) do implement this function. This function must be called before any other of the **init**, **update**, **final**, **finup**, **digest** is called. No data processing happens at this point. ”h]”(jè)�”}”(hŒ ``setkey``”h]”jî)�”}”(hjQh]”hŒsetkey”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K|hjKubj)�”}”(hhh]”hÝ)�”}”(hXCSet optional key used by the hashing algorithm. Intended to push optional key used by the hashing algorithm from upper layers into the driver. This function can store the key in the transformation context or can outright program it into the hardware. In the former case, one must be careful to program the key into the hardware at appropriate time and one must be careful that .setkey() can be called multiple times during the existence of the transformation object. Not all hashing algorithms do implement this function as it is only needed for keyed message digests. SHAx/MDx/CRCx do NOT implement this function. HMAC(MDx)/HMAC(SHAx)/CMAC(AES) do implement this function. This function must be called before any other of the **init**, **update**, **final**, **finup**, **digest** is called. No data processing happens at this point.”h]”(hXØSet optional key used by the hashing algorithm. Intended to push optional key used by the hashing algorithm from upper layers into the driver. This function can store the key in the transformation context or can outright program it into the hardware. In the former case, one must be careful to program the key into the hardware at appropriate time and one must be careful that .setkey() can be called multiple times during the existence of the transformation object. Not all hashing algorithms do implement this function as it is only needed for keyed message digests. SHAx/MDx/CRCx do NOT implement this function. HMAC(MDx)/HMAC(SHAx)/CMAC(AES) do implement this function. This function must be called before any other of the ”…”�”}”(hjjh²hh³Nh´Nubj™)�”}”(hŒ**init**”h]”hŒinit”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjjubhŒ, ”…”�”}”(hjjh²hh³Nh´Nubj™)�”}”(hŒ **update**”h]”hŒupdate”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjjubhŒ, ”…”�”}”hjjsbj™)�”}”(hŒ **final**”h]”hŒfinal”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjjubhŒ, ”…”�”}”hjjsbj™)�”}”(hŒ **finup**”h]”hŒfinup”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjjubhŒ, ”…”�”}”hjjsbj™)�”}”(hŒ **digest**”h]”hŒdigest”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjjubhŒ5 is called. No data processing happens at this point.”…”�”}”(hjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kphjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jfh´K|hjÞubjâ)�”}”(hX�``init_tfm`` Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. ”h]”(jè)�”}”(hŒ ``init_tfm``”h]”jî)�”}”(hjåh]”hŒinit_tfm”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K”hjßubj)�”}”(hhh]”hÝ)�”}”(hX‚Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.”h]”hX‚Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K�hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³júh´K”hjÞubjâ)�”}”(hŒž``exit_tfm`` Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**. ”h]”(jè)�”}”(hŒ ``exit_tfm``”h]”jî)�”}”(hjh]”hŒexit_tfm”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K—hjubj)�”}”(hhh]”hÝ)�”}”(hŒ�Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**.”h]”(hŒODeinitialize the cryptographic transformation object. This is a counterpart to ”…”�”}”(hj8h²hh³Nh´Nubj™)�”}”(hŒ **init_tfm**”h]”hŒinit_tfm”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj8ubhŒ(, used to remove various changes set in ”…”�”}”(hj8h²hh³Nh´Nubj™)�”}”(hŒ **init_tfm**”h]”hŒinit_tfm”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj8ubhŒ.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K•hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j4h´K—hjÞubjâ)�”}”(hŒ#``halg`` see struct hash_alg_common”h]”(jè)�”}”(hŒ``halg``”h]”jî)�”}”(hj}h]”hŒhalg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K—hjwubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct hash_alg_common”h]”hŒsee struct hash_alg_common”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´K˜hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j’h´K—hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhhËh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒshash_alg (C struct)”Œ c.shash_alg”hNt”auh1híhhËh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ shash_alg”h]”j )�”}”(hŒstruct shash_alg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓh²hh³jäh´Kžubj3)�”}”(hŒ shash_alg”h]”j9)�”}”(hjÑh]”hŒ shash_alg”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÓh²hh³jäh´Kžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÏh²hh³jäh´Kžubah}”(h]”jÊah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jäh´KžhjÌh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ%synchronous message digest definition”h]”hŒ%synchronous message digest definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KÚhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÌh²hh³jäh´Kžubeh}”(h]”h ]”(jƒŒstruct”eh"]”h$]”h&]”jˆjƒj‰j1jŠj1j‹‰jŒ‰j�‰uh1hþh²hhhËh³Nh´Nubj�)�”}”(hX‡**Definition**:: struct shash_alg { int (*init)(struct shash_desc *desc); int (*update)(struct shash_desc *desc, const u8 *data, unsigned int len); int (*final)(struct shash_desc *desc, u8 *out); int (*finup)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*digest)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*export)(struct shash_desc *desc, void *out); int (*import)(struct shash_desc *desc, const void *in); int (*export_core)(struct shash_desc *desc, void *out); int (*import_core)(struct shash_desc *desc, const void *in); int (*setkey)(struct crypto_shash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_shash *tfm); void (*exit_tfm)(struct crypto_shash *tfm); unsigned int descsize; union { struct HASH_ALG_COMMON; struct hash_alg_common halg; }; }; **Members** ``init`` see struct ahash_alg ``update`` see struct ahash_alg ``final`` see struct ahash_alg ``finup`` see struct ahash_alg ``digest`` see struct ahash_alg ``export`` see struct ahash_alg ``import`` see struct ahash_alg ``export_core`` see struct ahash_alg ``import_core`` see struct ahash_alg ``setkey`` see struct ahash_alg ``init_tfm`` Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. ``exit_tfm`` Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**. ``descsize`` Size of the operational state for the message digest. This state size is the memory size that needs to be allocated for shash_desc.__ctx ``{unnamed_union}`` anonymous ``HASH_ALG_COMMON`` see struct hash_alg_common ``halg`` see struct hash_alg_common”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(j™)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj9ubhŒ:”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KÞhj5ubj´)�”}”(hX�struct shash_alg { int (*init)(struct shash_desc *desc); int (*update)(struct shash_desc *desc, const u8 *data, unsigned int len); int (*final)(struct shash_desc *desc, u8 *out); int (*finup)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*digest)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*export)(struct shash_desc *desc, void *out); int (*import)(struct shash_desc *desc, const void *in); int (*export_core)(struct shash_desc *desc, void *out); int (*import_core)(struct shash_desc *desc, const void *in); int (*setkey)(struct crypto_shash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_shash *tfm); void (*exit_tfm)(struct crypto_shash *tfm); unsigned int descsize; union { struct HASH_ALG_COMMON; struct hash_alg_common halg; }; };”h]”hX�struct shash_alg { int (*init)(struct shash_desc *desc); int (*update)(struct shash_desc *desc, const u8 *data, unsigned int len); int (*final)(struct shash_desc *desc, u8 *out); int (*finup)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*digest)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*export)(struct shash_desc *desc, void *out); int (*import)(struct shash_desc *desc, const void *in); int (*export_core)(struct shash_desc *desc, void *out); int (*import_core)(struct shash_desc *desc, const void *in); int (*setkey)(struct crypto_shash *tfm, const u8 *key, unsigned int keylen); int (*init_tfm)(struct crypto_shash *tfm); void (*exit_tfm)(struct crypto_shash *tfm); unsigned int descsize; union { struct HASH_ALG_COMMON; struct hash_alg_common halg; }; };”…”�”}”hjVsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j³h³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kàhj5ubhÝ)�”}”(hŒ **Members**”h]”j™)�”}”(hjgh]”hŒMembers”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kôhj5ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ``init`` see struct ahash_alg ”h]”(jè)�”}”(hŒ``init``”h]”jî)�”}”(hj†h]”hŒinit”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KÜhj€ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j›h´KÜhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j›h´KÜhj}ubjâ)�”}”(hŒ ``update`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``update``”h]”jî)�”}”(hj¿h]”hŒupdate”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KÝhj¹ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÔh´KÝhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jÔh´KÝhj}ubjâ)�”}”(hŒ``final`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``final``”h]”jî)�”}”(hjøh]”hŒfinal”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KÞhjòubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´KÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j h´KÞhj}ubjâ)�”}”(hŒ``finup`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``finup``”h]”jî)�”}”(hj1h]”hŒfinup”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kßhj+ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFh´KßhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jFh´Kßhj}ubjâ)�”}”(hŒ ``digest`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``digest``”h]”jî)�”}”(hjjh]”hŒdigest”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kàhjdubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Kàhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jh´Kàhj}ubjâ)�”}”(hŒ ``export`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``export``”h]”jî)�”}”(hj£h]”hŒexport”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Káhj�ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¸h´Káhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j¸h´Káhj}ubjâ)�”}”(hŒ ``import`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``import``”h]”jî)�”}”(hjÜh]”hŒimport”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KâhjÖubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jñh´Kâhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jñh´Kâhj}ubjâ)�”}”(hŒ%``export_core`` see struct ahash_alg ”h]”(jè)�”}”(hŒ``export_core``”h]”jî)�”}”(hj h]”hŒ export_core”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kãhj ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j* h´Kãhj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j* h´Kãhj}ubjâ)�”}”(hŒ%``import_core`` see struct ahash_alg ”h]”(jè)�”}”(hŒ``import_core``”h]”jî)�”}”(hjN h]”hŒ import_core”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KähjH ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jc h´Kähjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jc h´Kähj}ubjâ)�”}”(hŒ ``setkey`` see struct ahash_alg ”h]”(jè)�”}”(hŒ ``setkey``”h]”jî)�”}”(hj‡ h]”hŒsetkey”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kåhj� ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct ahash_alg”h]”hŒsee struct ahash_alg”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœ h´Kåhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jœ h´Kåhj}ubjâ)�”}”(hX�``init_tfm`` Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. ”h]”(jè)�”}”(hŒ ``init_tfm``”h]”jî)�”}”(hjÀ h]”hŒinit_tfm”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kíhjº ubj)�”}”(hhh]”hÝ)�”}”(hX‚Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.”h]”hX‚Initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KæhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jÕ h´Kíhj}ubjâ)�”}”(hŒž``exit_tfm`` Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**. ”h]”(jè)�”}”(hŒ ``exit_tfm``”h]”jî)�”}”(hjú h]”hŒexit_tfm”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kðhjô ubj)�”}”(hhh]”hÝ)�”}”(hŒ�Deinitialize the cryptographic transformation object. This is a counterpart to **init_tfm**, used to remove various changes set in **init_tfm**.”h]”(hŒODeinitialize the cryptographic transformation object. This is a counterpart to ”…”�”}”(hj h²hh³Nh´Nubj™)�”}”(hŒ **init_tfm**”h]”hŒinit_tfm”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubhŒ(, used to remove various changes set in ”…”�”}”(hj h²hh³Nh´Nubj™)�”}”(hŒ **init_tfm**”h]”hŒinit_tfm”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kîhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j h´Kðhj}ubjâ)�”}”(hŒ–``descsize`` Size of the operational state for the message digest. This state size is the memory size that needs to be allocated for shash_desc.__ctx ”h]”(jè)�”}”(hŒ ``descsize``”h]”jî)�”}”(hjX h]”hŒdescsize”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KóhjR ubj)�”}”(hhh]”hÝ)�”}”(hŒˆSize of the operational state for the message digest. This state size is the memory size that needs to be allocated for shash_desc.__ctx”h]”hŒˆSize of the operational state for the message digest. This state size is the memory size that needs to be allocated for shash_desc.__ctx”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kñhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jm h´Kóhj}ubjâ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jè)�”}”(hŒ``{unnamed_union}``”h]”jî)�”}”(hj’ h]”hŒ{unnamed_union}”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KhjŒ ubj)�”}”(hhh]”hÝ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j§ h´Khj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j§ h´Khj}ubjâ)�”}”(hŒ/``HASH_ALG_COMMON`` see struct hash_alg_common ”h]”(jè)�”}”(hŒ``HASH_ALG_COMMON``”h]”jî)�”}”(hjË h]”hŒHASH_ALG_COMMON”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´KõhjÅ ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct hash_alg_common”h]”hŒsee struct hash_alg_common”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jà h´Kõhjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jà h´Kõhj}ubjâ)�”}”(hŒ#``halg`` see struct hash_alg_common”h]”(jè)�”}”(hŒ``halg``”h]”jî)�”}”(hj h]”hŒhalg”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kóhjþ ubj)�”}”(hhh]”hÝ)�”}”(hŒsee struct hash_alg_common”h]”hŒsee struct hash_alg_common”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:10: ./include/crypto/hash.h”h´Kôhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j h´Kóhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhhËh²hh³Nh´Nubeh}”(h]”Œ$message-digest-algorithm-definitions”ah ]”h"]”Œ$message digest algorithm definitions”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒAsynchronous Message Digest API”h]”hŒAsynchronous Message Digest API”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjM h²hh³hÊh´KubhÝ)�”}”(hŒƒThe asynchronous message digest API is used with the ciphers of type CRYPTO_ALG_TYPE_AHASH (listed as type "ahash" in /proc/crypto)”h]”hŒ‡The asynchronous message digest API is used with the ciphers of type CRYPTO_ALG_TYPE_AHASH (listed as type “ahashâ€� in /proc/crypto)”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:16: ./include/crypto/hash.h”h´MhjM h²hubhÝ)�”}”(hŒpThe asynchronous cipher operation discussion provided for the CRYPTO_ALG_TYPE_SKCIPHER API applies here as well.”h]”hŒpThe asynchronous cipher operation discussion provided for the CRYPTO_ALG_TYPE_SKCIPHER API applies here as well.”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:16: ./include/crypto/hash.h”h´M hjM h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_alloc_ahash (C function)”Œc.crypto_alloc_ahash”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSstruct crypto_ahash * crypto_alloc_ahash (const char *alg_name, u32 type, u32 mask)”h]”j )�”}”(hŒQstruct crypto_ahash *crypto_alloc_ahash(const char *alg_name, u32 type, u32 mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ h²hh³j¢ h´M1ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj± ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”Œ identifier”Œ reftarget”j¶ Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jÏ Œ ASTIdentifier”“”)�”}”jÊ Œcrypto_alloc_ahash”sbŒc.crypto_alloc_ahash”†”asbuh1hhj‘ h²hh³j¢ h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ h²hh³j¢ h´M1ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jë hj‘ h²hh³j¢ h´M1ubj3)�”}”(hŒcrypto_alloc_ahash”h]”j9)�”}”(hjÚ h]”hŒcrypto_alloc_ahash”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‘ h²hh³j¢ h´M1ubhŒdesc_parameterlist”“”)�”}”(hŒ*(const char *alg_name, u32 type, u32 mask)”h]”(hŒdesc_parameter”“”)�”}”(hŒconst char *alg_name”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubhŒdesc_sig_keyword_type”“”)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j; hj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj ubj9)�”}”(hŒalg_name”h]”hŒalg_name”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj ubj )�”}”(hŒu32 type”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j… Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”jØ Œc.crypto_alloc_ahash”†”asbuh1hhj| ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj| ubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj| ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj ubj )�”}”(hŒu32 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jÍ Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”jØ Œc.crypto_alloc_ahash”†”asbuh1hhjÄ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj‘ h²hh³j¢ h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj� h²hh³j¢ h´M1ubah}”(h]”jˆ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢ h´M1hjŠ h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒallocate ahash cipher handle”h]”hŒallocate ahash cipher handle”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M1hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŠ h²hh³j¢ h´M1ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j9 jŠj9 j‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX**Parameters** ``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the ahash cipher ``u32 type`` specifies the type of the cipher ``u32 mask`` specifies the mask for the cipher **Description** Allocate a cipher handle for an ahash. The returned struct crypto_ahash is the cipher handle that is required for any subsequent API invocation for that ahash. **Return** allocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjC h]”hŒ Parameters”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M5hj= ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒe``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the ahash cipher ”h]”(jè)�”}”(hŒ``const char *alg_name``”h]”jî)�”}”(hjb h]”hŒconst char *alg_name”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M3hj\ ubj)�”}”(hhh]”hÝ)�”}”(hŒKis the cra_name / name or cra_driver_name / driver name of the ahash cipher”h]”hŒKis the cra_name / name or cra_driver_name / driver name of the ahash cipher”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M2hjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jw h´M3hjY ubjâ)�”}”(hŒ.``u32 type`` specifies the type of the cipher ”h]”(jè)�”}”(hŒ ``u32 type``”h]”jî)�”}”(hjœ h]”hŒu32 type”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M4hj– ubj)�”}”(hhh]”hÝ)�”}”(hŒ specifies the type of the cipher”h]”hŒ specifies the type of the cipher”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j± h´M4hj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j± h´M4hjY ubjâ)�”}”(hŒ/``u32 mask`` specifies the mask for the cipher ”h]”(jè)�”}”(hŒ ``u32 mask``”h]”jî)�”}”(hjÕ h]”hŒu32 mask”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M5hjÏ ubj)�”}”(hhh]”hÝ)�”}”(hŒ!specifies the mask for the cipher”h]”hŒ!specifies the mask for the cipher”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jê h´M5hjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jê h´M5hjY ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj= ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M7hj= ubhÝ)�”}”(hŒŸAllocate a cipher handle for an ahash. The returned struct crypto_ahash is the cipher handle that is required for any subsequent API invocation for that ahash.”h]”hŒŸAllocate a cipher handle for an ahash. The returned struct crypto_ahash is the cipher handle that is required for any subsequent API invocation for that ahash.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M6hj= ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hj7h]”hŒReturn”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M:hj= ubhÝ)�”}”(hŒsallocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”h]”hŒsallocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M;hj= ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_free_ahash (C function)”Œc.crypto_free_ahash”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void crypto_free_ahash (struct crypto_ahash *tfm)”•h]”j )�”}”(hŒ0void crypto_free_ahash(struct crypto_ahash *tfm)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjxh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjxh²hh³jŠh´MGubj3)�”}”(hŒcrypto_free_ahash”h]”j9)�”}”(hŒcrypto_free_ahash”h]”hŒcrypto_free_ahash”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjxh²hh³jŠh´MGubj )�”}”(hŒ(struct crypto_ahash *tfm)”h]”j )�”}”(hŒstruct crypto_ahash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jÙŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jŸsbŒc.crypto_free_ahash”†”asbuh1hhjµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjµubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj±ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjxh²hh³jŠh´MGubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjth²hh³jŠh´MGubah}”(h]”joah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŠh´MGhjqh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ!zeroize and free the ahash handle”h]”hŒ!zeroize and free the ahash handle”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MGhj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjqh²hh³jŠh´MGubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jTjŠjTj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hŒ�**Parameters** ``struct crypto_ahash *tfm`` cipher handle to be freed **Description** If **tfm** is a NULL or error pointer, this function does nothing.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MKhjXubjÝ)�”}”(hhh]”jâ)�”}”(hŒ7``struct crypto_ahash *tfm`` cipher handle to be freed ”h]”(jè)�”}”(hŒ``struct crypto_ahash *tfm``”h]”jî)�”}”(hj}h]”hŒstruct crypto_ahash *tfm”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MHhjwubj)�”}”(hhh]”hÝ)�”}”(hŒcipher handle to be freed”h]”hŒcipher handle to be freed”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j’h´MHhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j’h´MHhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjXubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj¸h]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MJhjXubhÝ)�”}”(hŒBIf **tfm** is a NULL or error pointer, this function does nothing.”h]”(hŒIf ”…”�”}”(hjÎh²hh³Nh´Nubj™)�”}”(hŒ**tfm**”h]”hŒtfm”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÎubhŒ8 is a NULL or error pointer, this function does nothing.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MIhjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$crypto_ahash_digestsize (C function)”Œc.crypto_ahash_digestsize”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?unsigned int crypto_ahash_digestsize (struct crypto_ahash *tfm)”h]”j )�”}”(hŒ>unsigned int crypto_ahash_digestsize(struct crypto_ahash *tfm)”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj h²hh³jh´M‚ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj h²hh³jh´M‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj h²hh³jh´M‚ubj3)�”}”(hŒcrypto_ahash_digestsize”h]”j9)�”}”(hŒcrypto_ahash_digestsize”h]”hŒcrypto_ahash_digestsize”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj h²hh³jh´M‚ubj )�”}”(hŒ(struct crypto_ahash *tfm)”h]”j )�”}”(hŒstruct crypto_ahash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jˆŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jNsbŒc.crypto_ahash_digestsize”†”asbuh1hhjdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjdubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj`ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj h²hh³jh´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³jh´M‚ubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´M‚hjh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒobtain message digest size”h]”hŒobtain message digest size”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‚hjèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³jh´M‚ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jjŠjj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hŒí**Parameters** ``struct crypto_ahash *tfm`` cipher handle **Description** The size for the message digest created by the message digest cipher referenced with the cipher handle is returned. **Return** message digest size of cipher”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M†hjubjÝ)�”}”(hhh]”jâ)�”}”(hŒ+``struct crypto_ahash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_ahash *tfm``”h]”jî)�”}”(hj,h]”hŒstruct crypto_ahash *tfm”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mƒhj&ubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jAh´MƒhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jAh´Mƒhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjgh]”hŒ Description”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M…hjubhÝ)�”}”(hŒsThe size for the message digest created by the message digest cipher referenced with the cipher handle is returned.”h]”hŒsThe size for the message digest created by the message digest cipher referenced with the cipher handle is returned.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M„hjubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjŽh]”hŒReturn”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‡hjubhÝ)�”}”(hŒmessage digest size of cipher”h]”hŒmessage digest size of cipher”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‰hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#crypto_ahash_statesize (C function)”Œc.crypto_ahash_statesize”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>unsigned int crypto_ahash_statesize (struct crypto_ahash *tfm)”h]”j )�”}”(hŒ=unsigned int crypto_ahash_statesize(struct crypto_ahash *tfm)”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÏh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏh²hh³jáh´M‘ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÏh²hh³jáh´M‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏh²hh³jáh´M‘ubj3)�”}”(hŒcrypto_ahash_statesize”h]”j9)�”}”(hŒcrypto_ahash_statesize”h]”hŒcrypto_ahash_statesize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏh²hh³jáh´M‘ubj )�”}”(hŒ(struct crypto_ahash *tfm)”h]”j )�”}”(hŒstruct crypto_ahash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jLŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jsbŒc.crypto_ahash_statesize”†”asbuh1hhj(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj(ubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj$ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjÏh²hh³jáh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjËh²hh³jáh´M‘ubah}”(h]”jÆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jáh´M‘hjÈh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒobtain size of the ahash state”h]”hŒobtain size of the ahash state”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M‘hj¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈh²hh³jáh´M‘ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jÇjŠjÇj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX**Parameters** ``struct crypto_ahash *tfm`` cipher handle **Description** Return the size of the ahash state. With the crypto_ahash_export() function, the caller can export the state into a buffer whose size is defined with this function. **Return** size of the ahash state”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjÑh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M•hjËubjÝ)�”}”(hhh]”jâ)�”}”(hŒ+``struct crypto_ahash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_ahash *tfm``”h]”jî)�”}”(hjðh]”hŒstruct crypto_ahash *tfm”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M’hjêubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M’hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jh´M’hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjËubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj+h]”hŒ Description”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M”hjËubhÝ)�”}”(hŒ¤Return the size of the ahash state. With the crypto_ahash_export() function, the caller can export the state into a buffer whose size is defined with this function.”h]”hŒ¤Return the size of the ahash state. With the crypto_ahash_export() function, the caller can export the state into a buffer whose size is defined with this function.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M“hjËubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjRh]”hŒReturn”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M—hjËubhÝ)�”}”(hŒsize of the ahash state”h]”hŒsize of the ahash state”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M˜hjËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_ahash_reqtfm (C function)”Œc.crypto_ahash_reqtfm”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEstruct crypto_ahash * crypto_ahash_reqtfm (struct ahash_request *req)”h]”j )�”}”(hŒCstruct crypto_ahash *crypto_ahash_reqtfm(struct ahash_request *req)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“h²hh³j¤h´M¯ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j¸Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ Œcrypto_ahash_reqtfm”sbŒc.crypto_ahash_reqtfm”†”asbuh1hhj“h²hh³j¤h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“h²hh³j¤h´M¯ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj“h²hh³j¤h´M¯ubj3)�”}”(hŒcrypto_ahash_reqtfm”h]”j9)�”}”(hjÔh]”hŒcrypto_ahash_reqtfm”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj“h²hh³j¤h´M¯ubj )�”}”(hŒ(struct ahash_request *req)”h]”j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j1Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”jÒŒc.crypto_ahash_reqtfm”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj“h²hh³j¤h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j¤h´M¯ubah}”(h]”jŠah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤h´M¯hjŒh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ!obtain cipher handle from request”h]”hŒ!obtain cipher handle from request”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M¯hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŒh²hh³j¤h´M¯ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jªjŠjªj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX**Parameters** ``struct ahash_request *req`` asynchronous request handle that contains the reference to the ahash cipher handle **Description** Return the ahash cipher handle that is registered with the asynchronous request handle ahash_request. **Return** ahash cipher handle”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj´h]”hŒ Parameters”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M³hj®ubjÝ)�”}”(hhh]”jâ)�”}”(hŒq``struct ahash_request *req`` asynchronous request handle that contains the reference to the ahash cipher handle ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hjÓh]”hŒstruct ahash_request *req”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M±hjÍubj)�”}”(hhh]”hÝ)�”}”(hŒRasynchronous request handle that contains the reference to the ahash cipher handle”h]”hŒRasynchronous request handle that contains the reference to the ahash cipher handle”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M°hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jèh´M±hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj®ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M³hj®ubhÝ)�”}”(hŒeReturn the ahash cipher handle that is registered with the asynchronous request handle ahash_request.”h]”hŒeReturn the ahash cipher handle that is registered with the asynchronous request handle ahash_request.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M²hj®ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hj6h]”hŒReturn”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mµhj®ubhÝ)�”}”(hŒahash cipher handle”h]”hŒahash cipher handle”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M¶hj®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!crypto_ahash_reqsize (C function)”Œc.crypto_ahash_reqsize”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen)”h]”(j )�”}”(hŒstruct crypto_ahash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQubh)�”}”(hhh]”j9)�”}”(hŒ crypto_ahash”h]”hŒ crypto_ahash”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”juŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ j;sbŒc.crypto_ahash_setkey”†”asbuh1hhjQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjQubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjMubj )�”}”(hŒ const u8 *key”h]”(j)�”}”(hj! h]”hŒconst”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jçŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j�Œc.crypto_ahash_setkey”†”asbuh1hhjÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjÃubj9)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjMubj )�”}”(hŒunsigned int keylen”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubj9)�”}”(hŒkeylen”h]”hŒkeylen”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjMubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjh²hh³j&h´MÏubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j&h´MÏubah}”(h]”j ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&h´MÏhj h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒset key for cipher handle”h]”hŒset key for cipher handle”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÏhj–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj h²hh³j&h´MÏubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j±jŠj±j‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX‹**Parameters** ``struct crypto_ahash *tfm`` cipher handle ``const u8 *key`` buffer holding the key ``unsigned int keylen`` length of the key in bytes **Description** The caller provided key is set for the ahash cipher. The cipher handle must point to a keyed hash in order for this function to succeed. **Return** 0 if the setting of the key was successful; < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj»h]”hŒ Parameters”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÓhjµubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ+``struct crypto_ahash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_ahash *tfm``”h]”jî)�”}”(hjÚh]”hŒstruct crypto_ahash *tfm”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÐhjÔubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jïh´MÐhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jïh´MÐhjÑubjâ)�”}”(hŒ)``const u8 *key`` buffer holding the key ”h]”(jè)�”}”(hŒ``const u8 *key``”h]”jî)�”}”(hjh]”hŒ const u8 *key”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÑhj ubj)�”}”(hhh]”hÝ)�”}”(hŒbuffer holding the key”h]”hŒbuffer holding the key”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(h´MÑhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j(h´MÑhjÑubjâ)�”}”(hŒ3``unsigned int keylen`` length of the key in bytes ”h]”(jè)�”}”(hŒ``unsigned int keylen``”h]”jî)�”}”(hjLh]”hŒunsigned int keylen”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÒhjFubj)�”}”(hhh]”hÝ)�”}”(hŒlength of the key in bytes”h]”hŒlength of the key in bytes”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jah´MÒhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jah´MÒhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjµubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj‡h]”hŒ Description”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÔhjµubhÝ)�”}”(hŒˆThe caller provided key is set for the ahash cipher. The cipher handle must point to a keyed hash in order for this function to succeed.”h]”hŒˆThe caller provided key is set for the ahash cipher. The cipher handle must point to a keyed hash in order for this function to succeed.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÓhjµubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hj®h]”hŒReturn”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÖhjµubhÝ)�”}”(hŒD0 if the setting of the key was successful; < 0 if an error occurred”h]”hŒD0 if the setting of the key was successful; < 0 if an error occurred”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M×hjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_ahash_finup (C function)”Œc.crypto_ahash_finup”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2int crypto_ahash_finup (struct ahash_request *req)”h]”j )�”}”(hŒ1int crypto_ahash_finup(struct ahash_request *req)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjïh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïh²hh³jh´MÝubj3)�”}”(hŒcrypto_ahash_finup”h]”j9)�”}”(hŒcrypto_ahash_finup”h]”hŒcrypto_ahash_finup”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjïh²hh³jh´MÝubj )�”}”(hŒ(struct ahash_request *req)”h]”j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jPŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jsbŒc.crypto_ahash_finup”†”asbuh1hhj,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj,ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj(ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjïh²hh³jh´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjëh²hh³jh´MÝubah}”(h]”jæah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´MÝhjèh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ"update and finalize message digest”h]”hŒ"update and finalize message digest”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÝhj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjèh²hh³jh´MÝubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jËjŠjËj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX‡**Parameters** ``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation **Description** This function is a "short-hand" for the function calls of crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate functions. **Return** see crypto_ahash_final()”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjÕh]”hŒ Parameters”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MáhjÏubjÝ)�”}”(hhh]”jâ)�”}”(hŒ†``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hjôh]”hŒstruct ahash_request *req”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mßhjîubj)�”}”(hhh]”hÝ)�”}”(hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”h]”hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j h´Mßhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjÏubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj0h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MáhjÏubhÝ)�”}”(hŒµThis function is a "short-hand" for the function calls of crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate functions.”h]”hŒ¹This function is a “short-handâ€� for the function calls of crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate functions.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MàhjÏubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjWh]”hŒReturn”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MähjÏubhÝ)�”}”(hŒsee crypto_ahash_final()”h]”hŒsee crypto_ahash_final()”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MåhjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_ahash_final (C function)”Œc.crypto_ahash_final”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2int crypto_ahash_final (struct ahash_request *req)”h]”j )�”}”(hŒ1int crypto_ahash_final(struct ahash_request *req)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj˜h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜h²hh³jªh´Mêubj3)�”}”(hŒcrypto_ahash_final”h]”j9)�”}”(hŒcrypto_ahash_final”h]”hŒcrypto_ahash_final”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj˜h²hh³jªh´Mêubj )�”}”(hŒ(struct ahash_request *req)”h]”j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jùŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ j¿sbŒc.crypto_ahash_final”†”asbuh1hhjÕubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjÕubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjÑubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj˜h²hh³jªh´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj”h²hh³jªh´Mêubah}”(h]”j�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jªh´Mêhj‘h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒcalculate message digest”h]”hŒcalculate message digest”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MêhjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‘h²hh³jªh´Mêubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jtjŠjtj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hXv**Parameters** ``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation **Description** Finalize the message digest operation and create the message digest based on all data added to the cipher handle. The message digest is placed into the output buffer registered with the ahash_request handle. **Return** 0 if the message digest was successfully calculated; -EINPROGRESS if data is fed into hardware (DMA) or queued for later; -EBUSY if queue is full and request should be resubmitted later; other < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj~h]”hŒ Parameters”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MîhjxubjÝ)�”}”(hhh]”jâ)�”}”(hŒ†``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hj�h]”hŒstruct ahash_request *req”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mìhj—ubj)�”}”(hhh]”hÝ)�”}”(hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”h]”hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mëhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j²h´Mìhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjxubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjÙh]”hŒ Description”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MîhjxubhÝ)�”}”(hŒÏFinalize the message digest operation and create the message digest based on all data added to the cipher handle. The message digest is placed into the output buffer registered with the ahash_request handle.”h]”hŒÏFinalize the message digest operation and create the message digest based on all data added to the cipher handle. The message digest is placed into the output buffer registered with the ahash_request handle.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MíhjxubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MñhjxubhÝ)�”}”(hŒí0 if the message digest was successfully calculated; -EINPROGRESS if data is fed into hardware (DMA) or queued for later; -EBUSY if queue is full and request should be resubmitted later; other < 0 if an error occurred”h]”hŒí0 if the message digest was successfully calculated; -EINPROGRESS if data is fed into hardware (DMA) or queued for later; -EBUSY if queue is full and request should be resubmitted later; other < 0 if an error occurred”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mòhjxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_ahash_digest (C function)”Œc.crypto_ahash_digest”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int crypto_ahash_digest (struct ahash_request *req)”h]”j )�”}”(hŒ2int crypto_ahash_digest(struct ahash_request *req)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjAh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAh²hh³jSh´Mÿubj3)�”}”(hŒcrypto_ahash_digest”h]”j9)�”}”(hŒcrypto_ahash_digest”h]”hŒcrypto_ahash_digest”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjAh²hh³jSh´Mÿubj )�”}”(hŒ(struct ahash_request *req)”h]”j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j¢Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jhsbŒc.crypto_ahash_digest”†”asbuh1hhj~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj~ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjzubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjAh²hh³jSh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=h²hh³jSh´Mÿubah}”(h]”j8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jSh´Mÿhj:h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ%calculate message digest for a buffer”h]”hŒ%calculate message digest for a buffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mÿhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:h²hh³jSh´Mÿubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jjŠjj‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX **Parameters** ``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation **Description** This function is a "short-hand" for the function calls of crypto_ahash_init, crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate three functions. **Return** see crypto_ahash_final()”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj'h]”hŒ Parameters”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj!ubjÝ)�”}”(hhh]”jâ)�”}”(hŒ†``struct ahash_request *req`` reference to the ahash_request handle that holds all information needed to perform the cipher operation ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hjFh]”hŒstruct ahash_request *req”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj@ubj)�”}”(hhh]”hÝ)�”}”(hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”h]”hŒgreference to the ahash_request handle that holds all information needed to perform the cipher operation”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j[h´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj!ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj‚h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj!ubhÝ)�”}”(hŒÎThis function is a "short-hand" for the function calls of crypto_ahash_init, crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate three functions.”h]”hŒÒThis function is a “short-handâ€� for the function calls of crypto_ahash_init, crypto_ahash_update and crypto_ahash_final. The parameters have the same meaning as discussed for those separate three functions.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj!ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hj©h]”hŒReturn”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj!ubhÝ)�”}”(hŒsee crypto_ahash_final()”h]”hŒsee crypto_ahash_final()”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_ahash_export (C function)”Œc.crypto_ahash_export”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>int crypto_ahash_export (struct ahash_request *req, void *out)”h]”j )�”}”(hŒ=int crypto_ahash_export(struct ahash_request *req, void *out)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjêh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêh²hh³jüh´M ubj3)�”}”(hŒcrypto_ahash_export”h]”j9)�”}”(hŒcrypto_ahash_export”h]”hŒcrypto_ahash_export”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêh²hh³jüh´M ubj )�”}”(hŒ&(struct ahash_request *req, void *out)”h]”(j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jKŒmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jsbŒc.crypto_ahash_export”†”asbuh1hhj'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj'ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj#ubj )�”}”(hŒ void *out”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj™ubj9)�”}”(hŒout”h]”hŒout”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj#ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjêh²hh³jüh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæh²hh³jüh´M ubah}”(h]”jáah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüh´M hjãh²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ$extract current message digest state”h]”hŒ$extract current message digest state”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M hjíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãh²hh³jüh´M ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j jŠj j‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hXÍ**Parameters** ``struct ahash_request *req`` reference to the ahash_request handle whose state is exported ``void *out`` output buffer of sufficient size that can hold the hash state **Description** This function exports the hash state of the ahash_request handle into the caller-allocated output buffer out which must have sufficient size (e.g. by calling crypto_ahash_statesize()). **Return** 0 if the export was successful; < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ\``struct ahash_request *req`` reference to the ahash_request handle whose state is exported ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hj1 h]”hŒstruct ahash_request *req”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´M hj+ ubj)�”}”(hhh]”hÝ)�”}”(hŒ=reference to the ahash_request handle whose state is exported”h]”hŒ=reference to the ahash_request handle whose state is exported”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jF h´M hjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jF h´M hj( ubjâ)�”}”(hŒL``void *out`` output buffer of sufficient size that can hold the hash state ”h]”(jè)�”}”(hŒ ``void *out``”h]”jî)�”}”(hjj h]”hŒ void *out”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhjd ubj)�”}”(hhh]”hÝ)�”}”(hŒ=output buffer of sufficient size that can hold the hash state”h]”hŒ=output buffer of sufficient size that can hold the hash state”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Mhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j h´Mhj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj¥ h]”hŒ Description”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj ubhÝ)�”}”(hŒ¸This function exports the hash state of the ahash_request handle into the caller-allocated output buffer out which must have sufficient size (e.g. by calling crypto_ahash_statesize()).”h]”hŒ¸This function exports the hash state of the ahash_request handle into the caller-allocated output buffer out which must have sufficient size (e.g. by calling crypto_ahash_statesize()).”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjÌ h]”hŒReturn”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj ubhÝ)�”}”(hŒ80 if the export was successful; < 0 if an error occurred”h]”hŒ80 if the export was successful; < 0 if an error occurred”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjM h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_ahash_import (C function)”Œc.crypto_ahash_import”hNt”auh1híhjM h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint crypto_ahash_import (struct ahash_request *req, const void *in)”h]”j )�”}”(hŒBint crypto_ahash_import(struct ahash_request *req, const void *in)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj !h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj !h²hh³j!h´Mubj3)�”}”(hŒcrypto_ahash_import”h]”j9)�”}”(hŒcrypto_ahash_import”h]”hŒcrypto_ahash_import”…”�”}”(hj2!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.!ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj !h²hh³j!h´Mubj )�”}”(hŒ+(struct ahash_request *req, const void *in)”h]”(j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjN!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ!ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hjl!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jn!Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ j4!sbŒc.crypto_ahash_import”†”asbuh1hhjJ!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ!ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjš!h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjJ!ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj§!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjF!ubj )�”}”(hŒconst void *in”h]”(j)�”}”(hj! h]”hŒconst”…”�”}”(hjÀ!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼!ubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛ!h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj¼!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼!ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj÷!h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj¼!ubj9)�”}”(hŒin”h]”hŒin”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjF!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj !h²hh³j!h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj !h²hh³j!h´Mubah}”(h]”j!ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j!h´Mhj!h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒimport message digest state”h]”hŒimport message digest state”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhj+"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!h²hh³j!h´Mubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jF"jŠjF"j‹‰jŒ‰j�‰uh1hþh²hhjM h³Nh´Nubj�)�”}”(hX›**Parameters** ``struct ahash_request *req`` reference to ahash_request handle the state is imported into ``const void *in`` buffer holding the state **Description** This function imports the hash state into the ahash_request handle from the input buffer. That buffer should have been generated with the crypto_ahash_export function. **Return** 0 if the import was successful; < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjP"h]”hŒ Parameters”…”�”}”(hjR"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjN"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´MhjJ"ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ[``struct ahash_request *req`` reference to ahash_request handle the state is imported into ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hjo"h]”hŒstruct ahash_request *req”…”�”}”(hjq"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjm"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:19: ./include/crypto/hash.h”h´Mhji"ubj)�”}”(hhh]”hÝ)�”}”(hŒ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j=-h´M‡hj-ubjâ)�”}”(hŒå``u32 flags`` specify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep ”h]”(jè)�”}”(hŒ ``u32 flags``”h]”jî)�”}”(hja-h]”hŒ u32 flags”…”�”}”(hjc-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj_-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M‹hj[-ubj)�”}”(hhh]”hÝ)�”}”(hŒÖspecify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep”h]”hŒÖspecify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep”…”�”}”(hjz-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´Mˆhjw-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jv-h´M‹hj-ubjâ)�”}”(hŒa``crypto_completion_t compl`` callback function pointer to be registered with the request handle ”h]”(jè)�”}”(hŒ``crypto_completion_t compl``”h]”jî)�”}”(hj›-h]”hŒcrypto_completion_t compl”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj™-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´MŒhj•-ubj)�”}”(hhh]”hÝ)�”}”(hŒBcallback function pointer to be registered with the request handle”h]”hŒBcallback function pointer to be registered with the request handle”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j°-h´MŒhj±-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j°-h´MŒhj-ubjâ)�”}”(hXC``void *data`` The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the "data" field in the :c:type:`crypto_async_request` data structure provided to the callback function. ”h]”(jè)�”}”(hŒ``void *data``”h]”jî)�”}”(hjÔ-h]”hŒ void *data”…”�”}”(hjÖ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÒ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M”hjÎ-ubj)�”}”(hhh]”hÝ)�”}”(hX3The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the "data" field in the :c:type:`crypto_async_request` data structure provided to the callback function.”h]”(hXçThe data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the “dataâ€� field in the ”…”�”}”(hjí-h²hh³Nh´Nubh)�”}”(hŒ:c:type:`crypto_async_request`”h]”jî)�”}”(hj÷-h]”hŒcrypto_async_request”…”�”}”(hjù-h²hh³Nh´Nubah}”(h]”h ]”(j%jƒŒc-type”eh"]”h$]”h&]”uh1jíhjõ-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j%Œ refdomain”jƒŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jÎ j %j#%Œcrypto_async_request”uh1hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M�hjí-ubhŒ2 data structure provided to the callback function.”…”�”}”(hjí-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j.h´M�hjê-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jé-h´M”hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj-ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj3.h]”hŒ Description”…”�”}”(hj5.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj1.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M–hj-ubhÝ)�”}”(hŒiThis function allows setting the callback function that is triggered once the cipher operation completes.”h]”hŒiThis function allows setting the callback function that is triggered once the cipher operation completes.”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M•hj-ubhÝ)�”}”(hŒyThe callback function is registered with the :c:type:`ahash_request` handle and must comply with the following template::”h]”(hŒ-The callback function is registered with the ”…”�”}”(hjX.h²hh³Nh´Nubh)�”}”(hŒ:c:type:`ahash_request`”h]”jî)�”}”(hjb.h]”hŒ ahash_request”…”�”}”(hjd.h²hh³Nh´Nubah}”(h]”h ]”(j%jƒŒc-type”eh"]”h$]”h&]”uh1jíhj`.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j%Œ refdomain”jƒŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jÎ j %j#%Œ ahash_request”uh1hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M˜hjX.ubhŒ4 handle and must comply with the following template:”…”�”}”(hjX.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j.h´M˜hj-ubj´)�”}”(hŒCvoid callback_function(struct crypto_async_request *req, int error)”h]”hŒCvoid callback_function(struct crypto_async_request *req, int error)”…”�”}”hjŠ.sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j³h³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M›hj-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjç$h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$ahash_request_set_crypt (C function)”Œc.ahash_request_set_crypt”hNt”auh1híhjç$h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒrvoid ahash_request_set_crypt (struct ahash_request *req, struct scatterlist *src, u8 *result, unsigned int nbytes)”h]”j )�”}”(hŒqvoid ahash_request_set_crypt(struct ahash_request *req, struct scatterlist *src, u8 *result, unsigned int nbytes)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹.h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjµ.h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµ.h²hh³jÇ.h´M©ubj3)�”}”(hŒahash_request_set_crypt”h]”j9)�”}”(hŒahash_request_set_crypt”h]”hŒahash_request_set_crypt”…”�”}”(hjÚ.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjµ.h²hh³jÇ.h´M©ubj )�”}”(hŒU(struct ahash_request *req, struct scatterlist *src, u8 *result, unsigned int nbytes)”h]”(j )�”}”(hŒstruct ahash_request *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjö.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò.ubh)�”}”(hhh]”j9)�”}”(hŒ ahash_request”h]”hŒ ahash_request”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j/Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jÜ.sbŒc.ahash_request_set_crypt”†”asbuh1hhjò.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò.ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjB/h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjò.ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjO/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjî.ubj )�”}”(hŒstruct scatterlist *src”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hju/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjd/ubh)�”}”(hhh]”j9)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj†/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jˆ/Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j0/Œc.ahash_request_set_crypt”†”asbuh1hhjd/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjd/ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj²/h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjd/ubj9)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj¿/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjî.ubj )�”}”(hŒ u8 *result”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÛ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jÝ/Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j0/Œc.ahash_request_set_crypt”†”asbuh1hhjÔ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔ/ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjÔ/ubj9)�”}”(hŒresult”h]”hŒresult”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjî.ubj )�”}”(hŒunsigned int nbytes”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj)0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)0ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjI0h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj)0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)0ubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hje0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjî.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjµ.h²hh³jÇ.h´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj±.h²hh³jÇ.h´M©ubah}”(h]”j¬.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇ.h´M©hj®.h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒset data buffers”h]”hŒset data buffers”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M©hjŒ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®.h²hh³jÇ.h´M©ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j§0jŠj§0j‹‰jŒ‰j�‰uh1hþh²hhjç$h³Nh´Nubj�)�”}”(hXV**Parameters** ``struct ahash_request *req`` ahash_request handle to be updated ``struct scatterlist *src`` source scatter/gather list ``u8 *result`` buffer that is filled with the message digest -- the caller must ensure that the buffer has sufficient space by, for example, calling crypto_ahash_digestsize() ``unsigned int nbytes`` number of bytes to process from the source scatter/gather list **Description** By using this call, the caller references the source scatter/gather list. The source scatter/gather list points to the data the message digest is to be calculated for.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj±0h]”hŒ Parameters”…”�”}”(hj³0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj¯0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M­hj«0ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒA``struct ahash_request *req`` ahash_request handle to be updated ”h]”(jè)�”}”(hŒ``struct ahash_request *req``”h]”jî)�”}”(hjÐ0h]”hŒstruct ahash_request *req”…”�”}”(hjÒ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÎ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´MªhjÊ0ubj)�”}”(hhh]”hÝ)�”}”(hŒ"ahash_request handle to be updated”h]”hŒ"ahash_request handle to be updated”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jå0h´Mªhjæ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jå0h´MªhjÇ0ubjâ)�”}”(hŒ7``struct scatterlist *src`` source scatter/gather list ”h]”(jè)�”}”(hŒ``struct scatterlist *src``”h]”jî)�”}”(hj 1h]”hŒstruct scatterlist *src”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M«hj1ubj)�”}”(hhh]”hÝ)�”}”(hŒsource scatter/gather list”h]”hŒsource scatter/gather list”…”�”}”(hj"1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1h´M«hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j1h´M«hjÇ0ubjâ)�”}”(hŒ¯``u8 *result`` buffer that is filled with the message digest -- the caller must ensure that the buffer has sufficient space by, for example, calling crypto_ahash_digestsize() ”h]”(jè)�”}”(hŒ``u8 *result``”h]”jî)�”}”(hjB1h]”hŒ u8 *result”…”�”}”(hjD1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj@1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M®hj<1ubj)�”}”(hhh]”hÝ)�”}”(hŒŸbuffer that is filled with the message digest -- the caller must ensure that the buffer has sufficient space by, for example, calling crypto_ahash_digestsize()”h]”hŒŸbuffer that is filled with the message digest -- the caller must ensure that the buffer has sufficient space by, for example, calling crypto_ahash_digestsize()”…”�”}”(hj[1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M¬hjX1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jW1h´M®hjÇ0ubjâ)�”}”(hŒW``unsigned int nbytes`` number of bytes to process from the source scatter/gather list ”h]”(jè)�”}”(hŒ``unsigned int nbytes``”h]”jî)�”}”(hj|1h]”hŒunsigned int nbytes”…”�”}”(hj~1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjz1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M¯hjv1ubj)�”}”(hhh]”hÝ)�”}”(hŒ>number of bytes to process from the source scatter/gather list”h]”hŒ>number of bytes to process from the source scatter/gather list”…”�”}”(hj•1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‘1h´M¯hj’1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j‘1h´M¯hjÇ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj«0ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj·1h]”hŒ Description”…”�”}”(hj¹1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjµ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M±hj«0ubhÝ)�”}”(hŒ§By using this call, the caller references the source scatter/gather list. The source scatter/gather list points to the data the message digest is to be calculated for.”h]”hŒ§By using this call, the caller references the source scatter/gather list. The source scatter/gather list points to the data the message digest is to be calculated for.”…”�”}”(hjÍ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:28: ./include/crypto/hash.h”h´M°hj«0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjç$h²hh³Nh´Nubeh}”(h]”Œ asynchronous-hash-request-handle”ah ]”h"]”Œ asynchronous hash request handle”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒSynchronous Message Digest API”h]”hŒSynchronous Message Digest API”…”�”}”(hjî1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjë1h²hh³hÊh´K ubhÝ)�”}”(hŒ‚The synchronous message digest API is used with the ciphers of type CRYPTO_ALG_TYPE_SHASH (listed as type "shash" in /proc/crypto)”h]”hŒ†The synchronous message digest API is used with the ciphers of type CRYPTO_ALG_TYPE_SHASH (listed as type “shashâ€� in /proc/crypto)”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:34: ./include/crypto/hash.h”h´M×hjë1h²hubhÝ)�”}”(hŒLThe message digest API is able to maintain state information for the caller.”h]”hŒLThe message digest API is able to maintain state information for the caller.”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:34: ./include/crypto/hash.h”h´MÚhjë1h²hubhÝ)�”}”(hŒkThe synchronous message digest API can store user-related context in its shash_desc request data structure.”h]”hŒkThe synchronous message digest API can store user-related context in its shash_desc request data structure.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:34: ./include/crypto/hash.h”h´MÝhjë1h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_alloc_shash (C function)”Œc.crypto_alloc_shash”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSstruct crypto_shash * crypto_alloc_shash (const char *alg_name, u32 type, u32 mask)”h]”j )�”}”(hŒQstruct crypto_shash *crypto_alloc_shash(const char *alg_name, u32 type, u32 mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>2h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>2h²hh³jO2h´Mäubh)�”}”(hhh]”j9)�”}”(hŒ crypto_shash”h]”hŒ crypto_shash”…”�”}”(hja2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jc2Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ Œcrypto_alloc_shash”sbŒc.crypto_alloc_shash”†”asbuh1hhj>2h²hh³jO2h´Mäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>2h²hh³jO2h´Mäubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj>2h²hh³jO2h´Mäubj3)�”}”(hŒcrypto_alloc_shash”h]”j9)�”}”(hj2h]”hŒcrypto_alloc_shash”…”�”}”(hj¡2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj>2h²hh³jO2h´Mäubj )�”}”(hŒ*(const char *alg_name, u32 type, u32 mask)”h]”(j )�”}”(hŒconst char *alg_name”h]”(j)�”}”(hj! h]”hŒconst”…”�”}”(hj¼2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸2ubj< )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj×2h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj¸2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸2ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjó2h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj¸2ubj9)�”}”(hŒalg_name”h]”hŒalg_name”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj´2ubj )�”}”(hŒu32 type”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j3Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j}2Œc.crypto_alloc_shash”†”asbuh1hhj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjH3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj´2ubj )�”}”(hŒu32 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjd3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jf3Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j}2Œc.crypto_alloc_shash”†”asbuh1hhj]3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]3ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj´2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj>2h²hh³jO2h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj:2h²hh³jO2h´Mäubah}”(h]”j52ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jO2h´Mähj72h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒallocate message digest handle”h]”hŒallocate message digest handle”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mähj·3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj72h²hh³jO2h´Mäubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jÒ3jŠjÒ3j‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hXA**Parameters** ``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the message digest cipher ``u32 type`` specifies the type of the cipher ``u32 mask`` specifies the mask for the cipher **Description** Allocate a cipher handle for a message digest. The returned :c:type:`struct crypto_shash ` is the cipher handle that is required for any subsequent API invocation for that message digest. **Return** allocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjÜ3h]”hŒ Parameters”…”�”}”(hjÞ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÚ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MèhjÖ3ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒn``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the message digest cipher ”h]”(jè)�”}”(hŒ``const char *alg_name``”h]”jî)�”}”(hjû3h]”hŒconst char *alg_name”…”�”}”(hjý3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjù3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mæhjõ3ubj)�”}”(hhh]”hÝ)�”}”(hŒTis the cra_name / name or cra_driver_name / driver name of the message digest cipher”h]”hŒTis the cra_name / name or cra_driver_name / driver name of the message digest cipher”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Måhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j4h´Mæhjò3ubjâ)�”}”(hŒ.``u32 type`` specifies the type of the cipher ”h]”(jè)�”}”(hŒ ``u32 type``”h]”jî)�”}”(hj54h]”hŒu32 type”…”�”}”(hj74h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj34ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mçhj/4ubj)�”}”(hhh]”hÝ)�”}”(hŒ specifies the type of the cipher”h]”hŒ specifies the type of the cipher”…”�”}”(hjN4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jJ4h´MçhjK4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jJ4h´Mçhjò3ubjâ)�”}”(hŒ/``u32 mask`` specifies the mask for the cipher ”h]”(jè)�”}”(hŒ ``u32 mask``”h]”jî)�”}”(hjn4h]”hŒu32 mask”…”�”}”(hjp4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjl4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mèhjh4ubj)�”}”(hhh]”hÝ)�”}”(hŒ!specifies the mask for the cipher”h]”hŒ!specifies the mask for the cipher”…”�”}”(hj‡4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jƒ4h´Mèhj„4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jƒ4h´Mèhjò3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjÖ3ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj©4h]”hŒ Description”…”�”}”(hj«4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj§4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MêhjÖ3ubhÝ)�”}”(hŒÉAllocate a cipher handle for a message digest. The returned :c:type:`struct crypto_shash ` is the cipher handle that is required for any subsequent API invocation for that message digest.”h]”(hŒ`”h]”jî)�”}”(hjÉ4h]”hŒstruct crypto_shash”…”�”}”(hjË4h²hh³Nh´Nubah}”(h]”h ]”(j%jƒŒc-type”eh"]”h$]”h&]”uh1jíhjÇ4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j%Œ refdomain”jƒŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jÎ j %j#%Œ crypto_shash”uh1hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Méhj¿4ubhŒa is the cipher handle that is required for any subsequent API invocation for that message digest.”…”�”}”(hj¿4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jæ4h´MéhjÖ3ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjó4h]”hŒReturn”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjñ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MíhjÖ3ubhÝ)�”}”(hŒsallocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”h]”hŒsallocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MîhjÖ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒcrypto_free_shash (C function)”Œc.crypto_free_shash”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void crypto_free_shash (struct crypto_shash *tfm)”h]”j )�”}”(hŒ0void crypto_free_shash(struct crypto_shash *tfm)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj85h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj45h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Müubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj45h²hh³jF5h´Müubj3)�”}”(hŒcrypto_free_shash”h]”j9)�”}”(hŒcrypto_free_shash”h]”hŒcrypto_free_shash”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU5ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj45h²hh³jF5h´Müubj )�”}”(hŒ(struct crypto_shash *tfm)”h]”j )�”}”(hŒstruct crypto_shash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq5ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_shash”h]”hŒ crypto_shash”…”�”}”(hj“5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j•5Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ j[5sbŒc.crypto_free_shash”†”asbuh1hhjq5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq5ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjÁ5h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjq5ubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hjÎ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjm5ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj45h²hh³jF5h´Müubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj05h²hh³jF5h´Müubah}”(h]”j+5ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jF5h´Mühj-5h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ*zeroize and free the message digest handle”h]”hŒ*zeroize and free the message digest handle”…”�”}”(hjø5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mühjõ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-5h²hh³jF5h´Müubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j6jŠj6j‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hŒ�**Parameters** ``struct crypto_shash *tfm`` cipher handle to be freed **Description** If **tfm** is a NULL or error pointer, this function does nothing.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj6h]”hŒ Parameters”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mhj6ubjÝ)�”}”(hhh]”jâ)�”}”(hŒ7``struct crypto_shash *tfm`` cipher handle to be freed ”h]”(jè)�”}”(hŒ``struct crypto_shash *tfm``”h]”jî)�”}”(hj96h]”hŒstruct crypto_shash *tfm”…”�”}”(hj;6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj76ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mýhj36ubj)�”}”(hhh]”hÝ)�”}”(hŒcipher handle to be freed”h]”hŒcipher handle to be freed”…”�”}”(hjR6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jN6h´MýhjO6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj36ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jN6h´Mýhj06ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj6ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjt6h]”hŒ Description”…”�”}”(hjv6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjr6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mÿhj6ubhÝ)�”}”(hŒBIf **tfm** is a NULL or error pointer, this function does nothing.”h]”(hŒIf ”…”�”}”(hjŠ6h²hh³Nh´Nubj™)�”}”(hŒ**tfm**”h]”hŒtfm”…”�”}”(hj’6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjŠ6ubhŒ8 is a NULL or error pointer, this function does nothing.”…”�”}”(hjŠ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mþhj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#crypto_shash_blocksize (C function)”Œc.crypto_shash_blocksize”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>unsigned int crypto_shash_blocksize (struct crypto_shash *tfm)”h]”j )�”}”(hŒ=unsigned int crypto_shash_blocksize(struct crypto_shash *tfm)”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjË6h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÇ6h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ6h²hh³jÙ6h´Mubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjè6h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÇ6h²hh³jÙ6h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ6h²hh³jÙ6h´Mubj3)�”}”(hŒcrypto_shash_blocksize”h]”j9)�”}”(hŒcrypto_shash_blocksize”h]”hŒcrypto_shash_blocksize”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h •]”jDah"]”h$]”h&]”uh1j8hj7ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÇ6h²hh³jÙ6h´Mubj )�”}”(hŒ(struct crypto_shash *tfm)”h]”j )�”}”(hŒstruct crypto_shash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj$7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj17h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj 7ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_shash”h]”hŒ crypto_shash”…”�”}”(hjB7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jD7Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ j 7sbŒc.crypto_shash_blocksize”†”asbuh1hhj 7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj 7ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj 7ubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hj}7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj 7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj7ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hjÇ6h²hh³jÙ6h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÃ6h²hh³jÙ6h´Mubah}”(h]”j¾6ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÙ6h´MhjÀ6h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒobtain block size for cipher”h]”hŒobtain block size for cipher”…”�”}”(hj§7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mhj¤7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÀ6h²hh³jÙ6h´Mubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j¿7jŠj¿7j‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hŒÌ**Parameters** ``struct crypto_shash *tfm`` cipher handle **Description** The block size for the message digest cipher referenced with the cipher handle is returned. **Return** block size of cipher”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjÉ7h]”hŒ Parameters”…”�”}”(hjË7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÇ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjÃ7ubjÝ)�”}”(hhh]”jâ)�”}”(hŒ+``struct crypto_shash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_shash *tfm``”h]”jî)�”}”(hjè7h]”hŒstruct crypto_shash *tfm”…”�”}”(hjê7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjæ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mhjâ7ubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jý7h´Mhjþ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jý7h´Mhjß7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjÃ7ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj#8h]”hŒ Description”…”�”}”(hj%8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj!8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjÃ7ubhÝ)�”}”(hŒ[The block size for the message digest cipher referenced with the cipher handle is returned.”h]”hŒ[The block size for the message digest cipher referenced with the cipher handle is returned.”…”�”}”(hj98h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjÃ7ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjJ8h]”hŒReturn”…”�”}”(hjL8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjH8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjÃ7ubhÝ)�”}”(hŒblock size of cipher”h]”hŒblock size of cipher”…”�”}”(hj`8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjÃ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$crypto_shash_digestsize (C function)”Œc.crypto_shash_digestsize”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?unsigned int crypto_shash_digestsize (struct crypto_shash *tfm)”h]”j )�”}”(hŒ>unsigned int crypto_shash_digestsize(struct crypto_shash *tfm)”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj‹8h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹8h²hh³j�8h´M)ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hj¬8h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj‹8h²hh³j�8h´M)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹8h²hh³j�8h´M)ubj3)�”}”(hŒcrypto_shash_digestsize”h]”j9)�”}”(hŒcrypto_shash_digestsize”h]”hŒcrypto_shash_digestsize”…”�”}”(hjÌ8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ8ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‹8h²hh³j�8h´M)ubj )�”}”(hŒ(struct crypto_shash *tfm)”h]”j )�”}”(hŒstruct crypto_shash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjè8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä8ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_shash”h]”hŒ crypto_shash”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j9Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jÎ8sbŒc.crypto_shash_digestsize”†”asbuh1hhjä8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä8ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj49h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjä8ubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hjA9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hjà8ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj‹8h²hh³j�8h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‡8h²hh³j�8h´M)ubah}”(h]”j‚8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�8h´M)hj„8h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒobtain message digest size”h]”hŒobtain message digest size”…”�”}”(hjk9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M)hjh9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„8h²hh³j�8h´M)ubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jƒ9jŠjƒ9j‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hŒå**Parameters** ``struct crypto_shash *tfm`` cipher handle **Description** The size for the message digest created by the message digest cipher referenced with the cipher handle is returned. **Return** digest size of cipher”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj�9h]”hŒ Parameters”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj‹9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M-hj‡9ubjÝ)�”}”(hhh]”jâ)�”}”(hŒ+``struct crypto_shash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_shash *tfm``”h]”jî)�”}”(hj¬9h]”hŒstruct crypto_shash *tfm”…”�”}”(hj®9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjª9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M*hj¦9ubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÁ9h´M*hjÂ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jÁ9h´M*hj£9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhj‡9ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hjç9h]”hŒ Description”…”�”}”(hjé9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjå9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M,hj‡9ubhÝ)�”}”(hŒsThe size for the message digest created by the message digest cipher referenced with the cipher handle is returned.”h]”hŒsThe size for the message digest created by the message digest cipher referenced with the cipher handle is returned.”…”�”}”(hjý9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M+hj‡9ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hj:h]”hŒReturn”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj :ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M.hj‡9ubhÝ)�”}”(hŒdigest size of cipher”h]”hŒdigest size of cipher”…”�”}”(hj$:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M/hj‡9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"crypto_shash_descsize (C function)”Œc.crypto_shash_descsize”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=unsigned int crypto_shash_descsize (struct crypto_shash *tfm)”h]”j )�”}”(hŒ(struct crypto_shash *tfm, const u8 *key, unsigned int keylen)”h]”(j )�”}”(hŒstruct crypto_shash *tfm”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjc<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_<ubh)�”}”(hhh]”j9)�”}”(hŒ crypto_shash”h]”hŒ crypto_shash”…”�”}”(hj�<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jƒ<Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jI<sbŒc.crypto_shash_setkey”†”asbuh1hhj_<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_<ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj¯<h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj_<ubj9)�”}”(hŒtfm”h]”hŒtfm”…”�”}”(hj¼<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj[<ubj )�”}”(hŒ const u8 *key”h]”(j)�”}”(hj! h]”hŒconst”…”�”}”(hjÕ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑ<ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjó<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”jõ<Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j�<Œc.crypto_shash_setkey”†”asbuh1hhjÑ<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑ<ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjÑ<ubj9)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj,=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj[<ubj )�”}”(hŒunsigned int keylen”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjE=h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjA=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA=ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hja=h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjA=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA=ubj9)�”}”(hŒkeylen”h]”hŒkeylen”…”�”}”(hj}=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj[<ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj"<h²hh³j4<h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj<h²hh³j4<h´Mdubah}”(h]”j<ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j4<h´Mdhj<h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒset key for message digest”h]”hŒset key for message digest”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mdhj¤=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj<h²hh³j4<h´Mdubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰j¿=jŠj¿=j‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hXÕ**Parameters** ``struct crypto_shash *tfm`` cipher handle ``const u8 *key`` buffer holding the key ``unsigned int keylen`` length of the key in bytes **Description** The caller provided key is set for the keyed message digest cipher. The cipher handle must point to a keyed message digest cipher in order for this function to succeed. **Context** Softirq or process context. **Return** 0 if the setting of the key was successful; < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hjÉ=h]”hŒ Parameters”…”�”}”(hjË=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÇ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhhjÃ=ubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ+``struct crypto_shash *tfm`` cipher handle ”h]”(jè)�”}”(hŒ``struct crypto_shash *tfm``”h]”jî)�”}”(hjè=h]”hŒstruct crypto_shash *tfm”…”�”}”(hjê=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjæ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mehjâ=ubj)�”}”(hhh]”hÝ)�”}”(hŒ cipher handle”h]”hŒ cipher handle”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jý=h´Mehjþ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jý=h´Mehjß=ubjâ)�”}”(hŒ)``const u8 *key`` buffer holding the key ”h]”(jè)�”}”(hŒ``const u8 *key``”h]”jî)�”}”(hj!>h]”hŒ const u8 *key”…”�”}”(hj#>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mfhj>ubj)�”}”(hhh]”hÝ)�”}”(hŒbuffer holding the key”h]”hŒbuffer holding the key”…”�”}”(hj:>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j6>h´Mfhj7>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j6>h´Mfhjß=ubjâ)�”}”(hŒ3``unsigned int keylen`` length of the key in bytes ”h]”(jè)�”}”(hŒ``unsigned int keylen``”h]”jî)�”}”(hjZ>h]”hŒunsigned int keylen”…”�”}”(hj\>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjX>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MghjT>ubj)�”}”(hhh]”hÝ)�”}”(hŒlength of the key in bytes”h]”hŒlength of the key in bytes”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jo>h´Mghjp>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jo>h´Mghjß=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjÃ=ubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj•>h]”hŒ Description”…”�”}”(hj—>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj“>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MihjÃ=ubhÝ)�”}”(hŒ¨The caller provided key is set for the keyed message digest cipher. The cipher handle must point to a keyed message digest cipher in order for this function to succeed.”h]”hŒ¨The caller provided key is set for the keyed message digest cipher. The cipher handle must point to a keyed message digest cipher in order for this function to succeed.”…”�”}”(hj«>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhhjÃ=ubhÝ)�”}”(hŒ **Context**”h]”j™)�”}”(hj¼>h]”hŒContext”…”�”}”(hj¾>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjº>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MlhjÃ=ubhÝ)�”}”(hŒSoftirq or process context.”h]”hŒSoftirq or process context.”…”�”}”(hjÒ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MmhjÃ=ubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjã>h]”hŒReturn”…”�”}”(hjå>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjá>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MohjÃ=ubhÝ)�”}”(hŒD0 if the setting of the key was successful; < 0 if an error occurred”h]”hŒD0 if the setting of the key was successful; < 0 if an error occurred”…”�”}”(hjù>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MnhjÃ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_shash_digest (C function)”Œc.crypto_shash_digest”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\int crypto_shash_digest (struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out)”h]”j )�”}”(hŒ[int crypto_shash_digest(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hj(?h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj$?h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$?h²hh³j6?h´Mtubj3)�”}”(hŒcrypto_shash_digest”h]”j9)�”}”(hŒcrypto_shash_digest”h]”hŒcrypto_shash_digest”…”�”}”(hjI?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$?h²hh³j6?h´Mtubj )�”}”(hŒD(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out)”h]”(j )�”}”(hŒstruct shash_desc *desc”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hje?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja?ubh)�”}”(hhh]”j9)�”}”(hŒ shash_desc”h]”hŒ shash_desc”…”�”}”(hjƒ?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j…?Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”j× )�”}”jÊ jK?sbŒc.crypto_shash_digest”†”asbuh1hhja?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja?ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hja?ubj9)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hj¾?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj]?ubj )�”}”(hŒconst u8 *data”h]”(j)�”}”(hj! h]”hŒconst”…”�”}”(hj×?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓ?ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjõ?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j÷?Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”jŸ?Œc.crypto_shash_digest”†”asbuh1hhjÓ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓ?ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hj!@h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hjÓ?ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj.@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj]?ubj )�”}”(hŒunsigned int len”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjG@h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjC@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC@ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjc@h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjC@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC@ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj]?ubj )�”}”(hŒu8 *out”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj›@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jƒŒreftype”jÊ Œ reftarget”j�@Œmodname”NŒ classname”NjÎ jÑ )�”}”jÔ ]”jŸ?Œc.crypto_shash_digest”†”asbuh1hhj”@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”@ubjì )�”}”(hjï h]”hŒ*”…”�”}”(hjÇ@h²hh³Nh´Nubah}”(h]”h ]”jø ah"]”h$]”h&]”uh1jë hj”@ubj9)�”}”(hŒout”h]”hŒout”…”�”}”(hjÔ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j hj]?ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j hj$?h²hh³j6?h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ?h²hh³j6?h´Mtubah}”(h]”j?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6?h´Mthj?h²hubjg)�”}”(hhh]”hÝ)�”}”(hŒ#calculate message digest for buffer”h]”hŒ#calculate message digest for buffer”…”�”}”(hjþ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mthjû@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?h²hh³j6?h´Mtubeh}”(h]”h ]”(jƒŒfunction”eh"]”h$]”h&]”jˆjƒj‰jAjŠjAj‹‰jŒ‰j�‰uh1hþh²hhjë1h³Nh´Nubj�)�”}”(hX2**Parameters** ``struct shash_desc *desc`` see crypto_shash_final() ``const u8 *data`` see crypto_shash_update() ``unsigned int len`` see crypto_shash_update() ``u8 *out`` see crypto_shash_final() **Description** This function is a "short-hand" for the function calls of crypto_shash_init, crypto_shash_update and crypto_shash_final. The parameters have the same meaning as discussed for those separate three functions. **Context** Softirq or process context. **Return** 0 if the message digest creation was successful; < 0 if an error occurred”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j™)�”}”(hj Ah]”hŒ Parameters”…”�”}”(hj"Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MxhjAubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ5``struct shash_desc *desc`` see crypto_shash_final() ”h]”(jè)�”}”(hŒ``struct shash_desc *desc``”h]”jî)�”}”(hj?Ah]”hŒstruct shash_desc *desc”…”�”}”(hjAAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj=Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Muhj9Aubj)�”}”(hhh]”hÝ)�”}”(hŒsee crypto_shash_final()”h]”hŒsee crypto_shash_final()”…”�”}”(hjXAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jTAh´MuhjUAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jTAh´Muhj6Aubjâ)�”}”(hŒ-``const u8 *data`` see crypto_shash_update() ”h]”(jè)�”}”(hŒ``const u8 *data``”h]”jî)�”}”(hjxAh]”hŒconst u8 *data”…”�”}”(hjzAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjvAubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MvhjrAubj)�”}”(hhh]”hÝ)�”}”(hŒsee crypto_shash_update()”h]”hŒsee crypto_shash_update()”…”�”}”(hj‘Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Ah´MvhjŽAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³j�Ah´Mvhj6Aubjâ)�”}”(hŒ/``unsigned int len`` see crypto_shash_update() ”h]”(jè)�”}”(hŒ``unsigned int len``”h]”jî)�”}”(hj±Ah]”hŒunsigned int len”…”�”}”(hj³Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhj¯Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´Mwhj«Aubj)�”}”(hhh]”hÝ)�”}”(hŒsee crypto_shash_update()”h]”hŒsee crypto_shash_update()”…”�”}”(hjÊAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÆAh´MwhjÇAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jÆAh´Mwhj6Aubjâ)�”}”(hŒ%``u8 *out`` see crypto_shash_final() ”h]”(jè)�”}”(hŒ ``u8 *out``”h]”jî)�”}”(hjêAh]”hŒu8 *out”…”�”}”(hjìAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjèAubah}”(h]”h ]”h"]”h$]”h&]”uh1jçh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MxhjäAubj)�”}”(hhh]”hÝ)�”}”(hŒsee crypto_shash_final()”h]”hŒsee crypto_shash_final()”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÿAh´MxhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáh³jÿAh´Mxhj6Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjAubhÝ)�”}”(hŒ**Description**”h]”j™)�”}”(hj%Bh]”hŒ Description”…”�”}”(hj'Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj#Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MzhjAubhÝ)�”}”(hŒÎThis function is a "short-hand" for the function calls of crypto_shash_init, crypto_shash_update and crypto_shash_final. The parameters have the same meaning as discussed for those separate three functions.”h]”hŒÒThis function is a “short-handâ€� for the function calls of crypto_shash_init, crypto_shash_update and crypto_shash_final. The parameters have the same meaning as discussed for those separate three functions.”…”�”}”(hj;Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MyhjAubhÝ)�”}”(hŒ **Context**”h]”j™)�”}”(hjLBh]”hŒContext”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjJBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M}hjAubhÝ)�”}”(hŒSoftirq or process context.”h]”hŒSoftirq or process context.”…”�”}”(hjbBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M~hjAubhÝ)�”}”(hŒ **Return**”h]”j™)�”}”(hjsBh]”hŒReturn”…”�”}”(hjuBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjqBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´M€hjAubhÝ)�”}”(hŒI0 if the message digest creation was successful; < 0 if an error occurred”h]”hŒI0 if the message digest creation was successful; < 0 if an error occurred”…”�”}”(hj‰Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒW/var/lib/git/docbuild/linux/Documentation/crypto/api-digest:37: ./include/crypto/hash.h”h´MhjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jŽhjë1h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ crypto_shash_export (C function)”Œc.crypto_shash_export”hNt”auh1híhjë1h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ