€•Œ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”Œ0/translations/zh_CN/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/zh_TW/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/it_IT/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ja_JP/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ko_KR/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/pt_BR/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/sp_SP/crypto/libcrypto-blockcipher”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ)SPDX-License-Identifier: GPL-2.0-or-later”h]”hŒ)SPDX-License-Identifier: GPL-2.0-or-later”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒJ/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ Block ciphers”h]”hŒ Block ciphers”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAES”h]”hŒAES”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ3This API provides support for the AES block cipher.”h]”hŒ3This API provides support for the AES block cipher.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œaes_enckey (C struct)”Œ c.aes_enckey”hNt”auh1hþhhÝh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ aes_enckey”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct aes_enckey”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j hjh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j2hjh²hh³j1h´KubhŒ desc_name”“”)�”}”(hŒ aes_enckey”h]”hŒ desc_sig_name”“”)�”}”(hjh]”hŒ aes_enckey”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jIhjEubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jChjh²hh³j1h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³j1h´Kubah}”(h]”j ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j1h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hï)�”}”(hŒ"An AES key prepared for encryption”h]”hŒ"An AES key prepared for encryption”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KIhjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjh²hh³j1h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j’Œobjtype”j“Œdesctype”j“Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhÝh³Nh´NubhŒ container”“”)�”}”(hX½**Definition**:: struct aes_enckey { u32 len; u32 nrounds; u32 padding[2]; union aes_enckey_arch k; }; **Members** ``len`` Key length in bytes: 16 for AES-128, 24 for AES-192, 32 for AES-256. ``nrounds`` Number of rounds: 10 for AES-128, 12 for AES-192, 14 for AES-256. This is '6 + **len** / 4' and is cached so that AES implementations that need it don't have to recompute it for each en/decryption. ``padding`` Padding to make offsetof(**k**) be a multiple of 16, so that aligning this struct to a 16-byte boundary results in **k** also being 16-byte aligned. Users aren't required to align this struct to 16 bytes, but it may slightly improve performance. ``k`` This typically contains the AES round keys as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here, e.g. just the raw key if it's all they need.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KMhjŸubhŒ literal_block”“”)�”}”(hŒestruct aes_enckey { u32 len; u32 nrounds; u32 padding[2]; union aes_enckey_arch k; };”h]”hŒestruct aes_enckey { u32 len; u32 nrounds; u32 padding[2]; union aes_enckey_arch k; };”…”�”}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KOhjŸ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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KVhjŸubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒM``len`` Key length in bytes: 16 for AES-128, 24 for AES-192, 32 for AES-256. ”h]”(hŒterm”“”)�”}”(hŒ``len``”h]”hŒliteral”“”)�”}”(hjúh]”hŒlen”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KKhjòubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒDKey length in bytes: 16 for AES-128, 24 for AES-192, 32 for AES-256.”h]”hŒDKey length in bytes: 16 for AES-128, 24 for AES-192, 32 for AES-256.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´KKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´KKhjíubjñ)�”}”(hŒÒ``nrounds`` Number of rounds: 10 for AES-128, 12 for AES-192, 14 for AES-256. This is '6 + **len** / 4' and is cached so that AES implementations that need it don't have to recompute it for each en/decryption. ”h]”(j÷)�”}”(hŒ ``nrounds``”h]”jý)�”}”(hj7h]”hŒnrounds”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KNhj1ubj)�”}”(hhh]”hï)�”}”(hŒÅNumber of rounds: 10 for AES-128, 12 for AES-192, 14 for AES-256. This is '6 + **len** / 4' and is cached so that AES implementations that need it don't have to recompute it for each en/decryption.”h]”(hŒQNumber of rounds: 10 for AES-128, 12 for AES-192, 14 for AES-256. This is ‘6 + ”…”�”}”(hjPh²hh³Nh´Nubj¨)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjPubhŒs / 4’ and is cached so that AES implementations that need it don’t have to recompute it for each en/decryption.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KLhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jLh´KNhjíubjñ)�”}”(hX``padding`` Padding to make offsetof(**k**) be a multiple of 16, so that aligning this struct to a 16-byte boundary results in **k** also being 16-byte aligned. Users aren't required to align this struct to 16 bytes, but it may slightly improve performance. ”h]”(j÷)�”}”(hŒ ``padding``”h]”jý)�”}”(hjƒh]”hŒpadding”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KRhj}ubj)�”}”(hhh]”hï)�”}”(hŒöPadding to make offsetof(**k**) be a multiple of 16, so that aligning this struct to a 16-byte boundary results in **k** also being 16-byte aligned. Users aren't required to align this struct to 16 bytes, but it may slightly improve performance.”h]”(hŒPadding to make offsetof(”…”�”}”(hjœh²hh³Nh´Nubj¨)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjœubhŒU) be a multiple of 16, so that aligning this struct to a 16-byte boundary results in ”…”�”}”(hjœh²hh³Nh´Nubj¨)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjœubhŒ€ also being 16-byte aligned. Users aren’t required to align this struct to 16 bytes, but it may slightly improve performance.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KOhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j˜h´KRhjíubjñ)�”}”(hŒî``k`` This typically contains the AES round keys as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here, e.g. just the raw key if it's all they need.”h]”(j÷)�”}”(hŒ``k``”h]”jý)�”}”(hjáh]”hŒk”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KUhjÛubj)�”}”(hhh]”hï)�”}”(hŒèThis typically contains the AES round keys as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here, e.g. just the raw key if it's all they need.”h]”(hŒ=This typically contains the AES round keys as an array of ‘”…”�”}”(hjúh²hh³Nh´Nubj¨)�”}”(hŒ **nrounds**”h]”hŒnrounds”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjúubhŒ¦ + 1’ groups of four u32 words. However, architecture-specific implementations of AES may store something else here, e.g. just the raw key if it’s all they need.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KShj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jöh´KUhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhï)�”}”(hŒ**Description**”h]”j¨)�”}”(hj6h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KYhhÝh²hubhï)�”}”(hX%Note that this struct is about half the size of struct aes_key. This is separate from struct aes_key so that modes that need only AES encryption (e.g. AES-GCM, AES-CTR, AES-CMAC, tweak key in AES-XTS) don't incur the time and space overhead of computing and caching the decryption round keys.”h]”hX'Note that this struct is about half the size of struct aes_key. This is separate from struct aes_key so that modes that need only AES encryption (e.g. AES-GCM, AES-CTR, AES-CMAC, tweak key in AES-XTS) don’t incur the time and space overhead of computing and caching the decryption round keys.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KVhhÝh²hubhï)�”}”(hX0Note that there's no decryption-only equivalent (i.e. "struct aes_deckey"), since (a) it's rare that modes need decryption-only, and (b) some AES implementations use the same **k** for both encryption and decryption, either always or conditionally; in the latter case both **k** and **inv_k** are needed.”h]”(hŒ·Note that there’s no decryption-only equivalent (i.e. “struct aes_deckeyâ€�), since (a) it’s rare that modes need decryption-only, and (b) some AES implementations use the same ”…”�”}”(hj[h²hh³Nh´Nubj¨)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj[ubhŒ] for both encryption and decryption, either always or conditionally; in the latter case both ”…”�”}”(hj[h²hh³Nh´Nubj¨)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj[ubhŒ and ”…”�”}”(hj[h²hh³Nh´Nubj¨)�”}”(hŒ **inv_k**”h]”hŒinv_k”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj[ubhŒ are needed.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K[hhÝh²hubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_zeroize_enckey (C function)”Œc.aes_zeroize_enckey”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void aes_zeroize_enckey (struct aes_enckey *key)”h]”j)�”}”(hŒ/void aes_zeroize_enckey(struct aes_enckey *key)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j¹hjµh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kiubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjµh²hh³jÊh´KiubjD)�”}”(hŒaes_zeroize_enckey”h]”jJ)�”}”(hŒaes_zeroize_enckey”h]”hŒaes_zeroize_enckey”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÙubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjµh²hh³jÊh´KiubhŒdesc_parameterlist”“”)�”}”(hŒ(struct aes_enckey *key)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct aes_enckey *key”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjùubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjùubh)�”}”(hhh]”jJ)�”}”(hŒ aes_enckey”h]”hŒ aes_enckey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”Œ identifier”Œ reftarget”jŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j6Œ ASTIdentifier”“”)�”}”j1jßsbŒc.aes_zeroize_enckey”†”asbuh1hhjùubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjùubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jQhjùubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjóubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhjµh²hh³jÊh´Kiubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj±h²hh³jÊh´Kiubah}”(h]”j¬ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jÊh´Kihj®h²hubjv)�”}”(hhh]”hï)�”}”(hŒZeroize an aes_enckey structure”h]”hŒZeroize an aes_enckey structure”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kihj‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj®h²hh³jÊh´Kiubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j¤j™j¤jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hŒF**Parameters** ``struct aes_enckey *key`` The aes_enckey to zeroize”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kmhj¨ubjì)�”}”(hhh]”jñ)�”}”(hŒ4``struct aes_enckey *key`` The aes_enckey to zeroize”h]”(j÷)�”}”(hŒ``struct aes_enckey *key``”h]”jý)�”}”(hjÍh]”hŒstruct aes_enckey *key”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KohjÇubj)�”}”(hhh]”hï)�”}”(hŒThe aes_enckey to zeroize”h]”hŒThe aes_enckey to zeroize”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kjhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jâh´KohjÄubah}”(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”]”(j Œaes_key (C struct)”Œ c.aes_key”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒaes_key”h]”j)�”}”(hŒstruct aes_key”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj#h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Koubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj#h²hh³j4h´KoubjD)�”}”(hŒaes_key”h]”jJ)�”}”(hj!h]”hŒaes_key”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjCubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj#h²hh³j4h´Koubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjh²hh³j4h´Koubah}”(h]”jah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j4h´Kohjh²hubjv)�”}”(hhh]”hï)�”}”(hŒ1An AES key prepared for encryption and decryption”h]”hŒ1An AES key prepared for encryption and decryption”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Krhjfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjh²hh³j4h´Koubeh}”(h]”h ]”(j’Œstruct”eh"]”h$]”h&]”j—j’j˜j�j™j�jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hX**Definition**:: struct aes_key { struct aes_enckey; union aes_invkey_arch inv_k; }; **Members** ``aes_enckey`` Common fields and the key prepared for encryption ``inv_k`` This generally contains the round keys for the AES Equivalent Inverse Cipher, as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here. For example, they may leave this field uninitialized if they use **k** for both encryption and decryption.”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¨)�”}”(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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kvhj…ubjÃ)�”}”(hŒKstruct aes_key { struct aes_enckey; union aes_invkey_arch inv_k; };”h]”hŒKstruct aes_key { struct aes_enckey; union aes_invkey_arch inv_k; };”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kxhj…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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K}hj…ubjì)�”}”(hhh]”(jñ)�”}”(hŒA``aes_enckey`` Common fields and the key prepared for encryption ”h]”(j÷)�”}”(hŒ``aes_enckey``”h]”jý)�”}”(hjÖh]”hŒ aes_enckey”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KthjÐubj)�”}”(hhh]”hï)�”}”(hŒ1Common fields and the key prepared for encryption”h]”hŒ1Common fields and the key prepared for encryption”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jëh´Kthjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jëh´KthjÍubjñ)�”}”(hXT``inv_k`` This generally contains the round keys for the AES Equivalent Inverse Cipher, as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here. For example, they may leave this field uninitialized if they use **k** for both encryption and decryption.”h]”(j÷)�”}”(hŒ ``inv_k``”h]”jý)�”}”(hjh]”hŒinv_k”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kxhj ubj)�”}”(hhh]”hï)�”}”(hXJThis generally contains the round keys for the AES Equivalent Inverse Cipher, as an array of '**nrounds** + 1' groups of four u32 words. However, architecture-specific implementations of AES may store something else here. For example, they may leave this field uninitialized if they use **k** for both encryption and decryption.”h]”(hŒ`This generally contains the round keys for the AES Equivalent Inverse Cipher, as an array of ‘”…”�”}”(hj(h²hh³Nh´Nubj¨)�”}”(hŒ **nrounds**”h]”hŒnrounds”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj(ubhŒº + 1’ groups of four u32 words. However, architecture-specific implementations of AES may store something else here. For example, they may leave this field uninitialized if they use ”…”�”}”(hj(h²hh³Nh´Nubj¨)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj(ubhŒ$ for both encryption and decryption.”…”�”}”(hj(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kuhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j$h´KxhjÍ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”]”(j Œaes_zeroize_key (C function)”Œc.aes_zeroize_key”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void aes_zeroize_key (struct aes_key *key)”h]”j)�”}”(hŒ)void aes_zeroize_key(struct aes_key *key)”h]”(jº)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj‰h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K€ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj‰h²hh³j›h´K€ubjD)�”}”(hŒaes_zeroize_key”h]”jJ)�”}”(hŒaes_zeroize_key”h]”hŒaes_zeroize_key”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjªubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj‰h²hh³j›h´K€ubjò)�”}”(hŒ(struct aes_key *key)”h]”jø)�”}”(hŒstruct aes_key *key”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÆubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÆubh)�”}”(hhh]”jJ)�”}”(hŒaes_key”h]”hŒaes_key”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jêŒmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1j°sbŒc.aes_zeroize_key”†”asbuh1hhjÆubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÆubjR)�”}”(hjUh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÆubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjÂubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhj‰h²hh³j›h´K€ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj…h²hh³j›h´K€ubah}”(h]”j€ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j›h´K€hj‚h²hubjv)�”}”(hhh]”hï)�”}”(hŒZeroize an aes_key structure”h]”hŒZeroize an aes_key structure”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K€hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj‚h²hh³j›h´K€ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jej™jejš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hŒ@**Parameters** ``struct aes_key *key`` The aes_key to zeroize”h]”(hï)�”}”(hŒ**Parameters**”h]”j¨)�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K„hjiubjì)�”}”(hhh]”jñ)�”}”(hŒ.``struct aes_key *key`` The aes_key to zeroize”h]”(j÷)�”}”(hŒ``struct aes_key *key``”h]”jý)�”}”(hjŽh]”hŒstruct aes_key *key”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K†hjˆubj)�”}”(hhh]”hï)�”}”(hŒThe aes_key to zeroize”h]”hŒThe aes_key to zeroize”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K�hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j£h´K†hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_expandkey (C function)”Œc.aes_expandkey”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint aes_expandkey (struct crypto_aes_ctx *ctx, const u8 *in_key, unsigned int key_len)”h]”j)�”}”(hŒUint aes_expandkey(struct crypto_aes_ctx *ctx, const u8 *in_key, unsigned int key_len)”h]”(jº)�”}”(hŒint”h]”hŒint”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjäh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¤ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjäh²hh³jöh´K¤ubjD)�”}”(hŒ aes_expandkey”h]”jJ)�”}”(hŒ aes_expandkey”h]”hŒ aes_expandkey”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjäh²hh³jöh´K¤ubjò)�”}”(hŒD(struct crypto_aes_ctx *ctx, const u8 *in_key, unsigned int key_len)”h]”(jø)�”}”(hŒstruct crypto_aes_ctx *ctx”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj!ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj!ubh)�”}”(hhh]”jJ)�”}”(hŒcrypto_aes_ctx”h]”hŒcrypto_aes_ctx”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jEŒmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1j sbŒc.aes_expandkey”†”asbuh1hhj!ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj!ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj!ubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjubjø)�”}”(hŒconst u8 *in_key”h]”(j!)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj“ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj“ubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j¸Œmodname”NŒ classname”Nj5j8)�”}”j;]”j_Œc.aes_expandkey”†”asbuh1hhj“ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj“ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj“ubjJ)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjubjø)�”}”(hŒunsigned int key_len”h]”(jº)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubjº)�”}”(hŒint”h]”hŒint”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhjäh²hh³jöh´K¤ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjàh²hh³jöh´K¤ubah}”(h]”jÛah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jöh´K¤hjÝh²hubjv)�”}”(hhh]”hï)�”}”(hŒ,Expands the AES key as described in FIPS-197”h]”hŒ,Expands the AES key as described in FIPS-197”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¤hjg h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjÝh²hh³jöh´K¤ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j‚ j™j‚ jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hX®**Parameters** ``struct crypto_aes_ctx *ctx`` The location where the computed key will be stored. ``const u8 *in_key`` The supplied key. ``unsigned int key_len`` The length of the supplied key. **Description** Returns 0 on success. The function fails only if an invalid key size (or pointer) is supplied. The expanded key size is 240 bytes (max of 14 rounds with a unique 16 bytes key schedule plus a 16 bytes key which is used before the first round). The decryption key is prepared for the "Equivalent Inverse Cipher" as described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is for the initial combination, the second slot for the first round and so on.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¨hj† ubjì)�”}”(hhh]”(jñ)�”}”(hŒS``struct crypto_aes_ctx *ctx`` The location where the computed key will be stored. ”h]”(j÷)�”}”(hŒ``struct crypto_aes_ctx *ctx``”h]”jý)�”}”(hj« h]”hŒstruct crypto_aes_ctx *ctx”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¥hj¥ ubj)�”}”(hhh]”hï)�”}”(hŒ3The location where the computed key will be stored.”h]”hŒ3The location where the computed key will be stored.”…”�”}”(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Œ'``const u8 *in_key`` The supplied key. ”h]”(j÷)�”}”(hŒ``const u8 *in_key``”h]”jý)�”}”(hjä h]”hŒconst u8 *in_key”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¦hjÞ ubj)�”}”(hhh]”hï)�”}”(hŒThe supplied key.”h]”hŒThe supplied key.”…”�”}”(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Œ9``unsigned int key_len`` The length of the supplied key. ”h]”(j÷)�”}”(hŒ``unsigned int key_len``”h]”jý)�”}”(hj h]”hŒunsigned int key_len”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K§hj ubj)�”}”(hhh]”hï)�”}”(hŒThe length of the supplied key.”h]”hŒThe length of the supplied key.”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j2 h´K§hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j2 h´K§hj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj† ubhï)�”}”(hŒ**Description**”h]”j¨)�”}”(hjX h]”hŒ Description”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K©hj† ubhï)�”}”(hXÑReturns 0 on success. The function fails only if an invalid key size (or pointer) is supplied. The expanded key size is 240 bytes (max of 14 rounds with a unique 16 bytes key schedule plus a 16 bytes key which is used before the first round). The decryption key is prepared for the "Equivalent Inverse Cipher" as described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is for the initial combination, the second slot for the first round and so on.”h]”hXÕReturns 0 on success. The function fails only if an invalid key size (or pointer) is supplied. The expanded key size is 240 bytes (max of 14 rounds with a unique 16 bytes key schedule plus a 16 bytes key which is used before the first round). The decryption key is prepared for the “Equivalent Inverse Cipherâ€� as described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is for the initial combination, the second slot for the first round and so on.”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¨hj† ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_zeroize_ctx (C function)”Œc.aes_zeroize_ctx”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1void aes_zeroize_ctx (struct crypto_aes_ctx *ctx)”h]”j)�”}”(hŒ0void aes_zeroize_ctx(struct crypto_aes_ctx *ctx)”h]”(jº)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj™ h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kµubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj™ h²hh³j« h´KµubjD)�”}”(hŒaes_zeroize_ctx”h]”jJ)�”}”(hŒaes_zeroize_ctx”h]”hŒaes_zeroize_ctx”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjº ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj™ h²hh³j« h´Kµubjò)�”}”(hŒ(struct crypto_aes_ctx *ctx)”h]”jø)�”}”(hŒstruct crypto_aes_ctx *ctx”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÖ ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÖ ubh)�”}”(hhh]”jJ)�”}”(hŒcrypto_aes_ctx”h]”hŒcrypto_aes_ctx”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjõ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jú Œmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1jÀ sbŒc.aes_zeroize_ctx”†”asbuh1hhjÖ ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÖ ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÖ ubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÖ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjÒ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhj™ h²hh³j« h´Kµubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj• h²hh³j« h´Kµubah}”(h]”j� ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j« h´Kµhj’ h²hubjv)�”}”(hhh]”hï)�”}”(hŒ Clear a crypto_aes_ctx structure”h]”hŒ Clear a crypto_aes_ctx structure”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´KµhjZ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj’ h²hh³j« h´Kµubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜ju j™ju jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hXA**Parameters** ``struct crypto_aes_ctx *ctx`` The location of the context that should be zeroized **Description** Explicitly fills the crypto_aes_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¹hjy ubjì)�”}”(hhh]”jñ)�”}”(hŒS``struct crypto_aes_ctx *ctx`` The location of the context that should be zeroized ”h]”(j÷)�”}”(hŒ``struct crypto_aes_ctx *ctx``”h]”jý)�”}”(hjž h]”hŒstruct crypto_aes_ctx *ctx”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¶hj˜ ubj)�”}”(hhh]”hï)�”}”(hŒ3The location of the context that should be zeroized”h]”hŒ3The location of the context that should be zeroized”…”�”}”(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• ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjy 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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K¸hjy ubhï)�”}”(hŒÊExplicitly fills the crypto_aes_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).”h]”hŒÊExplicitly fills the crypto_aes_ctx with zeroes. This should be done once the context is not required anymore to avoid that its contents are leaked on the stack or heap (if not using kfree_sensitive()).”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K·hjy ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_preparekey (C function)”Œc.aes_preparekey”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJint aes_preparekey (struct aes_key *key, const u8 *in_key, size_t key_len)”h]”j)�”}”(hŒIint aes_preparekey(struct aes_key *key, const u8 *in_key, size_t key_len)”h]”(jº)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MXubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj h²hh³j, h´MXubjD)�”}”(hŒaes_preparekey”h]”jJ)�”}”(hŒaes_preparekey”h]”hŒaes_preparekey”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj; ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj h²hh³j, h´MXubjò)�”}”(hŒ7(struct aes_key *key, const u8 *in_key, size_t key_len)”h]”(jø)�”}”(hŒstruct aes_key *key”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjW ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjW ubh)�”}”(hhh]”jJ)�”}”(hŒaes_key”h]”hŒaes_key”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjv ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j{ Œmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1jA sbŒc.aes_preparekey”†”asbuh1hhjW ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjW ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjW ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjW ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjS ubjø)�”}”(hŒconst u8 *in_key”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÉ ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÉ ubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjè ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jí Œmodname”NŒ classname”Nj5j8)�”}”j;]”j• Œc.aes_preparekey”†”asbuh1hhjÉ ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÉ ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÉ ubjJ)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjS ubjø)�”}”(hŒsize_t key_len”h]”(h)�”}”(hhh]”jJ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj= ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jB Œmodname”NŒ classname”Nj5j8)�”}”j;]”j• Œc.aes_preparekey”†”asbuh1hhj9 ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj9 ubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj9 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjS ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhj h²hh³j, h´MXubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj h²hh³j, h´MXubah}”(h]”j ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j, h´MXhj h²hubjv)�”}”(hhh]”hï)�”}”(hŒ0Prepare an AES key for encryption and decryption”h]”hŒ0Prepare an AES key for encryption and decryption”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MXhj“ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj h²hh³j, h´MXubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j® j™j® jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hXÇ**Parameters** ``struct aes_key *key`` (output) The key structure to initialize ``const u8 *in_key`` The raw AES key ``size_t key_len`` Length of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256. **Description** This prepares an AES key for both the encryption and decryption directions of the block cipher. Typically this involves expanding the raw key into both the standard round keys and the Equivalent Inverse Cipher round keys, but some architecture-specific implementations don't do the full expansion here. The caller is responsible for zeroizing both the struct aes_key and the raw key once they are no longer needed. If you don't need decryption support, use aes_prepareenckey() instead. **Return** 0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors. **Context** Any context.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M\hj² ubjì)�”}”(hhh]”(jñ)�”}”(hŒA``struct aes_key *key`` (output) The key structure to initialize ”h]”(j÷)�”}”(hŒ``struct aes_key *key``”h]”jý)�”}”(hj× h]”hŒstruct aes_key *key”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MYhjÑ ubj)�”}”(hhh]”hï)�”}”(hŒ((output) The key structure to initialize”h]”hŒ((output) The key structure to initialize”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jì h´MYhjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jì h´MYhjÎ ubjñ)�”}”(hŒ%``const u8 *in_key`` The raw AES key ”h]”(j÷)�”}”(hŒ``const u8 *in_key``”h]”jý)�”}”(hjh]”hŒconst u8 *in_key”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MZhj ubj)�”}”(hhh]”hï)�”}”(hŒThe raw AES key”h]”hŒThe raw AES key”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j%h´MZhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j%h´MZhjÎ ubjñ)�”}”(hŒ{``size_t key_len`` Length of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256. ”h]”(j÷)�”}”(hŒ``size_t key_len``”h]”jý)�”}”(hjIh]”hŒsize_t key_len”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M\hjCubj)�”}”(hhh]”hï)�”}”(hŒgLength of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256.”h]”hŒgLength of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M[hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j^h´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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M^hj² ubhï)�”}”(hX/This prepares an AES key for both the encryption and decryption directions of the block cipher. Typically this involves expanding the raw key into both the standard round keys and the Equivalent Inverse Cipher round keys, but some architecture-specific implementations don't do the full expansion here.”h]”hX1This prepares an AES key for both the encryption and decryption directions of the block cipher. Typically this involves expanding the raw key into both the standard round keys and the Equivalent Inverse Cipher round keys, but some architecture-specific implementations don’t do the full expansion here.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M]hj² ubhï)�”}”(hŒoThe caller is responsible for zeroizing both the struct aes_key and the raw key once they are no longer needed.”h]”hŒoThe caller is responsible for zeroizing both the struct aes_key and the raw key once they are no longer needed.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mbhj² ubhï)�”}”(hŒFIf you don't need decryption support, use aes_prepareenckey() instead.”h]”hŒHIf you don’t need decryption support, use aes_prepareenckey() instead.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mehj² 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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mghj² ubhï)�”}”(hŒ©0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors.”h]”hŒ«0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don’t need to check for errors.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mlhj² ubhï)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mlhj² ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_prepareenckey (C function)”Œc.aes_prepareenckey”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPint aes_prepareenckey (struct aes_enckey *key, const u8 *in_key, size_t key_len)”h]”j)�”}”(hŒOint aes_prepareenckey(struct aes_enckey *key, const u8 *in_key, size_t key_len)”h]”(jº)�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj2h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mqubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj2h²hh³jDh´MqubjD)�”}”(hŒaes_prepareenckey”h]”jJ)�”}”(hŒaes_prepareenckey”h]”hŒaes_prepareenckey”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjSubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj2h²hh³jDh´Mqubjò)�”}”(hŒ:(struct aes_enckey *key, const u8 *in_key, size_t key_len)”h]”(jø)�”}”(hŒstruct aes_enckey *key”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjoubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjoubh)�”}”(hhh]”jJ)�”}”(hŒ aes_enckey”h]”hŒ aes_enckey”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j“Œmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1jYsbŒc.aes_prepareenckey”†”asbuh1hhjoubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjoubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjoubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjkubjø)�”}”(hŒconst u8 *in_key”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjáubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjáubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jŒmodname”NŒ classname”Nj5j8)�”}”j;]”j­Œc.aes_prepareenckey”†”asbuh1hhjáubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjáubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjáubjJ)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjkubjø)�”}”(hŒsize_t key_len”h]”(h)�”}”(hhh]”jJ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jZŒmodname”NŒ classname”Nj5j8)�”}”j;]”j­Œc.aes_prepareenckey”†”asbuh1hhjQubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjQubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjkubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhj2h²hh³jDh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj.h²hh³jDh´Mqubah}”(h]”j)ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jDh´Mqhj+h²hubjv)�”}”(hhh]”hï)�”}”(hŒ&Prepare an AES key for encryption-only”h]”hŒ&Prepare an AES key for encryption-only”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mqhj«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj+h²hh³jDh´Mqubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jÆj™jÆjš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hX **Parameters** ``struct aes_enckey *key`` (output) The key structure to initialize ``const u8 *in_key`` The raw AES key ``size_t key_len`` Length of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256. **Description** This prepares an AES key for only the encryption direction of the block cipher. Typically this involves expanding the raw key into only the standard round keys, resulting in a struct about half the size of struct aes_key. The caller is responsible for zeroizing both the struct aes_enckey and the raw key once they are no longer needed. Note that while the resulting prepared key supports only AES encryption, it can still be used for decrypting in a mode of operation that uses AES in only the encryption (forward) direction, for example counter mode. **Return** 0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors. **Context** Any context.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MuhjÊubjì)�”}”(hhh]”(jñ)�”}”(hŒD``struct aes_enckey *key`` (output) The key structure to initialize ”h]”(j÷)�”}”(hŒ``struct aes_enckey *key``”h]”jý)�”}”(hjïh]”hŒstruct aes_enckey *key”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mrhjéubj)�”}”(hhh]”hï)�”}”(hŒ((output) The key structure to initialize”h]”hŒ((output) The key structure to initialize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´Mrhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´Mrhjæubjñ)�”}”(hŒ%``const u8 *in_key`` The raw AES key ”h]”(j÷)�”}”(hŒ``const u8 *in_key``”h]”jý)�”}”(hj(h]”hŒconst u8 *in_key”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mshj"ubj)�”}”(hhh]”hï)�”}”(hŒThe raw AES key”h]”hŒThe raw AES key”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j=h´Mshj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j=h´Mshjæubjñ)�”}”(hŒ{``size_t key_len`` Length of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256. ”h]”(j÷)�”}”(hŒ``size_t key_len``”h]”jý)�”}”(hjah]”hŒsize_t key_len”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Muhj[ubj)�”}”(hhh]”hï)�”}”(hŒgLength of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256.”h]”hŒgLength of the raw key in bytes. Should be either AES_KEYSIZE_128, AES_KEYSIZE_192, or AES_KEYSIZE_256.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mthjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jvh´Muhjæ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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MwhjÊubhï)�”}”(hŒÞThis prepares an AES key for only the encryption direction of the block cipher. Typically this involves expanding the raw key into only the standard round keys, resulting in a struct about half the size of struct aes_key.”h]”hŒÞThis prepares an AES key for only the encryption direction of the block cipher. Typically this involves expanding the raw key into only the standard round keys, resulting in a struct about half the size of struct aes_key.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MvhjÊubhï)�”}”(hŒrThe caller is responsible for zeroizing both the struct aes_enckey and the raw key once they are no longer needed.”h]”hŒrThe caller is responsible for zeroizing both the struct aes_enckey and the raw key once they are no longer needed.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MzhjÊubhï)�”}”(hŒ×Note that while the resulting prepared key supports only AES encryption, it can still be used for decrypting in a mode of operation that uses AES in only the encryption (forward) direction, for example counter mode.”h]”hŒ×Note that while the resulting prepared key supports only AES encryption, it can still be used for decrypting in a mode of operation that uses AES in only the encryption (forward) direction, for example counter mode.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M�hjÊubhï)�”}”(hŒ©0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don't need to check for errors.”h]”hŒ«0 on success or -EINVAL if the given key length is invalid. No other errors are possible, so callers that always pass a valid key length don’t need to check for errors.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M‚hjÊubhï)�”}”(hŒ **Context**”h]”j¨)�”}”(hj h]”hŒContext”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M†hjÊubhï)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M†hjÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_encrypt (C function)”Œ c.aes_encrypt”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒivoid aes_encrypt (aes_encrypt_arg key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”j)�”}”(hŒhvoid aes_encrypt(aes_encrypt_arg key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”(jº)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjJh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M�ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjJh²hh³j\h´M�ubjD)�”}”(hŒ aes_encrypt”h]”jJ)�”}”(hŒ aes_encrypt”h]”hŒ aes_encrypt”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjkubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjJh²hh³j\h´M�ubjò)�”}”(hŒX(aes_encrypt_arg key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”(jø)�”}”(hŒaes_encrypt_arg key”h]”(h)�”}”(hhh]”jJ)�”}”(hŒaes_encrypt_arg”h]”hŒaes_encrypt_arg”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j�Œmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1jqsbŒ c.aes_encrypt”†”asbuh1hhj‡ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj‡ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjƒubjø)�”}”(hŒu8 out[static AES_BLOCK_SIZE]”h]”(h)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jÚŒmodname”NŒ classname”Nj5j8)�”}”j;]”jªŒ c.aes_encrypt”†”asbuh1hhjÑubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÑubjJ)�”}”(hŒout”h]”hŒout”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÑubjR)�”}”(hŒ[”h]”hŒ[”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÑubj!)�”}”(hŒstatic”h]”hŒstatic”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÑubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h•n„]”h ]”j?ah"]”h$]”h&]”uh1j2hjÑubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jAŒmodname”NŒ classname”Nj5j8)�”}”j;]”jªŒ c.aes_encrypt”†”asbuh1hhjÑubjR)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjƒubjø)�”}”(hŒ"const u8 in[static AES_BLOCK_SIZE]”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjrubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjrubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j–Œmodname”NŒ classname”Nj5j8)�”}”j;]”jªŒ c.aes_encrypt”†”asbuh1hhjrubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjrubjJ)�”}”(hŒin”h]”hŒin”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjrubjR)�”}”(hjh]”hŒ[”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjrubj!)�”}”(hj"h]”hŒstatic”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjrubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjrubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jûŒmodname”NŒ classname”Nj5j8)�”}”j;]”jªŒ c.aes_encrypt”†”asbuh1hhjrubjR)�”}”(hj_h]”hŒ]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjƒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhjJh²hh³j\h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjFh²hh³j\h´M�ubah}”(h]”jAah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j\h´M�hjCh²hubjv)�”}”(hhh]”hï)�”}”(hŒEncrypt a single AES block”h]”hŒEncrypt a single AES block”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M�hj=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjCh²hh³j\h´M�ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jXj™jXjš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hX^**Parameters** ``aes_encrypt_arg key`` The AES key, as a pointer to either an encryption-only key (struct aes_enckey) or a full, bidirectional key (struct aes_key). ``u8 out[static AES_BLOCK_SIZE]`` Buffer to store the ciphertext block ``const u8 in[static AES_BLOCK_SIZE]`` Buffer containing the plaintext block **Context** Any context.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¨)�”}”(hjbh]”hŒ Parameters”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M”hj\ubjì)�”}”(hhh]”(jñ)�”}”(hŒ–``aes_encrypt_arg key`` The AES key, as a pointer to either an encryption-only key (struct aes_enckey) or a full, bidirectional key (struct aes_key). ”h]”(j÷)�”}”(hŒ``aes_encrypt_arg key``”h]”jý)�”}”(hj�h]”hŒaes_encrypt_arg key”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M’hj{ubj)�”}”(hhh]”hï)�”}”(hŒ}The AES key, as a pointer to either an encryption-only key (struct aes_enckey) or a full, bidirectional key (struct aes_key).”h]”hŒ}The AES key, as a pointer to either an encryption-only key (struct aes_enckey) or a full, bidirectional key (struct aes_key).”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M‘hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j–h´M’hjxubjñ)�”}”(hŒG``u8 out[static AES_BLOCK_SIZE]`` Buffer to store the ciphertext block ”h]”(j÷)�”}”(hŒ!``u8 out[static AES_BLOCK_SIZE]``”h]”jý)�”}”(hj»h]”hŒu8 out[static AES_BLOCK_SIZE]”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M“hjµubj)�”}”(hhh]”hï)�”}”(hŒ$Buffer to store the ciphertext block”h]”hŒ$Buffer to store the ciphertext block”…”�”}”(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“hjxubjñ)�”}”(hŒM``const u8 in[static AES_BLOCK_SIZE]`` Buffer containing the plaintext block ”h]”(j÷)�”}”(hŒ&``const u8 in[static AES_BLOCK_SIZE]``”h]”jý)�”}”(hjôh]”hŒ"const u8 in[static AES_BLOCK_SIZE]”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M”hjîubj)�”}”(hhh]”hï)�”}”(hŒ%Buffer containing the plaintext block”h]”hŒ%Buffer containing the plaintext block”…”�”}”(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”hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj\ubhï)�”}”(hŒ **Context**”h]”j¨)�”}”(hj/h]”hŒContext”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M–hj\ubhï)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M–hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaes_decrypt (C function)”Œ c.aes_decrypt”hNt”auh1hþhhÝh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒovoid aes_decrypt (const struct aes_key *key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”j)�”}”(hŒnvoid aes_decrypt(const struct aes_key *key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”(jº)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjph²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mœubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjph²hh³j‚h´MœubjD)�”}”(hŒ aes_decrypt”h]”jJ)�”}”(hŒ aes_decrypt”h]”hŒ aes_decrypt”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj‘ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjph²hh³j‚h´Mœubjò)�”}”(hŒ^(const struct aes_key *key, u8 out[static AES_BLOCK_SIZE], const u8 in[static AES_BLOCK_SIZE])”h]”(jø)�”}”(hŒconst struct aes_key *key”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj­ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj­ubj!)�”}”(hj$h]”hŒstruct”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj­ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj­ubh)�”}”(hhh]”jJ)�”}”(hŒaes_key”h]”hŒaes_key”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jìŒmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1j—sbŒ c.aes_decrypt”†”asbuh1hhj­ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj­ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj­ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj©ubjø)�”}”(hŒu8 out[static AES_BLOCK_SIZE]”h]”(h)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jCŒmodname”NŒ classname”Nj5j8)�”}”j;]”jŒ c.aes_decrypt”†”asbuh1hhj:ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj:ubjJ)�”}”(hŒout”h]”hŒout”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj:ubjR)�”}”(hjh]”hŒ[”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj:ubj!)�”}”(hj"h]”hŒstatic”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj:ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj:ubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j¨Œmodname”NŒ classname”Nj5j8)�”}”j;]”jŒ c.aes_decrypt”†”asbuh1hhj:ubjR)�”}”(hj_h]”hŒ]”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj©ubjø)�”}”(hŒ"const u8 in[static AES_BLOCK_SIZE]”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjØubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjØubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jüŒmodname”NŒ classname”Nj5j8)�”}”j;]”jŒ c.aes_decrypt”†”asbuh1hhjØubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjØubjJ)�”}”(hŒin”h]”hŒin”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjØubjR)�”}”(hjh]”hŒ[”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjØubj!)�”}”(hj"h]”hŒstatic”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjØubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjØubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jaŒmodname”NŒ classname”Nj5j8)�”}”j;]”jŒ c.aes_decrypt”†”asbuh1hhjØubjR)�”}”(hj_h]”hŒ]”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj©ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhjph²hh³j‚h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjlh²hh³j‚h´Mœubah}”(h]”jgah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j‚h´Mœhjih²hubjv)�”}”(hhh]”hï)�”}”(hŒDecrypt a single AES block”h]”hŒDecrypt a single AES block”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mœhj£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjih²hh³j‚h´Mœubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j¾j™j¾jš‰j›‰jœ‰uh1jh²hhhÝh³Nh´Nubjž)�”}”(hX**Parameters** ``const struct aes_key *key`` The AES key, previously initialized by aes_preparekey() ``u8 out[static AES_BLOCK_SIZE]`` Buffer to store the plaintext block ``const u8 in[static AES_BLOCK_SIZE]`` Buffer containing the ciphertext block **Context** Any context.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M hjÂubjì)�”}”(hhh]”(jñ)�”}”(hŒV``const struct aes_key *key`` The AES key, previously initialized by aes_preparekey() ”h]”(j÷)�”}”(hŒ``const struct aes_key *key``”h]”jý)�”}”(hjçh]”hŒconst struct aes_key *key”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M�hjáubj)�”}”(hhh]”hï)�”}”(hŒ7The AES key, previously initialized by aes_preparekey()”h]”hŒ7The AES key, previously initialized by aes_preparekey()”…”�”}”(hjh²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ŒF``u8 out[static AES_BLOCK_SIZE]`` Buffer to store the plaintext block ”h]”(j÷)�”}”(hŒ!``u8 out[static AES_BLOCK_SIZE]``”h]”jý)�”}”(hj h]”hŒu8 out[static AES_BLOCK_SIZE]”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mžhjubj)�”}”(hhh]”hï)�”}”(hŒ#Buffer to store the plaintext block”h]”hŒ#Buffer to store the plaintext block”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j5h´Mžhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j5h´MžhjÞubjñ)�”}”(hŒN``const u8 in[static AES_BLOCK_SIZE]`` Buffer containing the ciphertext block ”h]”(j÷)�”}”(hŒ&``const u8 in[static AES_BLOCK_SIZE]``”h]”jý)�”}”(hjYh]”hŒ"const u8 in[static AES_BLOCK_SIZE]”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MŸhjSubj)�”}”(hhh]”hï)�”}”(hŒ&Buffer containing the ciphertext block”h]”hŒ&Buffer containing the ciphertext block”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jnh´MŸhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jnh´MŸhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÂ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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M¡hjÂubhï)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M¡hjÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÝh²hh³Nh´Nubeh}”(h]”Œaes”ah ]”h"]”Œaes”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDES”h]”hŒDES”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÈh²hh³hÇh´Kubhï)�”}”(hŒ‚This API provides support for the DES block cipher. This algorithm is obsolete and is supported only for backwards compatibility.”h]”hŒ‚This API provides support for the DES block cipher. This algorithm is obsolete and is supported only for backwards compatibility.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÈh²hubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdes_expand_key (C function)”Œc.des_expand_key”hNt”auh1hþhjÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLint des_expand_key (struct des_ctx *ctx, const u8 *key, unsigned int keylen)”h]”j)�”}”(hŒKint des_expand_key(struct des_ctx *ctx, const u8 *key, unsigned int keylen)”h]”(jº)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjüh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K"ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjüh²hh³jh´K"ubjD)�”}”(hŒdes_expand_key”h]”jJ)�”}”(hŒdes_expand_key”h]”hŒdes_expand_key”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjüh²hh³jh´K"ubjò)�”}”(hŒ9(struct des_ctx *ctx, const u8 *key, unsigned int keylen)”h]”(jø)�”}”(hŒstruct des_ctx *ctx”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj9ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj9ubh)�”}”(hhh]”jJ)�”}”(hŒdes_ctx”h]”hŒdes_ctx”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”j]Œmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1j#sbŒc.des_expand_key”†”asbuh1hhj9ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj9ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj9ubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj5ubjø)�”}”(hŒ const u8 *key”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj«ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj«ubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jÏŒmodname”NŒ classname”Nj5j8)�”}”j;]”jwŒc.des_expand_key”†”asbuh1hhj«ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj«ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj«ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj5ubjø)�”}”(hŒunsigned int keylen”h]”(jº)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjubjº)�”}”(hŒint”h]”hŒint”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjubjJ)�”}”(hŒkeylen”h]”hŒkeylen”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hj5ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhjüh²hh³jh´K"ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjøh²hh³jh´K"ubah}”(h]”jóah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jh´K"hjõh²hubjv)�”}”(hhh]”hï)�”}”(hŒ*Expand a DES input key into a key schedule”h]”hŒ*Expand a DES input key into a key schedule”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K"hj~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjõh²hh³jh´K"ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j™j™j™jš‰j›‰jœ‰uh1jh²hhjÈh³Nh´Nubjž)�”}”(hX(**Parameters** ``struct des_ctx *ctx`` the key schedule ``const u8 *key`` buffer containing the input key ``unsigned int keylen`` size of the buffer contents **Return** 0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak.”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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K&hj�ubjì)�”}”(hhh]”(jñ)�”}”(hŒ)``struct des_ctx *ctx`` the key schedule ”h]”(j÷)�”}”(hŒ``struct des_ctx *ctx``”h]”jý)�”}”(hjÂh]”hŒstruct des_ctx *ctx”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K#hj¼ubj)�”}”(hhh]”hï)�”}”(hŒthe key schedule”h]”hŒthe key schedule”…”�”}”(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Œ2``const u8 *key`` buffer containing the input 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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K$hjõubj)�”}”(hhh]”hï)�”}”(hŒbuffer containing the input key”h]”hŒbuffer containing the input key”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´K$hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´K$hj¹ubjñ)�”}”(hŒ4``unsigned int keylen`` size of the buffer contents ”h]”(j÷)�”}”(hŒ``unsigned int keylen``”h]”jý)�”}”(hj4h]”hŒunsigned int keylen”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K%hj.ubj)�”}”(hhh]”hï)�”}”(hŒsize of the buffer contents”h]”hŒsize of the buffer contents”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jIh´K%hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jIh´K%hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj�ubhï)�”}”(hŒ **Return**”h]”j¨)�”}”(hjoh]”hŒReturn”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K'hj�ubhï)�”}”(hŒt0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak.”h]”hŒt0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak.”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K'hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÈh²hh³Nh´Nubhÿ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ des3_ede_expand_key (C function)”Œc.des3_ede_expand_key”hNt”auh1hþhjÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint des3_ede_expand_key (struct des3_ede_ctx *ctx, const u8 *key, unsigned int keylen)”h]”j)�”}”(hŒUint des3_ede_expand_key(struct des3_ede_ctx *ctx, const u8 *key, unsigned int keylen)”h]”(jº)�”}”(hŒint”h]”hŒint”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj°h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K-ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj°h²hh³jÂh´K-ubjD)�”}”(hŒdes3_ede_expand_key”h]”jJ)�”}”(hŒdes3_ede_expand_key”h]”hŒdes3_ede_expand_key”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÑubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj°h²hh³jÂh´K-ubjò)�”}”(hŒ>(struct des3_ede_ctx *ctx, const u8 *key, unsigned int keylen)”h]”(jø)�”}”(hŒstruct des3_ede_ctx *ctx”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjíubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjíubh)�”}”(hhh]”jJ)�”}”(hŒ des3_ede_ctx”h]”hŒ des3_ede_ctx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jŒmodname”NŒ classname”Nj5j8)�”}”j;]”j>)�”}”j1j×sbŒc.des3_ede_expand_key”†”asbuh1hhjíubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjíubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjíubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjéubjø)�”}”(hŒ const u8 *key”h]”(j!)�”}”(hj™h]”hŒconst”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj_ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj_ubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j1Œ reftarget”jƒŒmodname”NŒ classname”Nj5j8)�”}”j;]”j+Œc.des3_ede_expand_key”†”asbuh1hhj_ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj_ubjR)�”}”(hjUh]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj_ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjéubjø)�”}”(hŒunsigned int keylen”h]”(jº)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjÏubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÏubjº)�”}”(hŒint”h]”hŒint”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjÏubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÏubjJ)�”}”(hŒkeylen”h]”hŒkeylen”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j÷hjéubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jñhj°h²hh³jÂh´K-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj¬h²hh³jÂh´K-ubah}”(h]”j§ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jÂh´K-hj©h²hubjv)�”}”(hhh]”hï)�”}”(hŒ1Expand a triple DES input key into a key schedule”h]”hŒ1Expand a triple DES input key into a key schedule”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K-hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj©h²hh³jÂh´K-ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jMj™jMjš‰j›‰jœ‰uh1jh²hhjÈh³Nh´Nubjž)�”}”(hXŒ**Parameters** ``struct des3_ede_ctx *ctx`` the key schedule ``const u8 *key`` buffer containing the input key ``unsigned int keylen`` size of the buffer contents **Return** 0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak. Note that weak keys will be rejected (and -EINVAL will be returned) when running in FIPS mode.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¨)�”}”(hjWh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K1hjQubjì)�”}”(hhh]”(jñ)�”}”(hŒ.``struct des3_ede_ctx *ctx`` the key schedule ”h]”(j÷)�”}”(hŒ``struct des3_ede_ctx *ctx``”h]”jý)�”}”(hjvh]”hŒstruct des3_ede_ctx *ctx”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K.hjpubj)�”}”(hhh]”hï)�”}”(hŒthe key schedule”h]”hŒthe key schedule”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‹h´K.hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j‹h´K.hjmubjñ)�”}”(hŒ2``const u8 *key`` buffer containing the input 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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K/hj©ubj)�”}”(hhh]”hï)�”}”(hŒbuffer containing the input key”h]”hŒbuffer containing the input key”…”�”}”(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/hjmubjñ)�”}”(hŒ4``unsigned int keylen`` size of the buffer contents ”h]”(j÷)�”}”(hŒ``unsigned int keylen``”h]”jý)�”}”(hjèh]”hŒunsigned int keylen”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K0hjâubj)�”}”(hhh]”hï)�”}”(hŒsize of the buffer contents”h]”hŒsize of the buffer contents”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jýh´K0hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jýh´K0hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjQubhï)�”}”(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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K2hjQubhï)�”}”(hŒÓ0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak. Note that weak keys will be rejected (and -EINVAL will be returned) when running in FIPS mode.”h]”hŒÓ0 on success, -EINVAL if the input key is rejected and -ENOKEY if the key is accepted but has been found to be weak. Note that weak keys will be rejected (and -EINVAL will be returned) when running in FIPS mode.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K2hjQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÈh²hh³Nh´Nubeh}”(h]”Œdes”ah ]”h"]”Œdes”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œ block-ciphers”ah ]”h"]”Œ block ciphers”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j‚Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j\jYjÅjÂjTjQuŒ nametypes”}”(j\‰jʼnjT‰uh}”(jYhÊjÂhÝj jj¬j±jjj€j…jÛjàj� j• j j j)j.jAjFjgjljQjÈjójøj§j¬uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.