€•Œ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”Œ4/translations/zh_CN/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/zh_TW/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/it_IT/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/ja_JP/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/ko_KR/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/pt_BR/crypto/libcrypto-auth-encryption”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/sp_SP/crypto/libcrypto-auth-encryption”Œ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³ŒN/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒAuthenticated encryption”h]”hŒAuthenticated encryption”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒGThese APIs provide support for authenticated encryption and decryption.”h]”hŒGThese APIs provide support for authenticated encryption and decryption.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAES-CCM”h]”hŒAES-CCM”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhíh²hh³hÇh´K ubhÞ)�”}”(hŒ?This API provides support for AES in the CCM mode of operation.”h]”hŒ?This API provides support for AES in the CCM mode of operation.”…”�”}”(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_ccm_key (C struct)”Œ c.aes_ccm_key”hNt”auh1j hhíh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ aes_ccm_key”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct aes_ccm_key”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j.hj*h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j@hj*h²hh³j?h´KubhŒ desc_name”“”)�”}”(hŒ aes_ccm_key”h]”hŒ desc_sig_name”“”)�”}”(hj&h]”hŒ aes_ccm_key”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jWhjSubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jQhj*h²hh³j?h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j(Œsphinx_line_type”Œ declarator”hj$h²hh³j?h´Kubah}”(h]”jah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j"h³j?h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ4A key prepared for AES-CCM encryption and decryption”h]”hŒ4A key prepared for AES-CCM encryption and decryption”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K hj…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjh²hh³j?h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j Œobjtype”j¡Œdesctype”j¡Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhíh³Nh´NubhŒ container”“”)�”}”(hŒ:**Definition**:: struct aes_ccm_key { }; **Members**”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Khj­ubhŒ literal_block”“”)�”}”(hŒstruct aes_ccm_key { };”h]”hŒstruct aes_ccm_key { };”…”�”}”hjÒsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Khj­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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Khj­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_ccm_ctx (C struct)”Œ c.aes_ccm_ctx”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ aes_ccm_ctx”h]”j))�”}”(hŒstruct aes_ccm_ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjh²hh³j&h´KubjR)�”}”(hŒ aes_ccm_ctx”h]”jX)�”}”(hjh]”hŒ aes_ccm_ctx”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj5ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjh²hh³j&h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjh²hh³j&h´Kubah}”(h]”j ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j&h´Khjh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ1Context for incrementally en/decrypting a message”h]”hŒ1Context for incrementally en/decrypting a message”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KhjXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjh²hh³j&h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j¥j j¦jsj§jsj¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hŒ:**Definition**:: struct aes_ccm_ctx { }; **Members**”h]”(hÞ)�”}”(hŒ**Definition**::”h]”(j¶)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj{ubhŒ:”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KhjwubjÑ)�”}”(hŒstruct aes_ccm_ctx { };”h]”hŒstruct aes_ccm_ctx { };”…”�”}”hj˜sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KhjwubhÞ)�”}”(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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Khjwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_ccm_preparekey (C function)”Œc.aes_ccm_preparekey”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒfint aes_ccm_preparekey (struct aes_ccm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”j))�”}”(hŒeint aes_ccm_preparekey(struct aes_ccm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jßhjÛh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÛh²hh³jðh´K6ubjR)�”}”(hŒaes_ccm_preparekey”h]”jX)�”}”(hŒaes_ccm_preparekey”h]”hŒaes_ccm_preparekey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÿubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjÛh²hh³jðh´K6ubhŒdesc_parameterlist”“”)�”}”(hŒO(struct aes_ccm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct aes_ccm_key *key”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_key”h]”hŒ aes_ccm_key”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”Œ identifier”Œ reftarget”jCŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j\Œ ASTIdentifier”“”)�”}”jWjsbŒc.aes_ccm_preparekey”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jwhjubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubj)�”}”(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�ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÂŒmodname”NŒ classname”Nj[j^)�”}”ja]”jeŒc.aes_ccm_preparekey”†”asbuh1hhj�ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�ubjX)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubj)�”}”(hŒsize_t key_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jŒmodname”NŒ classname”Nj[j^)�”}”ja]”jeŒc.aes_ccm_preparekey”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubjX)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubj)�”}”(hŒsize_t authtag_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j_Œmodname”NŒ classname”Nj[j^)�”}”ja]”jeŒc.aes_ccm_preparekey”†”asbuh1hhjVubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjVubjX)�”}”(hŒ authtag_len”h]”hŒ authtag_len”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÛh²hh³jðh´K6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj×h²hh³jðh´K6ubah}”(h]”jÒah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jðh´K6hjÔh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ3Prepare a key for AES-CCM encryption and decryption”h]”hŒ3Prepare a key for AES-CCM encryption and decryption”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K6hj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÔh²hh³jðh´K6ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jËj§jËj¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hXI**Parameters** ``struct aes_ccm_key *key`` (output) The key structure to initialize ``const u8 *in_key`` The raw AES-CCM key ``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ``size_t authtag_len`` Length of the authentication tag in bytes: 4, 6, 8, 10, 12, 14, or 16. 16 is recommended. **Description** Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.) **Context** Any context. **Return** * 0 on success * -EINVAL if either of the lengths is invalid”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K:hjÏubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒE``struct aes_ccm_key *key`` (output) The key structure to initialize ”h]”(hŒterm”“”)�”}”(hŒ``struct aes_ccm_key *key``”h]”hŒliteral”“”)�”}”(hjúh]”hŒstruct aes_ccm_key *key”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K7hjòubhŒ definition”“”)�”}”(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´K7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´K7hjíubjñ)�”}”(hŒ)``const u8 *in_key`` The raw AES-CCM key ”h]”(j÷)�”}”(hŒ``const u8 *in_key``”h]”jý)�”}”(hj7h]”hŒconst u8 *in_key”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K8hj1ubj)�”}”(hhh]”hÞ)�”}”(hŒThe raw AES-CCM key”h]”hŒThe raw AES-CCM key”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jLh´K8hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jLh´K8hjíubjñ)�”}”(hŒA``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ”h]”(j÷)�”}”(hŒ``size_t key_len``”h]”jý)�”}”(hjph]”hŒsize_t key_len”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K9hjjubj)�”}”(hhh]”hÞ)�”}”(hŒ-Length of the raw key in bytes: 16, 24, or 32”h]”hŒ-Length of the raw key in bytes: 16, 24, or 32”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j…h´K9hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j…h´K9hjíubjñ)�”}”(hŒr``size_t authtag_len`` Length of the authentication tag in bytes: 4, 6, 8, 10, 12, 14, or 16. 16 is recommended. ”h]”(j÷)�”}”(hŒ``size_t authtag_len``”h]”jý)�”}”(hj©h]”hŒsize_t authtag_len”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K;hj£ubj)�”}”(hhh]”hÞ)�”}”(hŒZLength of the authentication tag in bytes: 4, 6, 8, 10, 12, 14, or 16. 16 is recommended.”h]”hŒZLength of the authentication tag in bytes: 4, 6, 8, 10, 12, 14, or 16. 16 is recommended.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K:hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j¾h´K;hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jë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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K=hjÏubhÞ)�”}”(hŒ”Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”h]”hŒ”Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjü ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjSubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjSubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jwŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhjSubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjSubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjSubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒsize_t data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÌŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhjÃubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÃubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j/Œmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj{ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj{ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jŸŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhj{ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj{ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒ size_t ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jôŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhjëubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjëubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒconst u8 *nonce”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj3ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj3ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jWŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhj3ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj3ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj3ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒsize_t nonce_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j¬Œmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhj£ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj£ubjX)�”}”(hŒ nonce_len”h]”hŒ nonce_len”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubj)�”}”(hŒconst struct aes_ccm_key *key”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjëubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjëubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjëubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjëubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_key”h]”hŒ aes_ccm_key”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j*Œmodname”NŒ classname”Nj[j^)�”}”ja]”jŒc.aes_ccm_decrypt”†”asbuh1hhjëubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjëubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjëubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¿ h²hh³jÑ h´Keubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj» h²hh³jÑ h´Keubah}”(h]”j¶ ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jÑ h´Kehj¸ h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒDecrypt a message with AES-CCM”h]”hŒDecrypt a message with AES-CCM”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kehjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj¸ h²hh³jÑ h´Keubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j£j§j£j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hX¾**Parameters** ``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source ciphertext data ``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^(120 - (8 * **nonce_len**)) - 1 ``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). Usually protocols using AES-CCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag. ``const u8 *ad`` The associated data ``size_t ad_len`` Length of associated data in bytes ``const u8 *nonce`` The nonce ``size_t nonce_len`` Length of the nonce in bytes: between 7 and 13 inclusive ``const struct aes_ccm_key *key`` The key, already prepared using aes_ccm_preparekey() **Context** Any context. **Return** * 0 on success. This is the only case where any decrypted or associated data can be used. * -EBADMSG if the message is inauthentic * -EINVAL if **nonce_len** is invalid * -EOVERFLOW if **data_len** is too large for the selected **nonce_len**”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kihj§ubjì)�”}”(hhh]”(jñ)�”}”(hŒ~``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j÷)�”}”(hŒ ``u8 *dst``”h]”jý)�”}”(hjÌh]”hŒu8 *dst”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KghjÆubj)�”}”(hhh]”hÞ)�”}”(hŒqThe destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”h]”hŒqThe destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kfhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jáh´KghjÃubjñ)�”}”(hŒ-``const u8 *src`` The source ciphertext data ”h]”(j÷)�”}”(hŒ``const u8 *src``”h]”jý)�”}”(hjh]”hŒ const u8 *src”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Khhjubj)�”}”(hhh]”hÞ)�”}”(hŒThe source ciphertext data”h]”hŒThe source ciphertext data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Khhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´KhhjÃubjñ)�”}”(hŒ``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^(120 - (8 * **nonce_len**)) - 1 ”h]”(j÷)�”}”(hŒ``size_t data_len``”h]”jý)�”}”(hj?h]”hŒsize_t data_len”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kjhj9ubj)�”}”(hhh]”hÞ)�”}”(hŒjLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^(120 - (8 * **nonce_len**)) - 1”h]”(hŒWLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^(120 - (8 * ”…”�”}”(hjXh²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjXubhŒ)) - 1”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KihjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jTh´KjhjÃubjñ)�”}”(hX'``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). Usually protocols using AES-CCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag. ”h]”(j÷)�”}”(hŒ``const u8 *authtag``”h]”jý)�”}”(hj‹h]”hŒconst u8 *authtag”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Knhj…ubj)�”}”(hhh]”hÞ)�”}”(hXThe stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). Usually protocols using AES-CCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag.”h]”(hŒÒThe stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). Usually protocols using AES-CCM put the tag at the end of the ciphertext, in which case this should be set to ”…”�”}”(hj¤h²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¤ubhŒ + ”…”�”}”(hj¤h²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¤ubhŒ and ”…”�”}”(hj¤h²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¤ubhŒ must have room for the tag.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kkhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j h´KnhjÃubjñ)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j÷)�”}”(hŒ``const u8 *ad``”h]”jý)�”}”(hjûh]”hŒ const u8 *ad”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kohjõubj)�”}”(hhh]”hÞ)�”}”(hŒThe associated data”h]”hŒThe associated data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Kohjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jh´KohjÃubjñ)�”}”(hŒ5``size_t ad_len`` Length of associated data in bytes ”h]”(j÷)�”}”(hŒ``size_t ad_len``”h]”jý)�”}”(hj4h]”hŒ size_t ad_len”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kphj.ubj)�”}”(hhh]”hÞ)�”}”(hŒ"Length of associated data in bytes”h]”hŒ"Length of associated data in bytes”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jIh´KphjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jIh´KphjÃubjñ)�”}”(hŒ``const u8 *nonce`` The nonce ”h]”(j÷)�”}”(hŒ``const u8 *nonce``”h]”jý)�”}”(hjmh]”hŒconst u8 *nonce”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kqhjgubj)�”}”(hhh]”hÞ)�”}”(hŒ The nonce”h]”hŒ The nonce”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j‚h´Kqhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j‚h´KqhjÃubjñ)�”}”(hŒN``size_t nonce_len`` Length of the nonce in bytes: between 7 and 13 inclusive ”h]”(j÷)�”}”(hŒ``size_t nonce_len``”h]”jý)�”}”(hj¦h]”hŒsize_t nonce_len”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Krhj ubj)�”}”(hhh]”hÞ)�”}”(hŒ8Length of the nonce in bytes: between 7 and 13 inclusive”h]”hŒ8Length of the nonce in bytes: between 7 and 13 inclusive”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j»h´Krhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j»h´KrhjÃubjñ)�”}”(hŒW``const struct aes_ccm_key *key`` The key, already prepared using aes_ccm_preparekey() ”h]”(j÷)�”}”(hŒ!``const struct aes_ccm_key *key``”h]”jý)�”}”(hjßh]”hŒconst struct aes_ccm_key *key”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KshjÙubj)�”}”(hhh]”hÞ)�”}”(hŒ4The key, already prepared using aes_ccm_preparekey()”h]”hŒ4The key, already prepared using aes_ccm_preparekey()”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jôh´Kshjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jôh´KshjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj§ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjh]”hŒContext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kuhj§ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kuhj§ubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hjAh]”hŒReturn”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kwhj§ubjJ)�”}”(hhh]”(jO)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hÞ)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hŒX0 on success. This is the only case where any decrypted or associated data can be used.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KvhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjWubjO)�”}”(hŒ&-EBADMSG if the message is inauthentic”h]”hÞ)�”}”(hjuh]”hŒ&-EBADMSG if the message is inauthentic”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kxhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjWubjO)�”}”(hŒ#-EINVAL if **nonce_len** is invalid”h]”hÞ)�”}”(hj�h]”(hŒ -EINVAL if ”…”�”}”(hj�h²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj�ubhŒ is invalid”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kyhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjWubjO)�”}”(hŒF-EOVERFLOW if **data_len** is too large for the selected **nonce_len**”h]”hÞ)�”}”(hj·h]”(hŒ-EOVERFLOW if ”…”�”}”(hj¹h²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¹ubhŒ is too large for the selected ”…”�”}”(hj¹h²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kzhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjWubeh}”(h]”h ]”h"]”h$]”h&]”j†j{uh1jIh³jlh´Kvhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_ccm_init (C function)”Œc.aes_ccm_init”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ†int aes_ccm_init (struct aes_ccm_ctx *ctx, u64 data_len, u64 ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”j))�”}”(hŒ…int aes_ccm_init(struct aes_ccm_ctx *ctx, u64 data_len, u64 ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(jà)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KƒubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjh²hh³j!h´KƒubjR)�”}”(hŒ aes_ccm_init”h]”jX)�”}”(hŒ aes_ccm_init”h]”hŒ aes_ccm_init”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj0ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjh²hh³j!h´Kƒubj)�”}”(hŒu(struct aes_ccm_ctx *ctx, u64 data_len, u64 ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(j)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjLubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjLubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jpŒmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWj6sbŒc.aes_ccm_init”†”asbuh1hhjLubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjLubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjLubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubj)�”}”(hŒ u64 data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÇŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŠŒc.aes_ccm_init”†”asbuh1hhj¾ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¾ubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubj)�”}”(hŒ u64 ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŠŒc.aes_ccm_init”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”•h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubj)�”}”(hŒconst u8 *nonce”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjNubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjNubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jrŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŠŒc.aes_ccm_init”†”asbuh1hhjNubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjNubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjNubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubj)�”}”(hŒsize_t nonce_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÇŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŠŒc.aes_ccm_init”†”asbuh1hhj¾ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¾ubjX)�”}”(hŒ nonce_len”h]”hŒ nonce_len”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubj)�”}”(hŒconst struct aes_ccm_key *key”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_key”h]”hŒ aes_ccm_key”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jEŒmodname”NŒ classname”Nj[j^)�”}”ja]”jŠŒc.aes_ccm_init”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjh²hh³j!h´Kƒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj h²hh³j!h´Kƒubah}”(h]”jah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j!h´Kƒhjh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒCInitialize context for incremental AES-CCM encryption or decryption”h]”hŒCInitialize context for incremental AES-CCM encryption or decryption”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kƒhj£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjh²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 aes_ccm_ctx *ctx`` The context to initialize ``u64 data_len`` Length of the en/decrypted data that will be provided in bytes: at most 2^(120 - (8 * **nonce_len**)) - 1 ``u64 ad_len`` Length of the associated data that will be provided in bytes ``const u8 *nonce`` The nonce. All (key, nonce) pairs used for encryption MUST be distinct. ``size_t nonce_len`` Length of the nonce in bytes: between 7 and 13 inclusive ``const struct aes_ccm_key *key`` The key, already prepared using aes_ccm_preparekey(). Note that a pointer to the key is saved in the context, so the key must live at least as long as the context. **Description** Unlike AES-GCM, AES-CCM requires the total lengths of the associated data and the en/decrypted data to be known during initialization. Callers MUST ensure that these lengths are correct. If this function returns success, the context should be zeroized at the end of its lifetime. Normally that happens in aes_ccm_encrypt_final() or aes_ccm_decrypt_final(), but callers that abandon a context without finalizing it should explicitly zeroize it. IMPORTANT: Callers that are decrypting MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. This incremental API is provided solely to support callers that can't efficiently use the one-shot functions due to using a nonlinear data layout. For incremental AES-CCM encryption, use: 1. aes_ccm_init() 2. aes_ccm_auth_update() (any number of times) 3. aes_ccm_encrypt_update() (any number of times) 4. aes_ccm_encrypt_final() For incremental AES-CCM decryption, use: 1. aes_ccm_init() 2. aes_ccm_auth_update() (any number of times) 3. aes_ccm_decrypt_update() (any number of times) 4. aes_ccm_decrypt_final() **Context** Any context. **Return** * 0 on success * -EINVAL if **nonce_len** is invalid * -EOVERFLOW if **data_len** is too large for the selected **nonce_len**”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K‡hjÂubjì)�”}”(hhh]”(jñ)�”}”(hŒ6``struct aes_ccm_ctx *ctx`` The context to initialize ”h]”(j÷)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”jý)�”}”(hjçh]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K…hjáubj)�”}”(hhh]”hÞ)�”}”(hŒThe context to initialize”h]”hŒThe context to initialize”…”�”}”(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Œ{``u64 data_len`` Length of the en/decrypted data that will be provided in bytes: at most 2^(120 - (8 * **nonce_len**)) - 1 ”h]”(j÷)�”}”(hŒ``u64 data_len``”h]”jý)�”}”(hj h]”hŒ u64 data_len”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K‡hjubj)�”}”(hhh]”hÞ)�”}”(hŒiLength of the en/decrypted data that will be provided in bytes: at most 2^(120 - (8 * **nonce_len**)) - 1”h]”(hŒVLength of the en/decrypted data that will be provided in bytes: at most 2^(120 - (8 * ”…”�”}”(hj9h²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj9ubhŒ)) - 1”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K†hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j5h´K‡hjÞubjñ)�”}”(hŒL``u64 ad_len`` Length of the associated data that will be provided in bytes ”h]”(j÷)�”}”(hŒ``u64 ad_len``”h]”jý)�”}”(hjlh]”hŒ u64 ad_len”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kˆhjfubj)�”}”(hhh]”hÞ)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjˆubj)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjSubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjSubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jwŒmodname”NŒ classname”Nj[j^)�”}”ja]”jÊŒc.aes_ccm_encrypt_update”†”asbuh1hhjSubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjSubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjSubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjˆubj)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÌŒmodname”NŒ classname”Nj[j^)�”}”ja]”jÊŒc.aes_ccm_encrypt_update”†”asbuh1hhjÃubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÃubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjOh²hh³jah´KÇubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjKh²hh³jah´KÇubah}”(h]”jFah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jah´KÇhjHh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ'Incrementally encrypt data with AES-CCM”h]”hŒ'Incrementally encrypt data with AES-CCM”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÇhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjHh²hh³jah´KÇubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j8 j§j8 j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hX**Parameters** ``struct aes_ccm_ctx *ctx`` An AES-CCM context ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source plaintext data ``size_t len`` Number of bytes to encrypt **Description** This can be called only after all associated data has been processed. The total length of the encrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init(). **Context** Any context.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjB h]”hŒ Parameters”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KËhj< ubjì)�”}”(hhh]”(jñ)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j÷)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”jý)�”}”(hja h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÈhj[ ubj)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jv h´KÈhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jv h´KÈhjX ubjñ)�”}”(hŒw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j÷)�”}”(hŒ ``u8 *dst``”h]”jý)�”}”(hjš h]”hŒu8 *dst”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÊhj” ubj)�”}”(hhh]”hÞ)�”}”(hŒjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”h]”hŒjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÉhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj” ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j¯ h´KÊhjX ubjñ)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j÷)�”}”(hŒ``const u8 *src``”h]”jý)�”}”(hjÔ h]”hŒ const u8 *src”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KËhjÎ ubj)�”}”(hhh]”hÞ)�”}”(hŒThe source plaintext data”h]”hŒThe source plaintext data”…”�”}”(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ËhjX ubjñ)�”}”(hŒ*``size_t len`` Number of bytes to encrypt ”h]”(j÷)�”}”(hŒ``size_t len``”h]”jý)�”}”(hj !h]”hŒ size_t len”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÌhj!ubj)�”}”(hhh]”hÞ)�”}”(hŒNumber of bytes to encrypt”h]”hŒNumber of bytes to encrypt”…”�”}”(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ÌhjX ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj< ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjH!h]”hŒ Description”…”�”}”(hjJ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjF!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÎhj< ubhÞ)�”}”(hŒEThis can be called only after all associated data has been processed.”h]”hŒEThis can be called only after all associated data has been processed.”…”�”}”(hj^!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÍhj< ubhÞ)�”}”(hŒƒThe total length of the encrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init().”h]”hŒƒThe total length of the encrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init().”…”�”}”(hjm!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÏ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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÒhj< ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj”!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÓhj< ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#aes_ccm_decrypt_update (C function)”Œc.aes_ccm_decrypt_update”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒYvoid aes_ccm_decrypt_update (struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”j))�”}”(hŒXvoid aes_ccm_decrypt_update(struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhj¿!h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÙubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ!h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¿!h²hh³jÑ!h´KÙubjR)�”}”(hŒaes_ccm_decrypt_update”h]”jX)�”}”(hŒaes_ccm_decrypt_update”h]”hŒaes_ccm_decrypt_update”…”�”}”(hjä!h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjà!ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj¿!h²hh³jÑ!h´KÙubj)�”}”(hŒ=(struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(j)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjü!ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjü!ubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j "Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWjæ!sbŒc.aes_ccm_decrypt_update”†”asbuh1hhjü!ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjü!ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjL"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjü!ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjY"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjü!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø!ubj)�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hju"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjr"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jw"Œmodname”NŒ classname”Nj[j^)�”}”ja]”j:"Œc.aes_ccm_decrypt_update”†”asbuh1hhjn"ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjn"ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj¡"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjn"ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj®"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjn"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø!ubj)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjÇ"h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjÃ"ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÃ"ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjå"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjâ"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jç"Œmodname”NŒ classname”Nj[j^)�”}”ja]”j:"Œc.aes_ccm_decrypt_update”†”asbuh1hhjÃ"ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÃ"ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÃ"ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÃ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø!ubj)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj:#h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj7#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j<#Œmodname”NŒ classname”Nj[j^)�”}”ja]”j:"Œc.aes_ccm_decrypt_update”†”asbuh1hhj3#ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX#h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj3#ubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjf#h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj3#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjø!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¿!h²hh³jÑ!h´KÙubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj»!h²hh³jÑ!h´KÙubah}”(h]”j¶!ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jÑ!h´KÙhj¸!h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ'Incrementally decrypt data with AES-CCM”h]”hŒ'Incrementally decrypt data with AES-CCM”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÙhj�#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj¸!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 aes_ccm_ctx *ctx`` An AES-CCM context ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source ciphertext data (not including auth tag) ``size_t len`` Number of bytes to decrypt **Description** This can be called only after all associated data has been processed. The total length of the decrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init(). IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. **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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÝhj¬#ubjì)�”}”(hhh]”(jñ)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j÷)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”jý)�”}”(hjÑ#h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÏ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÚhjË#ubj)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(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Œw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j÷)�”}”(hŒ ``u8 *dst``”h]”jý)�”}”(hj $h]”hŒu8 *dst”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÜhj$ubj)�”}”(hhh]”hÞ)�”}”(hŒjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”h]”hŒjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”…”�”}”(hj#$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÛhj $ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j$h´KÜhjÈ#ubjñ)�”}”(hŒF``const u8 *src`` The source ciphertext data (not including auth tag) ”h]”(j÷)�”}”(hŒ``const u8 *src``”h]”jý)�”}”(hjD$h]”hŒ const u8 *src”…”�”}”(hjF$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjB$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÝhj>$ubj)�”}”(hhh]”hÞ)�”}”(hŒ3The source ciphertext data (not including auth tag)”h]”hŒ3The source ciphertext data (not including auth tag)”…”�”}”(hj]$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jY$h´KÝhjZ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jY$h´KÝhjÈ#ubjñ)�”}”(hŒ*``size_t len`` Number of bytes to decrypt ”h]”(j÷)�”}”(hŒ``size_t len``”h]”jý)�”}”(hj}$h]”hŒ size_t len”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj{$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÞhjw$ubj)�”}”(hhh]”hÞ)�”}”(hŒNumber of bytes to decrypt”h]”hŒNumber of bytes to decrypt”…”�”}”(hj–$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j’$h´KÞhj“$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw$ubeh}”(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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kàhj¬#ubhÞ)�”}”(hŒEThis can be called only after all associated data has been processed.”h]”hŒEThis can be called only after all associated data has been processed.”…”�”}”(hjÎ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kßhj¬#ubhÞ)�”}”(hŒƒThe total length of the decrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init().”h]”hŒƒThe total length of the decrypted data (over all calls to this function) MUST match the data_len that was passed to aes_ccm_init().”…”�”}”(hjÝ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Káhj¬#ubhÞ)�”}”(hŒ…IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified.”h]”hŒ…IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified.”…”�”}”(hjì$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kä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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kçhj¬#ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kèhj¬#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"aes_ccm_encrypt_final (C function)”Œc.aes_ccm_encrypt_final”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒAvoid aes_ccm_encrypt_final (struct aes_ccm_ctx *ctx, u8 *authtag)”h]”j))�”}”(hŒ@void aes_ccm_encrypt_final(struct aes_ccm_ctx *ctx, u8 *authtag)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB%h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhj>%h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KîubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj>%h²hh³jP%h´KîubjR)�”}”(hŒaes_ccm_encrypt_final”h]”jX)�”}”(hŒaes_ccm_encrypt_final”h]”hŒaes_ccm_encrypt_final”…”�”}”(hjc%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj_%ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj>%h²hh³jP%h´Kîubj)�”}”(hŒ&(struct aes_ccm_ctx *ctx, u8 *authtag)”h]”(j)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj{%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj{%ubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjš%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jŸ%Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWje%sbŒc.aes_ccm_encrypt_final”†”asbuh1hhj{%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj{%ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjË%h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{%ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjØ%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj{%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjw%ubj)�”}”(hŒ u8 *authtag”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjô%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjñ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jö%Œmodname”NŒ classname”Nj[j^)�”}”ja]”j¹%Œc.aes_ccm_encrypt_final”†”asbuh1hhjí%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjí%ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjí%ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hj-&h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjí%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjw%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj>%h²hh³jP%h´Kîubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj:%h²hh³jP%h´Kîubah}”(h]”j5%ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jP%h´Kîhj7%h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ(Finish encrypting a message with AES-CCM”h]”hŒ(Finish encrypting a message with AES-CCM”…”�”}”(hjW&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KîhjT&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj7%h²hh³jP%h´Kîubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jo&j§jo&j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hX&**Parameters** ``struct aes_ccm_ctx *ctx`` An AES-CCM context ``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). **Description** This also zeroizes **ctx**, so the caller doesn't need to do it. **Context** Any context.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjy&h]”hŒ Parameters”…”�”}”(hj{&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjw&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kòhjs&ubjì)�”}”(hhh]”(jñ)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j÷)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”jý)�”}”(hj˜&h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjš&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj–&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kïhj’&ubj)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(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Œs``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). ”h]”(j÷)�”}”(hŒ``u8 *authtag``”h]”jý)�”}”(hjÑ&h]”hŒ u8 *authtag”…”�”}”(hjÓ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÏ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KñhjË&ubj)�”}”(hhh]”hÞ)�”}”(hŒbThe output authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey().”h]”hŒbThe output authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey().”…”�”}”(hjê&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kðhjç&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jæ&h´Kñhj�&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjs&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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kóhjs&ubhÞ)�”}”(hŒ@This also zeroizes **ctx**, so the caller doesn't need to do it.”h]”(hŒThis also zeroizes ”…”�”}”(hj#'h²hh³Nh´Nubj¶)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hj+'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj#'ubhŒ(, so the caller doesn’t need to do it.”…”�”}”(hj#'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kòhjs&ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjF'h]”hŒContext”…”�”}”(hjH'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjD'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kôhjs&ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj\'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kõhjs&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"aes_ccm_decrypt_final (C function)”Œc.aes_ccm_decrypt_final”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒFint aes_ccm_decrypt_final (struct aes_ccm_ctx *ctx, const u8 *authtag)”h]”j))�”}”(hŒEint aes_ccm_decrypt_final(struct aes_ccm_ctx *ctx, const u8 *authtag)”h]”(jà)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹'h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhj‡'h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KúubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš'h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj‡'h²hh³j™'h´KúubjR)�”}”(hŒaes_ccm_decrypt_final”h]”jX)�”}”(hŒaes_ccm_decrypt_final”h]”hŒaes_ccm_decrypt_final”…”�”}”(hj¬'h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¨'ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj‡'h²hh³j™'h´Kúubj)�”}”(hŒ,(struct aes_ccm_ctx *ctx, const u8 *authtag)”h]”(j)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjÈ'h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjÄ'ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ'h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÄ'ubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjã'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jè'Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWj®'sbŒc.aes_ccm_decrypt_final”†”asbuh1hhjÄ'ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÄ'ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÄ'ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj!(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÄ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÀ'ubj)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj:(h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj6(ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj6(ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjX(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjU(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jZ(Œmodname”NŒ classname”Nj[j^)�”}”ja]”j(Œc.aes_ccm_decrypt_final”†”asbuh1hhj6(ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj6(ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj6(ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hj‘(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj6(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÀ'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj‡'h²hh³j™'h´Kúubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjƒ'h²hh³j™'h´Kúubah}”(h]”j~'ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j™'h´Kúhj€'h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ(Finish decrypting a message with AES-CCM”h]”hŒ(Finish decrypting a message with AES-CCM”…”�”}”(hj»(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kúhj¸(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj€'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 aes_ccm_ctx *ctx`` An AES-CCM context ``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). **Description** This also zeroizes **ctx**, so the caller doesn't need to do it. **Context** Any context. **Return** * 0 on success. This is the only case where any decrypted or associated data can be used. * -EBADMSG if the message is inauthentic”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kþhj×(ubjì)�”}”(hhh]”(jñ)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j÷)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”jý)�”}”(hjü(h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjþ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjú(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kûhjö(ubj)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(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Œy``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). ”h]”(j÷)�”}”(hŒ``const u8 *authtag``”h]”jý)�”}”(hj5)h]”hŒconst u8 *authtag”…”�”}”(hj7)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj3)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kýhj/)ubj)�”}”(hhh]”hÞ)�”}”(hŒbThe stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey().”h]”hŒbThe stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey().”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KühjK)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jJ)h´Kýhjó(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj×(ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjq)h]”hŒ Description”…”�”}”(hjs)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjo)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kÿhj×(ubhÞ)�”}”(hŒ@This also zeroizes **ctx**, so the caller doesn't need to do it.”h]”(hŒThis also zeroizes ”…”�”}”(hj‡)h²hh³Nh´Nubj¶)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj‡)ubhŒ(, so the caller doesn’t need to do it.”…”�”}”(hj‡)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kþ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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhj×(ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjÀ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhj×(ubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hjÑ)h]”hŒReturn”…”�”}”(hjÓ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÏ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhj×(ubjJ)�”}”(hhh]”(jO)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hÞ)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hŒX0 on success. This is the only case where any decrypted or associated data can be used.”…”�”}”(hjî)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhjê)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjç)ubjO)�”}”(hŒ&-EBADMSG if the message is inauthentic”h]”hÞ)�”}”(hj*h]”hŒ&-EBADMSG if the message is inauthentic”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjç)ubeh}”(h]”h ]”h"]”h$]”h&]”j†j{uh1jIh³jü)h´Mhj×(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubeh}”(h]”Œaes-ccm”ah ]”h"]”Œaes-ccm”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAES-GCM”h]”hŒAES-GCM”…”�”}”(hj3*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj0*h²hh³hÇh´KubhÞ)�”}”(hŒ?This API provides support for AES in the GCM mode of operation.”h]”hŒ?This API provides support for AES in the GCM mode of operation.”…”�”}”(hjA*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1•hÝh³hÇh´Khj0*h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_key (C struct)”Œ c.aes_gcm_key”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ aes_gcm_key”h]”j))�”}”(hŒstruct aes_gcm_key”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjd*h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv*h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjd*h²hh³ju*h´KubjR)�”}”(hŒ aes_gcm_key”h]”jX)�”}”(hjb*h]”hŒ aes_gcm_key”…”�”}”(hjˆ*h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj„*ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjd*h²hh³ju*h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj`*h²hh³ju*h´Kubah}”(h]”j[*ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³ju*h´Khj]*h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ4A key prepared for AES-GCM encryption and decryption”h]”hŒ4A key prepared for AES-GCM encryption and decryption”…”�”}”(hjª*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Khj§*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj]*h²hh³ju*h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j¥j j¦jÂ*j§jÂ*j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hŒ:**Definition**:: struct aes_gcm_key { }; **Members**”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjÆ*ubjÑ)�”}”(hŒstruct aes_gcm_key { };”h]”hŒstruct aes_gcm_key { };”…”�”}”hjç*sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjÆ*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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjÆ*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_ctx (C struct)”Œ c.aes_gcm_ctx”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ aes_gcm_ctx”h]”j))�”}”(hŒstruct aes_gcm_ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj.+h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj*+h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<+h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj*+h²hh³j;+h´KubjR)�”}”(hŒ aes_gcm_ctx”h]”jX)�”}”(hj(+h]”hŒ aes_gcm_ctx”…”�”}”(hjN+h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjJ+ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj*+h²hh³j;+h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj&+h²hh³j;+h´Kubah}”(h]”j!+ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j;+h´Khj#+h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ1Context for incrementally en/decrypting a message”h]”hŒ1Context for incrementally en/decrypting a message”…”�”}”(hjp+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Khjm+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj#+h²hh³j;+h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j¥j j¦jˆ+j§jˆ+j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hŒ:**Definition**:: struct aes_gcm_ctx { }; **Members**”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjŒ+ubjÑ)�”}”(hŒstruct aes_gcm_ctx { };”h]”hŒstruct aes_gcm_ctx { };”…”�”}”hj­+sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjŒ+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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K"hjŒ+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_preparekey (C function)”Œc.aes_gcm_preparekey”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒfint aes_gcm_preparekey (struct aes_gcm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”j))�”}”(hŒeint aes_gcm_preparekey(struct aes_gcm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(jà)�”}”(hŒint”h]”hŒint”…”�”}”(hjô+h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjð+h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K>ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjð+h²hh³j,h´K>ubjR)�”}”(hŒaes_gcm_preparekey”h]”jX)�”}”(hŒaes_gcm_preparekey”h]”hŒaes_gcm_preparekey”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj,ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjð+h²hh³j,h´K>ubj)�”}”(hŒO(struct aes_gcm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(j)�”}”(hŒstruct aes_gcm_key *key”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj1,h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj-,ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>,h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj-,ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hjO,h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjL,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jQ,Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWj,sbŒc.aes_gcm_preparekey”†”asbuh1hhj-,ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo,h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj-,ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj},h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj-,ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj-,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj),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Ÿ,ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°,h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŸ,ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÁ,h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¾,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÃ,Œmodname”NŒ classname”Nj[j^)�”}”ja]”jk,Œc.aes_gcm_preparekey”†”asbuh1hhjŸ,ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß,h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŸ,ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjí,h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŸ,ubjX)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hjú,h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjŸ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj),ubj)�”}”(hŒsize_t key_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j-Œmodname”NŒ classname”Nj[j^)�”}”ja]”jk,Œc.aes_gcm_preparekey”†”asbuh1hhj-ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4-h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj-ubjX)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjB-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj),ubj)�”}”(hŒsize_t authtag_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj^-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj[-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j`-Œmodname”NŒ classname”Nj[j^)�”}”ja]”jk,Œc.aes_gcm_preparekey”†”asbuh1hhjW-ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|-h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjW-ubjX)�”}”(hŒ authtag_len”h]”hŒ authtag_len”…”�”}”(hjŠ-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjW-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj),ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjð+h²hh³j,h´K>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjì+h²hh³j,h´K>ubah}”(h]”jç+ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j,h´K>hjé+h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ3Prepare a key for AES-GCM encryption and decryption”h]”hŒ3Prepare a key for AES-GCM encryption and decryption”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K>hj±-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjé+h²hh³j,h´K>ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jÌ-j§jÌ-j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hXJ**Parameters** ``struct aes_gcm_key *key`` (output) The key structure to initialize ``const u8 *in_key`` The raw AES-GCM key ``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ``size_t authtag_len`` Length of the authentication tag in bytes: 4, 8, 12, 13, 14, 15, or 16. 16 is recommended. **Description** Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.) **Context** Any context. **Return** * 0 on success * -EINVAL if either of the lengths is invalid”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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KBhjÐ-ubjì)�”}”(hhh]”(jñ)�”}”(hŒE``struct aes_gcm_key *key`` (output) The key structure to initialize ”h]”(j÷)�”}”(hŒ``struct aes_gcm_key *key``”h]”jý)�”}”(hjõ-h]”hŒstruct aes_gcm_key *key”…”�”}”(hj÷-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjó-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K?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´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 raw AES-GCM key ”h]”(j÷)�”}”(hŒ``const u8 *in_key``”h]”jý)�”}”(hj..h]”hŒconst u8 *in_key”…”�”}”(hj0.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj,.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K@hj(.ubj)�”}”(hhh]”hÞ)�”}”(hŒThe raw AES-GCM key”h]”hŒThe raw AES-GCM key”…”�”}”(hjG.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jC.h´K@hjD.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jC.h´K@hjì-ubjñ)�”}”(hŒA``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ”h]”(j÷)�”}”(hŒ``size_t key_len``”h]”jý)�”}”(hjg.h]”hŒsize_t key_len”…”�”}”(hji.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühje.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KAhja.ubj)�”}”(hhh]”hÞ)�”}”(hŒ-Length of the raw key in bytes: 16, 24, or 32”h]”hŒ-Length of the raw key in bytes: 16, 24, or 32”…”�”}”(hj€.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j|.h´KAhj}.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j|.h´KAhjì-ubjñ)�”}”(hŒs``size_t authtag_len`` Length of the authentication tag in bytes: 4, 8, 12, 13, 14, 15, or 16. 16 is recommended. ”h]”(j÷)�”}”(hŒ``size_t authtag_len``”h]”jý)�”}”(hj .h]”hŒsize_t authtag_len”…”�”}”(hj¢.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjž.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KChjš.ubj)�”}”(hhh]”hÞ)�”}”(hŒ[Length of the authentication tag in bytes: 4, 8, 12, 13, 14, 15, or 16. 16 is recommended.”h]”hŒ[Length of the authentication tag in bytes: 4, 8, 12, 13, 14, 15, or 16. 16 is recommended.”…”�”}”(hj¹.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KBhj¶.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jµ.h´KChjì-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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KEhjÐ-ubhÞ)�”}”(hŒ”Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”h]”hŒ”Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”…”�”}”(hjò.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KDhjÐ-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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KGhjÐ-ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KHhjÐ-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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KJhjÐ-ubjJ)�”}”(hhh]”(jO)�”}”(hŒ 0 on success”h]”hÞ)�”}”(hjE/h]”hŒ 0 on success”…”�”}”(hjG/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KIhjC/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj@/ubjO)�”}”(hŒ+-EINVAL if either of the lengths is invalid”h]”hÞ)�”}”(hj]/h]”hŒ+-EINVAL if either of the lengths is invalid”…”�”}”(hj_/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KJhj[/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj@/ubeh}”(h]”h ]”h"]”h$]”h&]”j†j{uh1jIh³jT/h´KIhjÐ-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_encrypt (C function)”Œc.aes_gcm_encrypt”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ¢void aes_gcm_encrypt (u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”j))�”}”(hŒ¡void aes_gcm_encrypt(u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™/h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhj•/h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KQubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨/h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj•/h²hh³j§/h´KQubjR)�”}”(hŒaes_gcm_encrypt”h]”jX)�”}”(hŒaes_gcm_encrypt”h]”hŒaes_gcm_encrypt”…”�”}”(hjº/h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¶/ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj•/h²hh³j§/h´KQubj)�”}”(hŒ�(u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(j)�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÙ/h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÖ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÛ/Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWj¼/sbŒc.aes_gcm_encrypt”†”asbuh1hhjÒ/ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù/h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÒ/ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÒ/ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÒ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj)0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj)0ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjH0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jM0Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhj)0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj)0ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjw0h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)0ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj„0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj)0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒsize_t data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj�0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j¢0Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhj™0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj™0ubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hjÌ0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj™0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒ u8 *authtag”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjè0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjå0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jê0Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhjá0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjá0ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjá0ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hj!1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjá0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj:1h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj61ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj61ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjX1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjU1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jZ1Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhj61ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj61ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj„1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj61ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hj‘1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj61ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒ size_t ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj­1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjª1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j¯1Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhj¦1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¦1ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjÙ1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¦1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjò1h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjî1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjî1ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj 2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j2Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhjî1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjî1ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj<2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjî1ubjx)�”}”(hŒ[”h]”hŒ[”…”�”}”(hjJ2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjî1ubj/)�”}”(hŒstatic”h]”hŒstatic”…”�”}”(hjX2h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjî1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjî1ubhŒdesc_sig_literal_number”“”)�”}”(hŒ12”h]”hŒ12”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”Œm”ah"]”h$]”h&]”uh1jt2hjî1ubjx)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj…2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjî1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubj)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjš2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjš2ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj¹2h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjš2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjš2ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hj×2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÔ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÙ2Œmodname”NŒ classname”Nj[j^)�”}”ja]”jõ/Œc.aes_gcm_encrypt”†”asbuh1hhjš2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjš2ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjš2ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjš2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎ/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj•/h²hh³j§/h´KQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj‘/h²hh³j§/h´KQubah}”(h]”jŒ/ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j§/h´KQhjŽ/h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒEncrypt a message with AES-GCM”h]”hŒEncrypt a message with AES-GCM”…”�”}”(hj:3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KQhj73h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjŽ/h²hh³j§/h´KQubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jR3j§jR3j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hX6**Parameters** ``u8 *dst`` The destination ciphertext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source plaintext data ``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **dst** + **data_len** and **dst** must have room for the tag. ``const u8 *ad`` The associated data ``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ``const u8 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used MUST be distinct. ``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() **Description** For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to generate the AES-GMAC value. **Context** Any context.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hj\3h]”hŒ Parameters”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjZ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KUhjV3ubjì)�”}”(hhh]”(jñ)�”}”(hŒ``u8 *dst`` The destination ciphertext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j÷)�”}”(hŒ ``u8 *dst``”h]”jý)�”}”(hj{3h]”hŒu8 *dst”…”�”}”(hj}3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjy3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KShju3ubj)�”}”(hhh]”hÞ)�”}”(hŒrThe destination ciphertext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”h]”hŒrThe destination ciphertext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”…”�”}”(hj”3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KRhj‘3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhju3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j�3h´KShjr3ubjñ)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j÷)�”}”(hŒ``const u8 *src``”h]”jý)�”}”(hjµ3h]”hŒ const u8 *src”…”�”}”(hj·3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj³3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KThj¯3ubj)�”}”(hhh]”hÞ)�”}”(hŒThe source plaintext data”h]”hŒThe source plaintext data”…”�”}”(hjÎ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÊ3h´KThjË3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jÊ3h´KThjr3ubjñ)�”}”(hŒg``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ”h]”(j÷)�”}”(hŒ``size_t data_len``”h]”jý)�”}”(hjî3h]”hŒsize_t data_len”…”�”}”(hjð3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjì3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KVhjè3ubj)�”}”(hhh]”hÞ)�”}”(hŒRLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32”h]”hŒRLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KUhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j4h´KVhjr3ubjñ)�”}”(hX!``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **dst** + **data_len** and **dst** must have room for the tag. ”h]”(j÷)�”}”(hŒ``u8 *authtag``”h]”jý)�”}”(hj(4h]”hŒ u8 *authtag”…”�”}”(hj*4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj&4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KZhj"4ubj)�”}”(hhh]”hÞ)�”}”(hXThe output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **dst** + **data_len** and **dst** must have room for the tag.”h]”(hŒÒThe output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to ”…”�”}”(hjA4h²hh³Nh´Nubj¶)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjI4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjA4ubhŒ + ”…”�”}”(hjA4h²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hj[4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjA4ubhŒ and ”…”�”}”(hjA4h²hh³Nh´Nubj¶)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjm4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjA4ubhŒ must have room for the tag.”…”�”}”(hjA4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KWhj>4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j=4h´KZhjr3ubjñ)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j÷)�”}”(hŒ``const u8 *ad``”h]”jý)�”}”(hj˜4h]”hŒ const u8 *ad”…”�”}”(hjš4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj–4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K[hj’4ubj)�”}”(hhh]”hÞ)�”}”(hŒThe associated data”h]”hŒThe associated data”…”�”}”(hj±4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j­4h´K[hj®4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j­4h´K[hjr3ubjñ)�”}”(hŒG``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ”h]”(j÷)�”}”(hŒ``size_t ad_len``”h]”jý)�”}”(hjÑ4h]”hŒ size_t ad_len”…”�”}”(hjÓ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÏ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K\hjË4ubj)�”}”(hhh]”hÞ)�”}”(hŒ4Length of associated data in bytes: at most 2^61 - 1”h]”hŒ4Length of associated data in bytes: at most 2^61 - 1”…”�”}”(hjê4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jæ4h´K\hjç4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jæ4h´K\hjr3ubjñ)�”}”(hŒ```const u8 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used MUST be distinct. ”h]”(j÷)�”}”(hŒ``const u8 nonce[static 12]``”h]”jý)�”}”(hj 5h]”hŒconst u8 nonce[static 12]”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K]hj5ubj)�”}”(hhh]”hÞ)�”}”(hŒAThe 12-byte nonce. All (key, nonce) pairs used MUST be distinct.”h]”hŒAThe 12-byte nonce. All (key, nonce) pairs used MUST be distinct.”…”�”}”(hj#5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j5h´K]hj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j5h´K]hjr3ubjñ)�”}”(hŒW``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() ”h]”(j÷)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”jý)�”}”(hjC5h]”hŒconst struct aes_gcm_key *key”…”�”}”(hjE5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjA5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K^hj=5ubj)�”}”(hhh]”hÞ)�”}”(hŒ4The key, already prepared using aes_gcm_preparekey()”h]”hŒ4The key, already prepared using aes_gcm_preparekey()”…”�”}”(hj\5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jX5h´K^hjY5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jX5h´K^hjr3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjV3ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hj~5h]”hŒ Description”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj|5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K`hjV3ubhÞ)�”}”(hŒ‚For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to generate the AES-GMAC value.”h]”hŒ‚For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to generate the AES-GMAC value.”…”�”}”(hj”5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K_hjV3ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hj¥5h]”hŒContext”…”�”}”(hj§5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj£5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KbhjV3ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj»5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KchjV3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_decrypt (C function)”Œc.aes_gcm_decrypt”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ§int aes_gcm_decrypt (u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”j))�”}”(hŒ¦int aes_gcm_decrypt(u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(jà)�”}”(hŒint”h]”hŒint”…”�”}”(hjê5h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjæ5h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù5h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjæ5h²hh³jø5h´KjubjR)�”}”(hŒaes_gcm_decrypt”h]”jX)�”}”(hŒaes_gcm_decrypt”h]”hŒaes_gcm_decrypt”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj6ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjæ5h²hh³jø5h´Kjubj)�”}”(hŒ“(u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(j)�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj'6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j,6Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWj 6sbŒc.aes_gcm_decrypt”†”asbuh1hhj#6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj#6ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjX6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj#6ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hje6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj#6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj~6h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjz6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjz6ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjœ6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj™6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jž6Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhjz6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjz6ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjz6ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÕ6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjz6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒsize_t data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjñ6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjî6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jó6Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhjê6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjê6ubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjê6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj67h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj27ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj27ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjT7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjQ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jV7Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhj27ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj27ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj€7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj27ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj27ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj¦7h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj¢7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¢7ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÄ7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÁ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÆ7Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhj¢7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¢7ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjð7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¢7ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjý7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¢7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒ size_t ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j8Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhj8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj78h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj8ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjE8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj^8h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjZ8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk8h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ8ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjy8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j~8Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhjZ8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš8h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ8ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjZ8ubjx)�”}”(hjL2h]”hŒ[”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZ8ubj/)�”}”(hjZ2h]”hŒstatic”…”�”}”(hjÃ8h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjZ8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ8h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ8ubju2)�”}”(hŒ12”h]”hŒ12”…”�”}”(hjÞ8h²hh³Nh´Nubah}”(h]”h ]”j�2ah"]”h$]”h&]”uh1jt2hjZ8ubjx)�”}”(hj‡2h]”hŒ]”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj9ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj9ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj9ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,9h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj9ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hj=9h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj:9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j?9Œmodname”NŒ classname”Nj[j^)�”}”ja]”jF6Œc.aes_gcm_decrypt”†”asbuh1hhj9ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[9h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj9ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hji9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj9ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjv9h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjæ5h²hh³jø5h´Kjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjâ5h²hh³jø5h´Kjubah}”(h]”jÝ5ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jø5h´Kjhjß5h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒDecrypt a message with AES-GCM”h]”hŒDecrypt a message with AES-GCM”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kjhj�9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjß5h²hh³jø5h´Kjubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j¸9j§j¸9j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hX�**Parameters** ``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source ciphertext data ``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag. ``const u8 *ad`` The associated data ``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ``const u8 nonce[static 12]`` The 12-byte nonce ``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() **Description** For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to verify the AES-GMAC value. **Context** Any context. **Return** * 0 on success. This is the only case where any decrypted or associated data can be used. * -EBADMSG if the message is inauthentic”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjÂ9h]”hŒ Parameters”…”�”}”(hjÄ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÀ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Knhj¼9ubjì)�”}”(hhh]”(jñ)�”}”(hŒ~``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j÷)�”}”(hŒ ``u8 *dst``”h]”jý)�”}”(hjá9h]”hŒu8 *dst”…”�”}”(hjã9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjß9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KlhjÛ9ubj)�”}”(hhh]”hÞ)�”}”(hŒqThe destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”h]”hŒqThe destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.”…”�”}”(hjú9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kkhj÷9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jö9h´KlhjØ9ubjñ)�”}”(hŒ-``const u8 *src`` The source ciphertext data ”h]”(j÷)�”}”(hŒ``const u8 *src``”h]”jý)�”}”(hj:h]”hŒ const u8 *src”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kmhj:ubj)�”}”(hhh]”hÞ)�”}”(hŒThe source ciphertext data”h]”hŒThe source ciphertext data”…”�”}”(hj4:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j0:h´Kmhj1:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j0:h´KmhjØ9ubjñ)�”}”(hŒg``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ”h]”(j÷)�”}”(hŒ``size_t data_len``”h]”jý)�”}”(hjT:h]”hŒsize_t data_len”…”�”}”(hjV:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjR:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KohjN:ubj)�”}”(hhh]”hÞ)�”}”(hŒRLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32”h]”hŒRLength of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32”…”�”}”(hjm:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Knhjj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³ji:h´KohjØ9ubjñ)�”}”(hX'``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag. ”h]”(j÷)�”}”(hŒ``const u8 *authtag``”h]”jý)�”}”(hjŽ:h]”hŒconst u8 *authtag”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjŒ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kshjˆ:ubj)�”}”(hhh]”hÞ)�”}”(hXThe stored authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to **src** + **data_len** and **src** must have room for the tag.”h]”(hŒÒThe stored authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). Usually protocols using AES-GCM put the tag at the end of the ciphertext, in which case this should be set to ”…”�”}”(hj§:h²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj¯:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj§:ubhŒ + ”…”�”}”(hj§:h²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj§:ubhŒ and ”…”�”}”(hj§:h²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÓ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj§:ubhŒ must have room for the tag.”…”�”}”(hj§:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kphj¤:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j£:h´KshjØ9ubjñ)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j÷)�”}”(hŒ``const u8 *ad``”h]”jý)�”}”(hjþ:h]”hŒ const u8 *ad”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjü:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kthjø:ubj)�”}”(hhh]”hÞ)�”}”(hŒThe associated data”h]”hŒThe associated data”…”�”}”(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Ø9ubjñ)�”}”(hŒG``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ”h]”(j÷)�”}”(hŒ``size_t ad_len``”h]”jý)�”}”(hj7;h]”hŒ size_t ad_len”…”�”}”(hj9;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj5;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kuhj1;ubj)�”}”(hhh]”hÞ)�”}”(hŒ4Length of associated data in bytes: at most 2^61 - 1”h]”hŒ4Length of associated data in bytes: at most 2^61 - 1”…”�”}”(hjP;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jL;h´KuhjM;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jL;h´KuhjØ9ubjñ)�”}”(hŒ0``const u8 nonce[static 12]`` The 12-byte nonce ”h]”(j÷)�”}”(hŒ``const u8 nonce[static 12]``”h]”jý)�”}”(hjp;h]”hŒconst u8 nonce[static 12]”…”�”}”(hjr;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjn;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kvhjj;ubj)�”}”(hhh]”hÞ)�”}”(hŒThe 12-byte nonce”h]”hŒThe 12-byte nonce”…”�”}”(hj‰;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j…;h´Kvhj†;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j…;h´KvhjØ9ubjñ)�”}”(hŒW``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() ”h]”(j÷)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”jý)�”}”(hj©;h]”hŒconst struct aes_gcm_key *key”…”�”}”(hj«;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj§;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kwhj£;ubj)�”}”(hhh]”hÞ)�”}”(hŒ4The key, already prepared using aes_gcm_preparekey()”h]”hŒ4The key, already prepared using aes_gcm_preparekey()”…”�”}”(hjÂ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¾;h´Kwhj¿;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j¾;h´KwhjØ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¼9ubhÞ)�”}”(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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kyhj¼9ubhÞ)�”}”(hŒ€For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to verify the AES-GMAC value.”h]”hŒ€For AES-GMAC (i.e., AES-GCM without any data en/decrypted), use dst=NULL, src=NULL, and data_len=0 to verify the AES-GMAC value.”…”�”}”(hjú;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kxhj¼9ubhÞ)�”}”(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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K{hj¼9ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj!<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K|hj¼9ubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hj2<h]”hŒReturn”…”�”}”(hj4<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj0<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K~hj¼9ubjJ)�”}”(hhh]”(jO)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hÞ)�”}”(hŒX0 on success. This is the only case where any decrypted or associated data can be used.”h]”hŒX0 on success. This is the only case where any decrypted or associated data can be used.”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K}hjK<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjH<ubjO)�”}”(hŒ&-EBADMSG if the message is inauthentic”h]”hÞ)�”}”(hjf<h]”hŒ&-EBADMSG if the message is inauthentic”…”�”}”(hjh<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Khjd<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjH<ubeh}”(h]”h ]”h"]”h$]”h&]”j†j{uh1jIh³j]<h´K}hj¼9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_init (C function)”Œc.aes_gcm_init”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒevoid aes_gcm_init (struct aes_gcm_ctx *ctx, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”j))�”}”(hŒdvoid aes_gcm_init(struct aes_gcm_ctx *ctx, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢<h²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjž<h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KˆubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±<h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjž<h²hh³j°<h´KˆubjR)�”}”(hŒ aes_gcm_init”h]”jX)�”}”(hŒ aes_gcm_init”h]”hŒ aes_gcm_init”…”�”}”(hjÃ<h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¿<ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjž<h²hh³j°<h´Kˆubj)�”}”(hŒS(struct aes_gcm_ctx *ctx, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(j)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjß<h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjÛ<ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì<h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÛ<ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hjý<h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjú<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jÿ<Œmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWjÅ<sbŒc.aes_gcm_init”†”asbuh1hhjÛ<ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÛ<ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj+=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÛ<ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj8=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÛ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj×<ubj)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjQ=h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjM=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjM=ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjo=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjl=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jq=Œmodname”NŒ classname”Nj[j^)�”}”ja]”j=Œc.aes_gcm_init”†”asbuh1hhjM=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjM=ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj›=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjM=ubjx)�”}”(hjL2h]”hŒ[”…”�”}”(hj©=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjM=ubj/)�”}”(hjZ2h]”hŒstatic”…”�”}”(hj¶=h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjM=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjM=ubju2)�”}”(hŒ12”h]”hŒ12”…”�”}”(hjÑ=h²hh³Nh´Nubah}”(h]”h ]”j�2ah"]”h$]”h&]”uh1jt2hjM=ubjx)�”}”(hj‡2h]”hŒ]”…”�”}”(hjß=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjM=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj×<ubj)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hj÷=h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjó=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjó=ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjó=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjó=ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hj0>h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj->ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j2>Œmodname”NŒ classname”Nj[j^)�”}”ja]”j=Œc.aes_gcm_init”†”asbuh1hhjó=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjó=ubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj\>h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjó=ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hji>h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjó=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj×<ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjž<h²hh³j°<h´Kˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjš<h²hh³j°<h´Kˆubah}”(h]”j•<ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j°<h´Kˆhj—<h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ`Initialize context for incremental AES-GCM encryption or decryption, or for AES-GMAC computation”h]”hŒ`Initialize context for incremental AES-GCM encryption or decryption, or for AES-GMAC computation”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kˆhj�>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj—<h²hh³j°<h´Kˆubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j«>j§j«>j¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hX¦**Parameters** ``struct aes_gcm_ctx *ctx`` The context to initialize ``const u8 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used for encryption or MAC generation MUST be distinct. ``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey(). Note that a pointer to the key is saved in the context, so the key must live at least as long as the context. **Description** The context should be zeroized at the end of its lifetime. Normally that happens in aes_gcm_encrypt_final() or aes_gcm_decrypt_final(), but callers that abandon a context without finalizing it should explicitly zeroize it. IMPORTANT: Callers that are decrypting data or computing a GMAC value for verification MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. This incremental API is provided solely to support callers that can't efficiently use the one-shot functions due to using a nonlinear data layout. For incremental AES-GCM encryption, use: 1. aes_gcm_init() 2. aes_gcm_auth_update() (any number of times) 3. aes_gcm_encrypt_update() (any number of times) 4. aes_gcm_encrypt_final() For incremental AES-GCM decryption, use: 1. aes_gcm_init() 2. aes_gcm_auth_update() (any number of times) 3. aes_gcm_decrypt_update() (any number of times) 4. aes_gcm_decrypt_final() AES-GMAC is just AES-GCM with zero bytes en/decrypted. For incremental AES-GMAC computation, use: 1. aes_gcm_init() 2. aes_gcm_auth_update() (any number of times) 3. aes_gcm_encrypt_final() to return the computed tag to the caller, or aes_gcm_decrypt_final() to directly verify the computed tag **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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KŒhj¯>ubjì)�”}”(hhh]”(jñ)�”}”(hŒ6``struct aes_gcm_ctx *ctx`` The context to initialize ”h]”(j÷)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”jý)�”}”(hjÔ>h]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hjÖ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÒ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KŠhjÎ>ubj)�”}”(hhh]”hÞ)�”}”(hŒThe context to initialize”h]”hŒThe context to initialize”…”�”}”(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 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used for encryption or MAC generation MUST be distinct. ”h]”(j÷)�”}”(hŒ``const u8 nonce[static 12]``”h]”jý)�”}”(hj ?h]”hŒconst u8 nonce[static 12]”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KŒhj?ubj)�”}”(hhh]”hÞ)�”}”(hŒbThe 12-byte nonce. All (key, nonce) pairs used for encryption or MAC generation MUST be distinct.”h]”hŒbThe 12-byte nonce. All (key, nonce) pairs used for encryption or MAC generation MUST be distinct.”…”�”}”(hj&?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K‹hj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j"?h´KŒhjË>ubjñ)�”}”(hŒÇ``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey(). Note that a pointer to the key is saved in the context, so the key must live at least as long as the context. ”h]”(j÷)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”jý)�”}”(hjG?h]”hŒconst struct aes_gcm_key *key”…”�”}”(hjI?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjE?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K�hjA?ubj)�”}”(hhh]”hÞ)�”}”(hŒ¤The key, already prepared using aes_gcm_preparekey(). Note that a pointer to the key is saved in the context, so the key must live at least as long as the context.”h]”hŒ¤The key, already prepared using aes_gcm_preparekey(). Note that a pointer to the key is saved in the context, so the key must live at least as long as the context.”…”�”}”(hj`?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”•ÝÙh´K�hj]?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA?ubeh}”(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³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K‘hj¯>ubhÞ)�”}”(hŒßThe context should be zeroized at the end of its lifetime. Normally that happens in aes_gcm_encrypt_final() or aes_gcm_decrypt_final(), but callers that abandon a context without finalizing it should explicitly zeroize it.”h]”hŒßThe context should be zeroized at the end of its lifetime. Normally that happens in aes_gcm_encrypt_final() or aes_gcm_decrypt_final(), but callers that abandon a context without finalizing it should explicitly zeroize it.”…”�”}”(hj™?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K�hj¯>ubhÞ)�”}”(hX]IMPORTANT: Callers that are decrypting data or computing a GMAC value for verification MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. This incremental API is provided solely to support callers that can't efficiently use the one-shot functions due to using a nonlinear data layout.”h]”hX_IMPORTANT: Callers that are decrypting data or computing a GMAC value for verification MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. This incremental API is provided solely to support callers that can’t efficiently use the one-shot functions due to using a nonlinear data layout.”…”�”}”(hj¨?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K”hj¯>ubhÞ)�”}”(hŒ(For incremental AES-GCM encryption, use:”h]”hŒ(For incremental AES-GCM encryption, use:”…”�”}”(hj·?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kšhj¯>ubj§)�”}”(hhh]”(jO)�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hjË?h]”hŒaes_gcm_init()”…”�”}”(hjÍ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KœhjÉ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjÆ?ubjO)�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hjã?h]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hjå?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K�hjá?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjÆ?ubjO)�”}”(hŒ.aes_gcm_encrypt_update() (any number of times)”h]”hÞ)�”}”(hjû?h]”hŒ.aes_gcm_encrypt_update() (any number of times)”…”�”}”(hjý?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kžhjù?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjÆ?ubjO)�”}”(hŒaes_gcm_encrypt_final() ”h]”hÞ)�”}”(hŒaes_gcm_encrypt_final()”h]”hŒaes_gcm_encrypt_final()”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KŸhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhjÆ?ubeh}”(h]”h ]”h"]”h$]”h&]”jjjhjjuh1j¦hj¯>ubhÞ)�”}”(hŒ(For incremental AES-GCM decryption, use:”h]”hŒ(For incremental AES-GCM decryption, use:”…”�”}”(hj0@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¡hj¯>ubj§)�”}”(hhh]”(jO)�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hjD@h]”hŒaes_gcm_init()”…”�”}”(hjF@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K£hjB@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj?@ubjO)�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hj\@h]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hj^@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¤hjZ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj?@ubjO)�”}”(hŒ.aes_gcm_decrypt_update() (any number of times)”h]”hÞ)�”}”(hjt@h]”hŒ.aes_gcm_decrypt_update() (any number of times)”…”�”}”(hjv@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¥hjr@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj?@ubjO)�”}”(hŒaes_gcm_decrypt_final() ”h]”hÞ)�”}”(hŒaes_gcm_decrypt_final()”h]”hŒaes_gcm_decrypt_final()”…”�”}”(hjŽ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¦hjŠ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj?@ubeh}”(h]”h ]”h"]”h$]”h&]”jjjhjjuh1j¦hj¯>ubhÞ)�”}”(hŒbAES-GMAC is just AES-GCM with zero bytes en/decrypted. For incremental AES-GMAC computation, use:”h]”hŒbAES-GMAC is just AES-GCM with zero bytes en/decrypted. For incremental AES-GMAC computation, use:”…”�”}”(hj©@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¨hj¯>ubj§)�”}”(hhh]”(jO)�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hj½@h]”hŒaes_gcm_init()”…”�”}”(hj¿@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K«hj»@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj¸@ubjO)�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hjÕ@h]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hj×@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K¬hjÓ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj¸@ubjO)�”}”(hŒ�aes_gcm_encrypt_final() to return the computed tag to the caller, or aes_gcm_decrypt_final() to directly verify the computed tag ”h]”hÞ)�”}”(hŒ€aes_gcm_encrypt_final() to return the computed tag to the caller, or aes_gcm_decrypt_final() to directly verify the computed tag”h]”hŒ€aes_gcm_encrypt_final() to return the computed tag to the caller, or aes_gcm_decrypt_final() to directly verify the computed tag”…”�”}”(hjï@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K­hjë@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jNhj¸@ubeh}”(h]”h ]”h"]”h$]”h&]”jjjhjjuh1j¦hj¯>ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hj Ah]”hŒContext”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K°hj¯>ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj"Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K±hj¯>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ aes_gcm_auth_update (C function)”Œc.aes_gcm_auth_update”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒLvoid aes_gcm_auth_update (struct aes_gcm_ctx *ctx, const u8 *ad, size_t len)”h]”j))�”}”(hŒKvoid aes_gcm_auth_update(struct aes_gcm_ctx *ctx, const u8 *ad, size_t len)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQAh²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjMAh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K·ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Ah²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjMAh²hh³j_Ah´K·ubjR)�”}”(hŒaes_gcm_auth_update”h]”jX)�”}”(hŒaes_gcm_auth_update”h]”hŒaes_gcm_auth_update”…”�”}”(hjrAh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjnAubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjMAh²hh³j_Ah´K·ubj)�”}”(hŒ3(struct aes_gcm_ctx *ctx, const u8 *ad, size_t len)”h]”(j)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjŽAh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjŠAubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Ah²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŠAubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hj¬Ah²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj©Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j®AŒmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWjtAsbŒc.aes_gcm_auth_update”†”asbuh1hhjŠAubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌAh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŠAubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjÚAh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠAubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjŠAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†Aubj)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hj£h]”hŒconst”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjüAubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjüAubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j BŒmodname”NŒ classname”Nj[j^)�”}”ja]”jÈAŒc.aes_gcm_auth_update”†”asbuh1hhjüAubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KÛhj:Jubj)�”}”(hhh]”hÞ)�”}”(hŒ…Number of bytes to decrypt. The caller must ensure that the total number of bytes decrypted doesn't exceed GCM's limit of 2^36 - 32.”h]”hŒ‰Number of bytes to decrypt. The caller must ensure that the total number of bytes decrypted doesn’t exceed GCM’s limit of 2^36 - 32.”…”�”}”(hjYJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KÚhjVJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jUJh´KÛhj‹Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjoIubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hj|Jh]”hŒ Description”…”�”}”(hj~Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjzJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KÝhjoIubhÞ)�”}”(hŒEThis can be called only after all associated data has been processed.”h]”hŒEThis can be called only after all associated data has been processed.”…”�”}”(hj’Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KÜhjoIubhÞ)�”}”(hŒ…IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified.”h]”hŒ…IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified.”…”�”}”(hj¡Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KÞhjoIubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hj²Jh]”hŒContext”…”�”}”(hj´Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj°Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KáhjoIubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjÈJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KâhjoIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"aes_gcm_encrypt_final (C function)”Œc.aes_gcm_encrypt_final”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒAvoid aes_gcm_encrypt_final (struct aes_gcm_ctx *ctx, u8 *authtag)”h]”j))�”}”(hŒ@void aes_gcm_encrypt_final(struct aes_gcm_ctx *ctx, u8 *authtag)”h]”(jà)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷Jh²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhjóJh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KèubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjóJh²hh³jKh´KèubjR)�”}”(hŒaes_gcm_encrypt_final”h]”jX)�”}”(hŒaes_gcm_encrypt_final”h]”hŒaes_gcm_encrypt_final”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjKubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjóJh²hh³jKh´Kèubj)�”}”(hŒ&(struct aes_gcm_ctx *ctx, u8 *authtag)”h]”(j)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj4Kh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj0KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAKh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj0Kubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hjRKh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjOKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”jTKŒmodname”NŒ classname”Nj[j^)�”}”ja]”jd)�”}”jWjKsbŒc.aes_gcm_encrypt_final”†”asbuh1hhj0KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrKh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj0Kubjx)�”}”(hj{h]”hŒ*”…”�”}”(hj€Kh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj0KubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj�Kh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj0Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj,Kubj)�”}”(hŒ u8 *authtag”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj©Kh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¦Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jWŒ reftarget”j«KŒmodname”NŒ classname”Nj[j^)�”}”ja]”jnKŒc.aes_gcm_encrypt_final”†”asbuh1hhj¢KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇKh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¢Kubjx)�”}”(hj{h]”hŒ*”…”�”}”(hjÕKh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¢KubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hjâKh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¢Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj,Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjóJh²hh³jKh´Kèubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjïJh²hh³jKh´Kèubah}”(h]”jêJah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jKh´KèhjìJh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ(Finish encrypting a message with AES-GCM”h]”hŒ(Finish encrypting a message with AES-GCM”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kèhj Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjìJh²hh³jKh´Kèubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j$Lj§j$Lj¨‰j©‰jª‰uh1jh²hhj0*h³Nh´Nubj¬)�”}”(hX&**Parameters** ``struct aes_gcm_ctx *ctx`` An AES-GCM context ``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). **Description** This also zeroizes **ctx**, so the caller doesn't need to do it. **Context** Any context.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hj.Lh]”hŒ Parameters”…”�”}”(hj0Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj,Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kìhj(Lubjì)�”}”(hhh]”(jñ)�”}”(hŒ/``struct aes_gcm_ctx *ctx`` An AES-GCM context ”h]”(j÷)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”jý)�”}”(hjMLh]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hjOLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjKLubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KéhjGLubj)�”}”(hhh]”hÞ)�”}”(hŒAn AES-GCM context”h]”hŒAn AES-GCM context”…”�”}”(hjfLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jbLh´KéhjcLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³jbLh´KéhjDLubjñ)�”}”(hŒs``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey(). ”h]”(j÷)�”}”(hŒ``u8 *authtag``”h]”jý)�”}”(hj†Lh]”hŒ u8 *authtag”…”�”}”(hjˆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj„Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jöh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Këhj€Lubj)�”}”(hhh]”hÞ)�”}”(hŒbThe output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey().”h]”hŒbThe output authentication tag. Length is the authtag_len that was passed to aes_gcm_preparekey().”…”�”}”(hjŸLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KêhjœLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jðh³j›Lh´KëhjDLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhj(LubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjÂLh]”hŒ Description”…”�”}”(hjÄLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÀLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kíhj(LubhÞ)�”}”(hŒ@This also zeroizes **ctx**, so the caller doesn't need to do it.”h]”(hŒThis also zeroizes ”…”�”}”(hjØLh²hh³Nh´Nubj¶)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hjàLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjØLubhŒ(, so the caller doesn’t need to do it.”…”�”}”(hjØLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kìhj(LubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjûLh]”hŒContext”…”�”}”(hjýLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjùLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kîhj(LubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´Kïhj(Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hj0*h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"aes_gcm_decrypt_final (C function)”Œc.aes_gcm_decrypt_final”hNt”auh1j hj0*h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒFint aes_gcm_decrypt_final (struct aes_gcm_ctx *ctx, const u8 *authtag)”h]”j))�”}”(hŒEint aes_gcm_decrypt_final(struct aes_gcm_ctx *ctx, const u8 *authtag)”h]”(jà)�”}”(hŒint”h]”hŒint”…”�”}”(hj@Mh²hh³Nh´Nubah}”(h]”h ]”jìah"]”h$]”h&]”uh1jßhj