€•CŒ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_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´Kcubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjµh²hh³jÆh´KcubjD)�”}”(hŒaes_key”h]”jJ)�”}”(hj³h]”hŒaes_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´Kcubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj±h²hh³jÆh´Kcubah}”(h]”j¬ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jÆh´Kchj®h²hubjv)�”}”(hhh]”hï)�”}”(hŒ1An AES key prepared for encryption and decryption”h]”hŒ1An AES key prepared 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´Kihjøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj®h²hh³jÆh´Kcubeh}”(h]”h ]”(j’Œstruct”eh"]”h$]”h&]”j—j’j˜jj™jjš‰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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjubhŒ:”…”�”}”(hjh²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´KmhjubjÃ)�”}”(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; };”…”�”}”hj8sbah}”(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´Kohjubhï)�”}”(hŒ **Members**”h]”j¨)�”}”(hjIh]”hŒMembers”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kthjubjì)�”}”(hhh]”(jñ)�”}”(hŒA``aes_enckey`` Common fields and the key prepared for encryption ”h]”(j÷)�”}”(hŒ``aes_enckey``”h]”jý)�”}”(hjhh]”hŒ aes_enckey”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Kkhjbubj)�”}”(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´Kkhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j}h´Kkhj_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ý)�”}”(hj¡h]”hŒinv_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´Kohj›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”…”�”}”(hjÂh²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”…”�”}”(hjÔh²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´Klhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j¶h´Kohj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubeh}”(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]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jhjh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K’ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjh²hh³j0h´K’ubjD)�”}”(hŒ aes_expandkey”h]”jJ)�”}”(hŒ aes_expandkey”h]”hŒ aes_expandkey”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj?ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjh²hh³j0h´K’ubhŒdesc_parameterlist”“”)�”}”(hŒD(struct crypto_aes_ctx *ctx, const u8 *in_key, unsigned int key_len)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct crypto_aes_ctx *ctx”h]”(j!)�”}”(hj$h]”hŒstruct”…”�”}”(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Œ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”Œ identifier”Œ reftarget”jƒŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jœŒ ASTIdentifier”“”)�”}”j—jEsbŒc.aes_expandkey”†”asbuh1hhj_ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj_ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j·hj_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]hjYubj^)�”}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jŒmodname”NŒ classname”Nj›jž)�”}”j¡]”j¥Œc.aes_expandkey”†”asbuh1hhjÝubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÝubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjÝubjJ)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjYubj^)�”}”(hŒunsigned int key_len”h]”(j )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjNubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjNubj )�”}”(hŒint”h]”hŒint”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjNubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjNubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjYubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jWhjh²hh³j0h´K’ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjh²hh³j0h´K’ubah}”(h]”jah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j0h´K’hjh²hubjv)�”}”(hhh]”hï)�”}”(hŒ,Expands the AES key as described in FIPS-197”h]”hŒ,Expands the AES key as described in FIPS-197”…”�”}”(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±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjh²hh³j0h´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.”…”�”}”(hjh²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”…”�”}”(hj0h²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.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jCh´K”hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jCh´K”hjìubjñ)�”}”(hŒ9``unsigned int key_len`` The length of the supplied key. ”h]”(j÷)�”}”(hŒ``unsigned int key_len``”h]”jý)�”}”(hjgh]”hŒunsigned int key_len”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´K•hjaubj)�”}”(hhh]”hï)�”}”(hŒThe length of the supplied key.”h]”hŒThe length of 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&]”uh1jhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j|h´K•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´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.”…”�”}”(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Ð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&]”uh1jhjãh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M9ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjãh²hh³jõh´M9ubjD)�”}”(hŒaes_preparekey”h]”jJ)�”}”(hŒaes_preparekey”h]”hŒaes_preparekey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjãh²hh³jõh´M9ubjX)�”}”(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 hj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubh)�”}”(hhh]”jJ)�”}”(hŒaes_key”h]”hŒaes_key”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jDŒmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—j sbŒc.aes_preparekey”†”asbuh1hhj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj 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]hjubj^)�”}”(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”j—Œ reftarget”j¶Œmodname”NŒ classname”Nj›jž)�”}”j¡]”j^Œc.aes_preparekey”†”asbuh1hhj’ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj’ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj’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Œ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”j—Œ reftarget”j Œmodname”NŒ classname”Nj›jž)�”}”j¡]”j^Œc.aes_preparekey”†”asbuh1hhj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hj5 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Æuh1jWhjãh²hh³jõh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjßh²hh³jõh´M9ubah}”(h]”jÚah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jõh´M9hjÜ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´M9hj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjÜh²hh³jõh´M9ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jw j™jw 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´M:hjš 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´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 *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´M;hjÓ 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´M;hjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jî h´M;hj— 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ý)�”}”(hj h]”hŒsize_t 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´M=hj 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.”…”�”}”(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=hj— ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj{ ubhï)�”}”(hŒ**Description**”h]”j¨)�”}”(hjN h]”hŒ Description”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjL 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.”…”�”}”(hjd 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.”…”�”}”(hjs 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´MChj{ 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´MFhj{ 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´MHhj{ 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´MIhj{ 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´MMhj{ 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´MMhj{ 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”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjû h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MRubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjû h²hh³j h´MRubjD)�”}”(hŒaes_prepareenckey”h]”jJ)�”}”(hŒaes_prepareenckey”h]”hŒaes_prepareenckey”…”�”}”(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´MRubjX)�”}”(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”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj8 ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj8 ubh)�”}”(hhh]”jJ)�”}”(hŒ aes_enckey”h]”hŒ aes_enckey”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjW ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”j\ Œmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—j" sbŒc.aes_prepareenckey”†”asbuh1hhj8 ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj8 ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj8 ubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj8 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hj4 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”j—Œ reftarget”jÎ Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jv Œc.aes_prepareenckey”†”asbuh1hhjª ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjª ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjª 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]hj4 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”j—Œ reftarget”j# Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jv Œc.aes_prepareenckey”†”asbuh1hhj ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubjJ)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hj4 ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jWhjû h²hh³j h´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj÷ h²hh³j h´MRubah}”(h]”jò ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j h´MRhjô h²hubjv)�”}”(hhh]”hï)�”}”(hŒ&Prepare an AES key for encryption-only”h]”hŒ&Prepare an AES key for encryption-only”…”�”}”(hjw 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´MRhjt h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjô h²hh³j h´MRubeh}”(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´MVhj“ 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´MShj² 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´MShjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj² ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jÍ h´MShj¯ 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´MThjë 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´MThj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j h´MThj¯ 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ý)�”}”(hj* h]”hŒsize_t 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´MVhj$ 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.”…”�”}”(hjC 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´MUhj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j? h´MVhj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj“ ubhï)�”}”(hŒ**Description**”h]”j¨)�”}”(hjf h]”hŒ Description”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MXhj“ 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´MWhj“ 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´M[hj“ 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´Mbhj“ 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´Mchj“ 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´Mghj“ 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´Mghj“ 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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´Mqubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjh²hh³j%h´MqubjD)�”}”(hŒ aes_encrypt”h]”jJ)�”}”(hŒ aes_encrypt”h]”hŒ aes_encrypt”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj4ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChjh²hh³j%h´MqubjX)�”}”(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”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jYŒmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—j:sbŒ c.aes_encrypt”†”asbuh1hhjPubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjPubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjLubj^)�”}”(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”j—Œ reftarget”j£Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jsŒ 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”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjšubj¸)�”}”(hŒ[”h]”hŒ[”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjš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]”h ]”j?ah"]”h$]”h&]”uh1j2hjšubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”j Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jsŒ c.aes_encrypt”†”asbuh1hhjšubj¸)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjLubj^)�”}”(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Œ ”…”�”}”(hjLh²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&]”uh1jIhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”j_Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jsŒ c.aes_encrypt”†”asbuh1hhj;ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²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;ubj¸)�”}”(hjÝh]”hŒ[”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj;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”j—Œ reftarget”jÄŒmodname”NŒ classname”Nj›jž)�”}”j¡]”jsŒ c.aes_encrypt”†”asbuh1hhj;ubj¸)�”}”(hj(h]”hŒ]”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjLubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jWhjh²hh³j%h´Mqubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjh²hh³j%h´Mqubah}”(h]”j ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j%h´Mqhj h²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´Mqhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj h²hh³j%h´Mqubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜j!j™j!jš‰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¨)�”}”(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Œ–``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ý)�”}”(hjJh]”hŒaes_encrypt_arg key”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´MshjDubj)�”}”(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).”…”�”}”(hjch²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´Mrhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j_h´MshjAubjñ)�”}”(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´Mthj~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´Mthjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j™h´MthjAubjñ)�”}”(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´Muhj·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´MuhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jÒh´MuhjAubeh}”(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´Mwhj%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´Mwhj%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”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9h²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:11: ./include/crypto/aes.h”h´M}ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj9h²hh³jKh´M}ubjD)�”}”(hŒ aes_decrypt”h]”jJ)�”}”(hŒ aes_decrypt”h]”hŒ aes_decrypt”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjZubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”hÅhÆuh1jChj9h²hh³jKh´M}ubjX)�”}”(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”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjvubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjvubj!)�”}”(hj$h]”hŒstruct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjvubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjvubh)�”}”(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”j—Œ reftarget”jµŒmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—j`sbŒ c.aes_decrypt”†”asbuh1hhjvubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjvubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjvubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjrubj^)�”}”(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&]”uh1jIhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”j Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jÏŒ c.aes_decrypt”†”asbuh1hhjubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjubjJ)�”}”(hŒout”h]”hŒout”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubj¸)�”}”(hjÝh]”hŒ[”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjubj!)�”}”(hjëh]”hŒstatic”…”�”}”(hjQh²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&]”uh1j2hjubh)�”}”(hhh]”jJ)�”}”(hŒAES_BLOCK_SIZE”h]”hŒAES_BLOCK_SIZE”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jqŒmodname”NŒ classname”Nj›jž)�”}”j¡]”jÏŒ c.aes_decrypt”†”asbuh1hhjubj¸)�”}”(hj(h]”hŒ]”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjrubj^)�”}”(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”j—Œ reftarget”jÅŒmodname”NŒ classname”Nj›jž)�”}”j¡]”jÏŒ c.aes_decrypt”†”asbuh1hhj¡ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²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¡ubj¸)�”}”(hjÝh]”hŒ[”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj¡ubj!)�”}”(hjëh]”hŒstatic”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¡ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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”j—Œ reftarget”j*Œmodname”NŒ classname”Nj›jž)�”}”j¡]”jÏŒ c.aes_decrypt”†”asbuh1hhj¡ubj¸)�”}”(hj(h]”hŒ]”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjrubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jWhj9h²hh³jKh´M}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihj5h²hh³jKh´M}ubah}”(h]”j0ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³jKh´M}hj2h²hubjv)�”}”(hhh]”hï)�”}”(hŒDecrypt a single AES block”h]”hŒDecrypt a single AES block”…”�”}”(hjoh²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}hjlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj2h²hh³jKh´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.”•RSh]”(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()”…”�”}”(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Œ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ü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´Mhjãubj)�”}”(hhh]”hï)�”}”(hŒ#Buffer to store the plaintext block”h]”hŒ#Buffer to store the plaintext block”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jþh´Mhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jþh´Mhj§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ý)�”}”(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€hjubj)�”}”(hhh]”hï)�”}”(hŒ&Buffer containing the ciphertext block”h]”hŒ&Buffer containing the ciphertext block”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j7h´M€hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j7h´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.”…”�”}”(hjsh²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”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÅ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Œdes_expand_key”h]”jJ)�”}”(hŒdes_expand_key”h]”hŒdes_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"ubjX)�”}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjubh)�”}”(hhh]”jJ)�”}”(hŒdes_ctx”h]”hŒdes_ctx”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”j&Œmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—jìsbŒc.des_expand_key”†”asbuh1hhjubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j]hjþubj^)�”}”(hŒ const u8 *key”h]”(j!)�”}”(hjãh]”hŒconst”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjtubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjtubh)�”}”(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”j—Œ reftarget”j˜Œmodname”NŒ classname”Nj›jž)�”}”j¡]”j@Œc.des_expand_key”†”asbuh1hhjtubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjtubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjtubjJ)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjtubeh}”(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&]”uh1jhjäubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjäubj )�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjäubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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Æuh1jWhjÅ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Œ*Expand a DES input key into a key schedule”h]”hŒ*Expand a DES input key into a key schedule”…”�”}”(hjJh²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"hjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj¾h²hh³j×h´K"ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jbj™jbjš‰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¨)�”}”(hjlh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K&hjfubjì)�”}”(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”…”�”}”(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Œ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´K%hj÷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³jh´K%hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´K%hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjfubhï)�”}”(hŒ **Return**”h]”j¨)�”}”(hj8h]”hŒReturn”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K'hjfubhï)�”}”(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.”…”�”}”(hjNh²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'hjfubeh}”(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&]”uh1jhjyh²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&]”uh1j2hjyh²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Æuh1jChjyh²hh³j‹h´K-ubjX)�”}”(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”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jÚŒmodname”NŒ classname”Nj›jž)�”}”j¡]”j¤)�”}”j—j sbŒc.des3_ede_expand_key”†”asbuh1hhj¶ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj¶ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj¶ubjJ)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjh²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”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj(ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj(ubh)�”}”(hhh]”jJ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jIhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j’Œreftype”j—Œ reftarget”jLŒmodname”NŒ classname”Nj›jž)�”}”j¡]”jôŒc.des3_ede_expand_key”†”asbuh1hhj(ubj3)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj(ubj¸)�”}”(hj»h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj(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&]”uh1jhj˜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&]”uh1jhj˜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Æuh1jWhjyh²hh³j‹h´K-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jjhjihjuh²hh³j‹h´K-ubah}”(h]”jpah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jh³j‹h´K-hjrh²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”…”�”}”(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&]”uh1juhjrh²hh³j‹h´K-ubeh}”(h]”h ]”(j’Œfunction”eh"]”h$]”h&]”j—j’j˜jj™jjš‰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¨)�”}”(hj h]”hŒ Parameters”…”�”}”(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:19: ./include/crypto/des.h”h´K1hjubjì)�”}”(hhh]”(jñ)�”}”(hŒ.``struct des3_ede_ctx *ctx`` the key schedule ”h]”(j÷)�”}”(hŒ``struct des3_ede_ctx *ctx``”h]”jý)�”}”(hj?h]”hŒstruct des3_ede_ctx *ctx”…”�”}”(hjAh²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.hj9ubj)�”}”(hhh]”hï)�”}”(hŒthe key schedule”h]”hŒthe key schedule”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jTh´K.hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jTh´K.hj6ubjñ)�”}”(hŒ2``const u8 *key`` buffer containing the input key ”h]”(j÷)�”}”(hŒ``const u8 *key``”h]”jý)�”}”(hjxh]”hŒ const u8 *key”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K/hjrubj)�”}”(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&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j�h´K/hj6ubjñ)�”}”(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”…”�”}”(hjÊh²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´K0hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jë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³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-blockcipher:19: ./include/crypto/des.h”h´K2hjubhï)�”}”(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.”…”�”}”(hjh²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´K2hjubeh}”(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”jKŒ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%j"jŽj‹jjuŒ nametypes”}”(j%‰jމj‰uh}”(j"hÊj‹hÝj jj¬j±jjjÚjßjò j÷ j jj0j5jj‘j¼jÁjpjuuŒ 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.