€•Œ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_zeroize_key (C function)”Œc.aes_ccm_zeroize_key”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ2void aes_ccm_zeroize_key (struct aes_ccm_key *key)”h]”j))�”}”(hŒ1void aes_ccm_zeroize_key(struct aes_ccm_key *key)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jhjh²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_zeroize_key”h]”jX)�”}”(hŒaes_ccm_zeroize_key”h]”hŒaes_ccm_zeroize_key”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj9ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjh²hh³j*h´KubhŒdesc_parameterlist”“”)�”}”(hŒ(struct aes_ccm_key *key)”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.hjYubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjYubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_key”h]”hŒ aes_ccm_key”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”Œ identifier”Œ reftarget”j}Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j–Œ ASTIdentifier”“”)�”}”j‘j?sbŒc.aes_ccm_zeroize_key”†”asbuh1hhjYubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjYubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j±hjYubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjSubah}”(h]”h ]”h"]”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Œ Zeroize an aes_ccm_key structure”h]”hŒ Zeroize an aes_ccm_key structure”…”�”}”(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´Khjéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjh²hh³j*h´Kubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jj§jj¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hŒH**Parameters** ``struct aes_ccm_key *key`` The aes_ccm_key to zeroize”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²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´KhjubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ6``struct aes_ccm_key *key`` The aes_ccm_key to zeroize”h]”(hŒterm”“”)�”}”(hŒ``struct aes_ccm_key *key``”h]”hŒliteral”“”)�”}”(hj3h]”hŒstruct aes_ccm_key *key”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1ubah}”(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Œ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒThe aes_ccm_key to zeroize”h]”hŒThe aes_ccm_key to zeroize”…”�”}”(hjPh²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´KhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jJh´Khj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjubeh}”(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”…”�”}”(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´KubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�h²hh³jžh´KubjR)�”}”(hŒ aes_ccm_ctx”h]”jX)�”}”(hj‹h]”hŒ aes_ccm_ctx”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj­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”…”�”}”(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´KhjÐ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²hhhíh³Nh´Nubj¬)�”}”(hŒ:**Definition**:: struct aes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K#hjïubjÑ)�”}”(hŒstruct aes_ccm_ctx { };”h]”hŒstruct aes_ccm_ctx { };”…”�”}”hjsbah}”(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´K%hjïubhÞ)�”}”(hŒ **Members**”h]”j¶)�”}”(hj!h]”hŒMembers”…”�”}”(hj#h²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´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_zeroize_ctx (C function)”Œc.aes_ccm_zeroize_ctx”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ2void aes_ccm_zeroize_ctx (struct aes_ccm_ctx *ctx)”h]”j))�”}”(hŒ1void aes_ccm_zeroize_ctx(struct aes_ccm_ctx *ctx)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjSh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´K?ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjSh²hh³jeh´K?ubjR)�”}”(hŒaes_ccm_zeroize_ctx”h]”jX)�”}”(hŒaes_ccm_zeroize_ctx”h]”hŒaes_ccm_zeroize_ctx”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjtubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjSh²hh³jeh´K?ubjR)�”}”(hŒ(struct aes_ccm_ctx *ctx)”h]”jX)�”}”(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”j‘Œ reftarget”j´Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jzsbŒc.aes_ccm_zeroize_ctx”†”asbuh1hhj�ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�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Æuh1jWhjŒubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjSh²hh³jeh´K?ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjOh²hh³jeh´K?ubah}”(h]”jJah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jeh´K?hjLh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ Zeroize an aes_ccm_ctx structure”h]”hŒ Zeroize an aes_ccm_ctx structure”…”�”}”(hjh²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?hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjLh²hh³jeh´K?ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j/j§j/j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hŒH**Parameters** ``struct aes_ccm_ctx *ctx`` The aes_ccm_ctx to zeroize”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hj9h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj7ubah}”(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´KChj3ubj%)�”}”(hhh]”j*)�”}”(hŒ6``struct aes_ccm_ctx *ctx`` The aes_ccm_ctx to zeroize”h]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hjXh]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjVubah}”(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´KEhjRubjL)�”}”(hhh]”hÞ)�”}”(hŒThe aes_ccm_ctx to zeroize”h]”hŒThe aes_ccm_ctx to zeroize”…”�”}”(hjqh²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@hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jmh´KEhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj3ubeh}”(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]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj®h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KHubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj®h²hh³jÀh´KHubjR)�”}”(hŒaes_ccm_preparekey”h]”jX)�”}”(hŒaes_ccm_preparekey”h]”hŒaes_ccm_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´KHubjR)�”}”(hŒO(struct aes_ccm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(jX)�”}”(hŒstruct aes_ccm_key *key”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_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”j‘Œ reftarget”jŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jÕsbŒc.aes_ccm_preparekey”†”asbuh1hhjëubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjëubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjëubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjçubjX)�”}”(hŒconst u8 *in_key”h]”(j/)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj]ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²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”j‘Œ reftarget”j‚Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j)Œc.aes_ccm_preparekey”†”asbuh1hhj]ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj]ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj]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Æuh1jWhjçubjX)�”}”(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”j‘Œ reftarget”j׌modname”NŒ classname”Nj•j˜)�”}”j›]”j)Œc.aes_ccm_preparekey”†”asbuh1hhjÎubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÎubjX)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjçubjX)�”}”(hŒsize_t authtag_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”j‘Œ reftarget”jŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j)Œc.aes_ccm_preparekey”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubjX)�”}”(hŒ authtag_len”h]”hŒ authtag_len”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjçubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj®h²hh³jÀh´KHubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjªh²hh³jÀh´KHubah}”(h]”j¥ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jÀh´KHhj§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”…”�”}”(hjsh²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´KHhjph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj§h²hh³jÀh´KHubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j‹j§j‹j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hXL**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 aes_ccm_zeroize_key() 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´KLhj�ubj%)�”}”(hhh]”(j*)�”}”(hŒE``struct aes_ccm_key *key`` (output) The key structure to initialize ”h]”(j0)�”}”(hŒ``struct aes_ccm_key *key``”h]”j6)�”}”(hj´h]”hŒstruct aes_ccm_key *key”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj²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´KIhj®ubjL)�”}”(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´KIhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÉh´KIhj«ubj*)�”}”(hŒ)``const u8 *in_key`` The raw AES-CCM key ”h]”(j0)�”}”(hŒ``const u8 *in_key``”h]”j6)�”}”(hjíh]”hŒconst u8 *in_key”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjë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´KJhjçubjL)�”}”(hhh]”hÞ)�”}”(hŒThe raw AES-CCM key”h]”hŒThe raw AES-CCM key”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´KJhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´KJhj«ubj*)�”}”(hŒA``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ”h]”(j0)�”}”(hŒ``size_t key_len``”h]”j6)�”}”(hj&h]”hŒsize_t key_len”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj$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´KKhj ubjL)�”}”(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´KKhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j;h´KKhj«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]”(j0)�”}”(hŒ``size_t authtag_len``”h]”j6)�”}”(hj_h]”hŒsize_t authtag_len”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj]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´KMhjYubjL)�”}”(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.”…”�”}”(hjxh²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´KLhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jth´KMhj«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´KOhj�ubhÞ)�”}”(hŒ—Users should use aes_ccm_zeroize_key() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”h]”hŒ—Users should use aes_ccm_zeroize_key() 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´KNhj�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´KQhj�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´KRhj�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´KThj�ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ 0 on success”h]”hÞ)�”}”(hj h]”hŒ 0 on success”…”�”}”(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´KShj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(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:13: ./include/crypto/aes-ccm.h”h´KThj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”jµuh1jÿh³j h´KShj�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 (C function)”Œc.aes_ccm_encrypt”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ©int aes_ccm_encrypt (u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”j))�”}”(hŒ¨int aes_ccm_encrypt(u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjY 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Œ ”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjY h²hh³jk h´K[ubjR)�”}”(hŒaes_ccm_encrypt”h]”jX)�”}”(hŒaes_ccm_encrypt”h]”hŒaes_ccm_encrypt”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjz ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjY h²hh³jk h´K[ubjR)�”}”(hŒ•(u8 *dst, const u8 *src, size_t data_len, u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(jX)�”}”(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”j‘Œ reftarget”jŸ Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j€ sbŒc.aes_ccm_encrypt”†”asbuh1hhj– ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj– ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj– ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj– ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhjí ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjí ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjí ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjí ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(hŒsize_t data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhja ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jf Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”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Æuh1jWhj’ ubjX)�”}”(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”j‘Œ reftarget”j® Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhj¥ ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¥ ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¥ 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Æuh1jWhj’ ubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhjú ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjú ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjú ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjú ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(hŒ size_t ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjn ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”js Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhjj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjj ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(hŒconst u8 *nonce”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”jÖ Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhj² ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj² ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj² ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj² ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(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”j‘Œ reftarget”j+ Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhj" ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj" ubjX)�”}”(hŒ nonce_len”h]”hŒ nonce_len”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj" ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubjX)�”}”(hŒconst struct aes_ccm_key *key”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjj ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjj 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”j‘Œ reftarget”j© Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¹ Œc.aes_ccm_encrypt”†”asbuh1hhjj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjj ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjj ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj’ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjY h²hh³jk h´K[ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjU h²hh³jk h´K[ubah}”(h]”jP ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jk h´K[hjR h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒEncrypt a message with AES-CCM”h]”hŒEncrypt 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ƒhjR h²hh³jk h´K[ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j" j§j" j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hXq**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^(120 - (8 * **nonce_len**)) - 1 ``u8 *authtag`` The output 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 **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 ``const u8 *nonce`` The nonce. All (key, nonce) pairs used 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() **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Œ``u8 *dst`` The destination ciphertext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hjK h]”hŒu8 *dst”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjI 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]hjE ubjL)�”}”(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.”…”�”}”(hjd 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\hja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjE ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j` h´K]hjB ubj*)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hj… h]”hŒ const u8 *src”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjƒ 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 ubjL)�”}”(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&]”uh1jKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jš h´K^hjB 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]”(j0)�”}”(hŒ``size_t data_len``”h]”j6)�”}”(hj¾ h]”hŒsize_t data_len”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj¼ 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¸ ubjL)�”}”(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 * ”…”�”}”(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Œ)) - 1”…”�”}”(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Ô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÓ h´K`hjB ubj*)�”}”(hX!``u8 *authtag`` The output 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 **dst** + **data_len** and **dst** must have room for the tag. ”h]”(j0)�”}”(hŒ``u8 *authtag``”h]”j6)�”}”(hj h]”hŒ u8 *authtag”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjubah}”(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´KdhjubjL)�”}”(hhh]”hÞ)�”}”(hXThe output 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 **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_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Œ**dst**”h]”hŒdst”…”�”}”(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Œ**dst**”h]”hŒdst”…”�”}”(hjOh²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´Kahj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´KdhjB ubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hjzh]”hŒ const u8 *ad”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjxubah}”(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´KehjtubjL)�”}”(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´Kehj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´KehjB ubj*)�”}”(hŒ5``size_t ad_len`` Length of associated data in bytes ”h]”(j0)�”}”(hŒ``size_t ad_len``”h]”j6)�”}”(hj³h]”hŒ size_t ad_len”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj±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´Kfhj­ubjL)�”}”(hhh]”hÞ)�”}”(hŒ"Length of associated data in bytes”h]”hŒ"Length of associated data in bytes”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÈh´KfhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈh´KfhjB ubj*)�”}”(hŒN``const u8 *nonce`` The nonce. All (key, nonce) pairs used MUST be distinct. ”h]”(j0)�”}”(hŒ``const u8 *nonce``”h]”j6)�”}”(hjìh]”hŒconst u8 *nonce”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjê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æubjL)�”}”(hhh]”hÞ)�”}”(hŒ9The nonce. All (key, nonce) pairs used MUST be distinct.”h]”hŒ9The nonce. All (key, nonce) pairs used MUST be distinct.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Kghjubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´KghjB ubj*)�”}”(hŒN``size_t nonce_len`` Length of the nonce in bytes: between 7 and 13 inclusive ”h]”(j0)�”}”(hŒ``size_t nonce_len``”h]”j6)�”}”(hj%h]”hŒsize_t nonce_len”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj#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´KhhjubjL)�”}”(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´Khhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:h´KhhjB ubj*)�”}”(hŒW``const struct aes_ccm_key *key`` The key, already prepared using aes_ccm_preparekey() ”h]”(j0)�”}”(hŒ!``const struct aes_ccm_key *key``”h]”j6)�”}”(hj^h]”hŒconst struct aes_ccm_key *key”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj\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´KihjXubjL)�”}”(hhh]”hÞ)�”}”(hŒ4The key, already prepared using aes_ccm_preparekey()”h]”hŒ4The key, already prepared using aes_ccm_preparekey()”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jsh´Kihjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jsh´KihjB ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj& ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hj™h]”hŒContext”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kkhj& 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´Kkhj& 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´Kmhj& ubj )�”}”(hhh]”(j )�”}”(hŒ 0 on success”h]”hÞ)�”}”(hjÛh]”hŒ 0 on success”…”�”}”(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´KlhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubj )�”}”(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´Kmhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubj )�”}”(hŒF-EOVERFLOW if **data_len** is too large for the selected **nonce_len**”h]”hÞ)�”}”(hjh]”(hŒ-EOVERFLOW if ”…”�”}”(hjh²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubhŒ is too large for the selected ”…”�”}”(hjh²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubeh}”(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´Knhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³jêh´Klhj& 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 (C function)”Œc.aes_ccm_decrypt”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ¯int aes_ccm_decrypt (u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”j))�”}”(hŒ®int aes_ccm_decrypt(u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjuh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KwubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjuh²hh³j‡h´KwubjR)�”}”(hŒaes_ccm_decrypt”h]”jX)�”}”(hŒaes_ccm_decrypt”h]”hŒaes_ccm_decrypt”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj–ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjuh²hh³j‡h´KwubjR)�”}”(hŒ›(u8 *dst, const u8 *src, size_t data_len, const u8 *authtag, const u8 *ad, size_t ad_len, const u8 *nonce, size_t nonce_len, const struct aes_ccm_key *key)”h]”(jX)�”}”(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”j‘Œ reftarget”j»Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jœsbŒc.aes_ccm_decrypt”†”asbuh1hhj²ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj²ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj²ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j-Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(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”j‘Œ reftarget”j‚Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhjyubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjyubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”jåŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhjÁubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÁubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÁubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj1ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jUŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhj1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj1ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj1ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(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”j‘Œ reftarget”jªŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhj¡ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¡ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(hŒconst u8 *nonce”h]”(j/)�”}”(hjch]”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&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhjéubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjéubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjéubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(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”j‘Œ reftarget”jbŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhjYubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjYubjX)�”}”(hŒ nonce_len”h]”hŒ nonce_len”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubjX)�”}”(hŒconst struct aes_ccm_key *key”h]”(j/)�”}”(hjch]”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_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”j‘Œ reftarget”jàŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jÕŒc.aes_ccm_decrypt”†”asbuh1hhj¡ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¡ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¡ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjuh²hh³j‡h´Kwubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjqh²hh³j‡h´Kwubah}”(h]”jlah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j‡h´Kwhjnh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒDecrypt a message with AES-CCM”h]”hŒDecrypt a message with AES-CCM”…”�”}”(hjAh²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´Kwhj>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjnh²hh³j‡h´Kwubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jYj§jYj¨‰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¶)�”}”(hjch]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjaubah}”(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Œ~``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hj‚h]”hŒu8 *dst”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj€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´Kyhj|ubjL)�”}”(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´Kxhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j—h´Kyhjyubj*)�”}”(hŒ-``const u8 *src`` The source ciphertext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hj¼h]”hŒ const u8 *src”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjº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´Kzhj¶ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe source ciphertext data”h]”hŒThe source ciphertext data”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÑh´KzhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÑh´Kzhjyubj*)�”}”(hŒ``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^(120 - (8 * **nonce_len**)) - 1 ”h]”(j0)�”}”(hŒ``size_t data_len``”h]”j6)�”}”(hjõh]”hŒsize_t data_len”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjó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ïubjL)�”}”(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 * ”…”�”}”(hjh²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubhŒ)) - 1”…”�”}”(hjh²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 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´K|hjyubj*)�”}”(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]”(j0)�”}”(hŒ``const u8 *authtag``”h]”j6)�”}”(hjAh]”hŒconst u8 *authtag”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj?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;ubjL)�”}”(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 ”…”�”}”(hjZh²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjZubhŒ + ”…”�”}”(hjZh²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjZubhŒ and ”…”�”}”(hjZh²hh³Nh´Nubj¶)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjZubhŒ must have room for the tag.”…”�”}”(hjZh²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}hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVh´K€hjyubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hj±h]”hŒ const u8 *ad”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj¯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«ubjL)�”}”(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´K�hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÆh´K�hjyubj*)�”}”(hŒ5``size_t ad_len`` Length of associated data in bytes ”h]”(j0)�”}”(hŒ``size_t ad_len``”h]”j6)�”}”(hjêh]”hŒ size_t ad_len”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjè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äubjL)�”}”(hhh]”hÞ)�”}”(hŒ"Length of associated data in bytes”h]”hŒ"Length of associated data in bytes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÿh´K‚hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿh´K‚hjyubj*)�”}”(hŒ``const u8 *nonce`` The nonce ”h]”(j0)�”}”(hŒ``const u8 *nonce``”h]”j6)�”}”(hj#h]”hŒconst u8 *nonce”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj!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ƒhjubjL)�”}”(hhh]”hÞ)�”}”(hŒ The nonce”h]”hŒ The nonce”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j8h´Kƒhj9ubah}”(h]”h ]”h"]”h$]”h&]”u•h1jKhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8h´Kƒhjyubj*)�”}”(hŒN``size_t nonce_len`` Length of the nonce in bytes: between 7 and 13 inclusive ”h]”(j0)�”}”(hŒ``size_t nonce_len``”h]”j6)�”}”(hj\h]”hŒsize_t nonce_len”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjZubah}”(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„hjVubjL)�”}”(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”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jqh´K„hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jqh´K„hjyubj*)�”}”(hŒW``const struct aes_ccm_key *key`` The key, already prepared using aes_ccm_preparekey() ”h]”(j0)�”}”(hŒ!``const struct aes_ccm_key *key``”h]”j6)�”}”(hj•h]”hŒconst struct aes_ccm_key *key”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj“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�ubjL)�”}”(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´K…hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jªh´K…hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj]ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjÐh]”hŒContext”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ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]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´K‰hj]ubj )�”}”(hhh]”(j )�”}”(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.”…”�”}”(hjh²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ˆhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(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´KŠhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hŒ#-EINVAL if **nonce_len** is invalid”h]”hÞ)�”}”(hjCh]”(hŒ -EINVAL if ”…”�”}”(hjEh²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjEubhŒ is invalid”…”�”}”(hjEh²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‹hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hŒF-EOVERFLOW if **data_len** is too large for the selected **nonce_len**”h]”hÞ)�”}”(hjmh]”(hŒ-EOVERFLOW if ”…”�”}”(hjoh²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjoubhŒ is too large for the selected ”…”�”}”(hjoh²hh³Nh´Nubj¶)�”}”(hŒ **nonce_len**”h]”hŒ nonce_len”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjoubeh}”(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Œhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³j"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_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”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjÅ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_init”h]”jX)�”}”(hŒ aes_ccm_init”h]”hŒ aes_ccm_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•ubjR)�”}”(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]”(jX)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubh)�”}”(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”j‘Œ reftarget”j&Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jìsbŒc.aes_ccm_init”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubjX)�”}”(hŒ u64 data_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j}Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j@Œc.aes_ccm_init”†”asbuh1hhjtubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjtubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubjX)�”}”(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”j‘Œ reftarget”jÅŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j@Œc.aes_ccm_init”†”asbuh1hhj¼ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¼ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubjX)�”}”(hŒconst u8 *nonce”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubh)�”}”(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”j‘Œ reftarget”j(Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j@Œc.aes_ccm_init”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubjX)�”}”(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&]”uh1jWhjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j}Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j@Œc.aes_ccm_init”†”asbuh1hhjtubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjtubjX)�”}”(hŒ nonce_len”h]”hŒ nonce_len”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubjX)�”}”(hŒconst struct aes_ccm_key *key”h]”(j/)�”}”(hjch]”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_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”j‘Œ reftarget”jûŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j@Œc.aes_ccm_init”†”asbuh1hhj¼ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¼ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¼ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjþubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjÅ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Œ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•hjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj¾h²hh³j×h´K•ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jtj§jtj¨‰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™hjxubj%)�”}”(hhh]”(j*)�”}”(hŒ6``struct aes_ccm_ctx *ctx`` The context to initialize ”h]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hj�h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj›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—ubjL)�”}”(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&]”uh1jKhj—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]”(j0)�”}”(hŒ``u64 data_len``”h]”j6)�”}”(hjÖh]”hŒ u64 data_len”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjÔ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ÐubjL)�”}”(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 * ”…”�”}”(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Œ)) - 1”…”�”}”(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ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jëh´K™hj”ubj*)�”}”(hŒL``u64 ad_len`` Length of the associated data that will be provided in bytes ”h]”(j0)�”}”(hŒ``u64 ad_len``”h]”j6)�”}”(hj"h]”hŒ u64 ad_len”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj 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šhjubjL)�”}”(hhh]”hÞ)�”}”(hŒ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ªhjxubhÞ)�”}”(hŒ(For incremental AES-CCM encryption, use:”h]”hŒ(For incremental AES-CCM encryption, use:”…”�”}”(hjMh²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¯hjxubhŒenumerated_list”“”)�”}”(hhh]”(j )�”}”(hŒaes_ccm_init()”h]”hÞ)�”}”(hjch]”hŒaes_ccm_init()”…”�”}”(hjeh²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±hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubj )�”}”(hŒ+aes_ccm_auth_update() (any number of times)”h]”hÞ)�”}”(hj{h]”hŒ+aes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K²hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubj )�”}”(hŒ.aes_ccm_encrypt_update() (any number of times)”h]”hÞ)�”}”(hj“h]”hŒ.aes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K³hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubj )�”}”(hŒaes_ccm_encrypt_final() ”h]”hÞ)�”}”(hŒaes_ccm_encrypt_final()”h]”hŒaes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K´hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j\hjxubhÞ)�”}”(hŒ(For incremental AES-CCM decryption, use:”h]”hŒ(For incremental AES-CCM decryption, use:”…”�”}”(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¶hjxubj])�”}”(hhh]”(j )�”}”(hŒaes_ccm_init()”h]”hÞ)�”}”(hjáh]”hŒ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ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hŒ+aes_ccm_auth_update() (any number of times)”h]”hÞ)�”}”(hjùh]”hŒ+aes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K¹hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hŒ.aes_ccm_decrypt_update() (any number of times)”h]”hÞ)�”}”(hjh]”hŒ.aes_ccm_decrypt_update() (any number of times)”…”�”}”(hjh²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ºhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hŒaes_ccm_decrypt_final() ”h]”hÞ)�”}”(hŒaes_ccm_decrypt_final()”h]”hŒaes_ccm_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:13: ./include/crypto/aes-ccm.h”h´K»hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubeh}”(h]”h ]”h"]”h$]”h&]”jÈjÉjÊhjËjÌuh1j\hjxubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjHh]”hŒContext”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjFubah}”(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½hjxubhÞ)�”}”(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¾hjxubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hjoh]”hŒReturn”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´KÀhjxubj )�”}”(hhh]”(j )�”}”(hŒ 0 on success”h]”hÞ)�”}”(hjŠh]”hŒ 0 on success”…”�”}”(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&]”uh1j hj…ubj )�”}”(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´KÀhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…ubj )�”}”(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´KÁhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…ubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³j™h´K¿hjxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hhíh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ aes_ccm_auth_update (C function)”Œc.aes_ccm_auth_update”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒLvoid aes_ccm_auth_update (struct aes_ccm_ctx *ctx, const u8 *ad, size_t len)”h]”j))�”}”(hŒKvoid aes_ccm_auth_update(struct aes_ccm_ctx *ctx, const u8 *ad, size_t len)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj$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Œ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj$h²hh³j6h´KÉubjR)�”}”(hŒaes_ccm_auth_update”h]”jX)�”}”(hŒaes_ccm_auth_update”h]”hŒaes_ccm_auth_update”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjEubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj$h²hh³j6h´KÉubjR)�”}”(hŒ3(struct aes_ccm_ctx *ctx, const u8 *ad, size_t len)”h]”(jX)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjaubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjaubh)�”}”(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”j‘Œ reftarget”j…Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jKsbŒc.aes_ccm_auth_update”†”asbuh1hhjaubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjaubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjaubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj]ubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j÷Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jŸŒc.aes_ccm_auth_update”†”asbuh1hhjÓubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÓubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÓ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Æuh1jWhj]ubjX)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jLŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jŸŒc.aes_ccm_auth_update”†”asbuh1hhjCubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjCubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj]ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj$h²hh³j6h´KÉubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj h²hh³j6h´KÉubah}”(h]”jah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j6h´KÉhjh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ-Incrementally process AES-CCM associated data”h]”hŒ-Incrementally process AES-CCM associated data”…”�”}”(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³j6h´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 *ad`` The associated data ``size_t len`` Length of the associated data in bytes **Description** IMPORTANT: Callers MUST NOT assume that any decrypted or associated data is authentic until the authentication tag has been verified. The total length of the associated data (over all calls to this function) MUST match the ad_len that was passed to aes_ccm_init(). **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]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hjáh]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjß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ÛubjL)�”}”(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&]”uh1jKhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jöh´KÊhjØubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hj h]”hŒ const u8 *ad”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj 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 ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe associated data”h]”hŒThe associated data”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j/ h´KËhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j/ h´KËhjØubj*)�”}”(hŒ6``size_t len`` Length of the associated data in bytes ”h]”(j0)�”}”(hŒ``size_t len``”h]”j6)�”}”(hjS h]”hŒ size_t len”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjQ 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ÌhjM ubjL)�”}”(hhh]”hÞ)�”}”(hŒ&Length of the associated data in bytes”h]”hŒ&Length of the associated data in bytes”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh h´KÌhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh 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Œ…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Œ‚The total length of the associated data (over all calls to this function) MUST match the ad_len that was passed to aes_ccm_init().”h]”hŒ‚The total length of the associated data (over all calls to this function) MUST match the ad_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Œ **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_update (C function)”Œc.aes_ccm_encrypt_update”hNt”auh1j hhíh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒYvoid aes_ccm_encrypt_update (struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”j))�”}”(hŒXvoid aes_ccm_encrypt_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&]”uh1jhj!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_encrypt_update”h]”jX)�”}”(hŒaes_ccm_encrypt_update”h]”hŒaes_ccm_encrypt_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ÙubjR)�”}”(hŒ=(struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(jX)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjF!h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjB!ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS!h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjB!ubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hjd!h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhja!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jf!Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j,!sbŒc.aes_ccm_encrypt_update”†”asbuh1hhjB!ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„!h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjB!ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj’!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjB!ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjB!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj>!ubjX)�”}”(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”j‘Œ reftarget”j½!Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j€!Œc.aes_ccm_encrypt_update”†”asbuh1hhj´!ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj´!ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjç!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj´!ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjô!h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj´!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj>!ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j-"Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j€!Œc.aes_ccm_encrypt_update”†”asbuh1hhj "ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj "ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj "ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjd"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj "ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj>!ubjX)�”}”(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”j‘Œ reftarget”j‚"Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j€!Œc.aes_ccm_encrypt_update”†”asbuh1hhjy"ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjy"ubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¬"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjy"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj>!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj!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 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ƒ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 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¶)�”}”(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]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hj#h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj#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#ubjL)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(hj0#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j,#h´KÚhj-#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj#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]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hjP#h]”hŒu8 *dst”…”�”}”(hjR#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjN#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ÜhjJ#ubjL)�”}”(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.”…”�”}”(hji#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Ûhjf#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjJ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³je#h´KÜhj#ubj*)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hjŠ#h]”hŒ const u8 *src”…”�”}”(hjŒ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjˆ#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„#ubjL)�”}”(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&]”uh1jKhj„#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŸ#h´KÝhj#ubj*)�”}”(hŒ*``size_t len`` Number of bytes to encrypt ”h]”(j0)�”}”(hŒ``size_t len``”h]”j6)�”}”(hjÃ#h]”hŒ size_t len”…”�”}”(hjÅ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjÁ#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½#ubjL)�”}”(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&]”uh1jKhj½#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 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().”…”�”}”(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¶)�”}”(hj4$h]”hŒContext”…”�”}”(hj6$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj2$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.”…”�”}”(hjJ$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”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhju$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@hju$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Æuh1jQhju$h²hh³j‡$h´KëubjR)�”}”(hŒ=(struct aes_ccm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(jX)�”}”(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”j‘Œ reftarget”jÖ$Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jœ$sbŒc.aes_ccm_decrypt_update”†”asbuh1hhj²$ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô$h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj²$ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj²$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Æuh1jWhj®$ubjX)�”}”(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”j‘Œ reftarget”j-%Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jð$Œc.aes_ccm_decrypt_update”†”asbuh1hhj$%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj$%ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj$%ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj$%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®$ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj}%h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjy%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjy%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”j‘Œ reftarget”j�%Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jð$Œc.aes_ccm_decrypt_update”†”asbuh1hhjy%ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹%h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjy%ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÇ%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjy%ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÔ%h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjy%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj®$ubjX)�”}”(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”j‘Œ reftarget”jò%Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jð$Œc.aes_ccm_decrypt_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Æuh1jWhj®$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhju$h²hh³j‡$h´Këubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjq$h²hh³j‡$h´Këubah}”(h]”jl$ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j‡$h´Këhjn$h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ'Incrementally decrypt data with AES-CCM”h]”hŒ'Incrementally decrypt data with AES-CCM”…”�”}”(hjF&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ëhjC&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjn$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¶)�”}”(hjh&h]”hŒ Parameters”…”�”}”(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ïhjb&ubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hj‡&h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hj‰&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj…&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�&ubjL)�”}”(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&]”uh1jKhj�&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]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hjÀ&h]”hŒu8 *dst”…”�”}”(hjÂ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj¾&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º&ubjL)�”}”(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&]”uh1jKhjº&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]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hjú&h]”hŒ const u8 *src”…”�”}”(hjü&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjø&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ô&ubjL)�”}”(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³j'h´Kïhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjô&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j'h´Kïhj~&ubj*)�”}”(hŒ*``size_t len`` Number of bytes to decrypt ”h]”(j0)�”}”(hŒ``size_t len``”h]”j6)�”}”(hj3'h]”hŒ size_t len”…”�”}”(hj5'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1'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-'ubjL)�”}”(hhh]”hÞ)�”}”(hŒNumber of bytes to decrypt”h]”hŒNumber of bytes to decrypt”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jH'h´KðhjI'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj-'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jH'h´Kðhj~&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjb&ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjn'h]”hŒ Description”…”�”}”(hjp'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjl'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Kòhjb&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ñhjb&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óhjb&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öhjb&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ùhjb&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úhjb&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”…”�”}”(hjø'h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjô'h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´MubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjô'h²hh³j(h´MubjR)�”}”(hŒaes_ccm_encrypt_final”h]”jX)�”}”(hŒaes_ccm_encrypt_final”h]”hŒaes_ccm_encrypt_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´MubjR)�”}”(hŒ&(struct aes_ccm_ctx *ctx, u8 *authtag)”h]”(jX)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj1(ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj1(ubh)�”}”(hhh]”jX)�”}”(hŒ aes_ccm_ctx”h]”hŒ aes_ccm_ctx”…”�”}”(hjS(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjP(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jU(Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j(sbŒc.aes_ccm_encrypt_final”†”asbuh1hhj1(ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj1(ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj1(ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjŽ(h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj1(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj-(ubjX)�”}”(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”j‘Œ reftarget”j¬(Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jo(Œc.aes_ccm_encrypt_final”†”asbuh1hhj£(ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ(h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj£(ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÖ(h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj£(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Æuh1jWhj-(ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjô'h²hh³j(h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjð'h²hh³j(h´Mubah}”(h]”jë'ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j(h´Mhjí'h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ(Finish encrypting a message with AES-CCM”h]”hŒ(Finish encrypting 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´Mhj )h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjí'h²hh³j(h´Mubeh}”(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 *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¶)�”}”(hj/)h]”hŒ Parameters”…”�”}”(hj1)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))ubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hjN)h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjL)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´MhjH)ubjL)�”}”(hhh]”hÞ)�”}”(hŒAn AES-CCM context”h]”hŒAn AES-CCM context”…”�”}”(hjg)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jc)h´Mhjd)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjH)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jc)h´MhjE)ubj*)�”}”(hŒs``u8 *authtag`` The output authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). ”h]”(j0)�”}”(hŒ``u8 *authtag``”h]”j6)�”}”(hj‡)h]”hŒ u8 *authtag”…”�”}”(hj‰)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj…)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´Mhj�)ubjL)�”}”(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´Mhj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj�)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœ)h´MhjE)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´Mhj))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´Mhj))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))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”…”�”}”(hjA*h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj=*h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´M ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP*h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj=*h²hh³jO*h´M ubjR)�”}”(hŒaes_ccm_decrypt_final”h]”jX)�”}”(hŒaes_ccm_decrypt_final”h]”hŒaes_ccm_decrypt_final”…”�”}”(hjb*h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj^*ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj=*h²hh³jO*h´M ubjR)�”}”(hŒ,(struct aes_ccm_ctx *ctx, const u8 *authtag)”h]”(jX)�”}”(hŒstruct aes_ccm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj~*h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjz*ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹*h²hh³Nh´Nubah}”(h]”•%h ]”jMah"]”h$]”h&]”uh1j@hjz*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”j‘Œ reftarget”jž*Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jd*sbŒc.aes_ccm_decrypt_final”†”asbuh1hhjz*ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼*h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjz*ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÊ*h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjz*ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj×*h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjz*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjv*ubjX)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j+Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j¸*Œc.aes_ccm_decrypt_final”†”asbuh1hhjì*ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,+h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjì*ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjì*ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjì*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjv*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj=*h²hh³jO*h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj9*h²hh³jO*h´M ubah}”(h]”j4*ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jO*h´M hj6*h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ(Finish decrypting a message with AES-CCM”h]”hŒ(Finish decrypting a message with AES-CCM”…”�”}”(hjq+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´M hjn+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj6*h²hh³jO*h´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j‰+j§j‰+j¨‰j©‰jª‰uh1jh²hhhíh³Nh´Nubj¬)�”}”(hX¿**Parameters** ``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´Mhj�+ubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct aes_ccm_ctx *ctx`` An AES-CCM context ”h]”(j0)�”}”(hŒ``struct aes_ccm_ctx *ctx``”h]”j6)�”}”(hj²+h]”hŒstruct aes_ccm_ctx *ctx”…”�”}”(hj´+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj°+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´M hj¬+ubjL)�”}”(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´M hjÈ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj¬+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÇ+h´M hj©+ubj*)�”}”(hŒy``const u8 *authtag`` The stored authentication tag. Length is the authtag_len that was passed to aes_ccm_preparekey(). ”h]”(j0)�”}”(hŒ``const u8 *authtag``”h]”j6)�”}”(hjë+h]”hŒconst u8 *authtag”…”�”}”(hjí+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjé+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´Mhjå+ubjL)�”}”(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().”…”�”}”(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&]”uh1jKhjå+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,h´Mhj©+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj�+ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hj',h]”hŒ Description”…”�”}”(hj),h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj%,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:13: ./include/crypto/aes-ccm.h”h´Mhj�+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”…”�”}”(hjE,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´Mhj�+ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hj`,h]”hŒContext”…”�”}”(hjb,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.”…”�”}”(hjv,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�+ubj )�”}”(hhh]”(j )�”}”(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&]”uh1j hj�,ubj )�”}”(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&]”uh1j hj�,ubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³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”…”�”}”(hjé,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjæ,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.”…”�”}”(hj÷,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjæ,h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_key (C struct)”Œ c.aes_gcm_key”hNt”auh1j hjæ,h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ aes_gcm_key”h]”j))�”}”(hŒstruct aes_gcm_key”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_key”h]”jX)�”}”(hj-h]”hŒ aes_gcm_key”…”�”}”(hj>-h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj:-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Œ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³j+-h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j¥j j¦jx-j§jx-j¨‰j©‰jª‰uh1jh²hhjæ,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«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ aes_gcm_zeroize_key (C function)”Œc.aes_gcm_zeroize_key”hNt”auh1j hjæ,h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ2void aes_gcm_zeroize_key (struct aes_gcm_key *key)”h]”j))�”}”(hŒ1void aes_gcm_zeroize_key(struct aes_gcm_key *key)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjä-h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjà-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_zeroize_key”h]”jX)�”}”(hŒaes_gcm_zeroize_key”h]”hŒaes_gcm_zeroize_key”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj.ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjà-h²hh³jò-h´KubjR)�”}”(hŒ(struct aes_gcm_key *key)”h]”jX)�”}”(hŒstruct aes_gcm_key *key”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_key”h]”hŒ aes_gcm_key”…”�”}”(hj?.h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj<.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jA.Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j.sbŒc.aes_gcm_zeroize_key”†”asbuh1hhj.ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_.h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj.ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjm.h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj.ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjz.h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj.ubah}”(h]”h ]”h"]”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Œ Zeroize an aes_gcm_key structure”h]”hŒ Zeroize an aes_gcm_key structure”…”�”}”(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³jò-h´Kubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j¼.j§j¼.j¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hŒH**Parameters** ``struct aes_gcm_key *key`` The aes_gcm_key to zeroize”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjÆ.h]”hŒ Parameters”…”�”}”(hjÈ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÄ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KhjÀ.ubj%)�”}”(hhh]”j*)�”}”(hŒ6``struct aes_gcm_key *key`` The aes_gcm_key to zeroize”h]”(j0)�”}”(hŒ``struct aes_gcm_key *key``”h]”j6)�”}”(hjå.h]”hŒstruct aes_gcm_key *key”…”�”}”(hjç.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjã.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´Khjß.ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe aes_gcm_key to zeroize”h]”hŒThe aes_gcm_key to zeroize”…”�”}”(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û.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjß.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jú.h´KhjÜ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÀ.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_ctx (C struct)”Œ c.aes_gcm_ctx”hNt”auh1j hjæ,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Œ ”…”�”}”(hjM/h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj;/h²hh³jL/h´KubjR)�”}”(hŒ aes_gcm_ctx”h]”jX)�”}”(hj9/h]”hŒ aes_gcm_ctx”…”�”}”(hj_/h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj[/ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj;/h²hh³jL/h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhj7/h²hh³jL/h´Kubah}”(h]”j2/ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jL/h´Khj4/h²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:20: ./include/crypto/aes-gcm.h”h´K"hj~/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj4/h²hh³jL/h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j¥j j¦j™/j§j™/j¨‰j©‰jª‰uh1jh²hhjæ,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´K&hj�/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´K(hj�/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«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ aes_gcm_zeroize_ctx (C function)”Œc.aes_gcm_zeroize_ctx”hNt”auh1j hjæ,h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒ2void aes_gcm_zeroize_ctx (struct aes_gcm_ctx *ctx)”h]”j))�”}”(hŒ1void aes_gcm_zeroize_ctx(struct aes_gcm_ctx *ctx)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj0h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KGubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj0h²hh³j0h´KGubjR)�”}”(hŒaes_gcm_zeroize_ctx”h]”jX)�”}”(hŒaes_gcm_zeroize_ctx”h]”hŒaes_gcm_zeroize_ctx”…”�”}”(hj&0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj"0ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj0h²hh³j0h´KGubjR)�”}”(hŒ(struct aes_gcm_ctx *ctx)”h]”jX)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj>0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj>0ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hj`0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj]0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jb0Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j(0sbŒc.aes_gcm_zeroize_ctx”†”asbuh1hhj>0ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€0h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj>0ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjŽ0h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>0ubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj›0h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj>0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:0ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj0h²hh³j0h´KGubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjý/h²hh³j0h´KGubah}”(h]”jø/ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j0h´KGhjú/h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ Zeroize an aes_gcm_ctx structure”h]”hŒ Zeroize an aes_gcm_ctx structure”…”�”}”(hjÅ0h²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´KGhjÂ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjú/h²hh³j0h´KGubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jÝ0j§jÝ0j¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hŒH**Parameters** ``struct aes_gcm_ctx *ctx`` The aes_gcm_ctx to zeroize”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjç0h]”hŒ Parameters”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjå0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KKhjá0ubj%)�”}”(hhh]”j*)�”}”(hŒ6``struct aes_gcm_ctx *ctx`` The aes_gcm_ctx to zeroize”h]”(j0)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”j6)�”}”(hj1h]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1ubah}”(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´KMhj1ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe aes_gcm_ctx to zeroize”h]”hŒThe aes_gcm_ctx to zeroize”…”�”}”(hj1h²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´KHhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j1h´KMhjý0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjá0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_preparekey (C function)”Œc.aes_gcm_preparekey”hNt”auh1j hjæ,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`1h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj\1h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KPubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj\1h²hh³jn1h´KPubjR)�”}”(hŒaes_gcm_preparekey”h]”jX)�”}”(hŒaes_gcm_preparekey”h]”hŒaes_gcm_preparekey”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj}1ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj\1h²hh³jn1h´KPubjR)�”}”(hŒO(struct aes_gcm_key *key, const u8 *in_key, size_t key_len, size_t authtag_len)”h]”(jX)�”}”(hŒstruct aes_gcm_key *key”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(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Œ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¸1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j½1Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jƒ1sbŒc.aes_gcm_preparekey”†”asbuh1hhj™1ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj™1ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj™1ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjö1h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj™1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj•1ubjX)�”}”(hŒconst u8 *in_key”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj 2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj 2ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj-2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj*2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j/2Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j×1Œc.aes_gcm_preparekey”†”asbuh1hhj 2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj 2ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjY2h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj 2ubjX)�”}”(hŒin_key”h]”hŒin_key”…”�”}”(hjf2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj 2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj•1ubjX)�”}”(hŒsize_t key_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j„2Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j×1Œc.aes_gcm_preparekey”†”asbuh1hhj{2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj{2ubjX)�”}”(hŒkey_len”h]”hŒkey_len”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj{2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj•1ubjX)�”}”(hŒsize_t authtag_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÊ2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÇ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jÌ2Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j×1Œc.aes_gcm_preparekey”†”asbuh1hhjÃ2ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè2h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÃ2ubjX)�”}”(hŒ authtag_len”h]”hŒ authtag_len”…”�”}”(hjö2h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÃ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj•1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj\1h²hh³jn1h´KPubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjX1h²hh³jn1h´KPubah}”(h]”jS1ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jn1h´KPhjU1h²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 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´KPhj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjU1h²hh³jn1h´KPubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j83j§j83j¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hXM**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 aes_gcm_zeroize_key() 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¶)�”}”(hjB3h]”hŒ Parameters”…”�”}”(hjD3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj@3ubah}”(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´KThj<3ubj%)�”}”(hhh]”(j*)�”}”(hŒE``struct aes_gcm_key *key`` (output) The key structure to initialize ”h]”(j0)�”}”(hŒ``struct aes_gcm_key *key``”h]”j6)�”}”(hja3h]”hŒstruct aes_gcm_key *key”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj_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´KQhj[3ubjL)�”}”(hhh]”hÞ)�”}”(hŒ((output) The key structure to initialize”h]”hŒ((output) The key structure to initialize”…”�”}”(hjz3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jv3h´KQhjw3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj[3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jv3h´KQhjX3ubj*)�”}”(hŒ)``const u8 *in_key`` The raw AES-GCM key ”h]”(j0)�”}”(hŒ``const u8 *in_key``”h]”j6)�”}”(hjš3h]”hŒconst u8 *in_key”…”�”}”(hjœ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj˜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´KRhj”3ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe raw AES-GCM key”h]”hŒThe raw AES-GCM key”…”�”}”(hj³3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¯3h´KRhj°3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj”3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯3h´KRhjX3ubj*)�”}”(hŒA``size_t key_len`` Length of the raw key in bytes: 16, 24, or 32 ”h]”(j0)�”}”(hŒ``size_t key_len``”h]”j6)�”}”(hjÓ3h]”hŒsize_t key_len”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjÑ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´KShjÍ3ubjL)�”}”(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ì3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jè3h´KShjé3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjÍ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jè3h´KShjX3ubj*)�”}”(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]”(j0)�”}”(hŒ``size_t authtag_len``”h]”j6)�”}”(hj 4h]”hŒsize_t authtag_len”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj 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´KUhj4ubjL)�”}”(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%4h²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´KThj"4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j!4h´KUhjX3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj<3ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjH4h]”hŒ Description”…”�”}”(hjJ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjF4ubah}”(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<3ubhÞ)�”}”(hŒ—Users should use aes_gcm_zeroize_key() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”h]”hŒ—Users should use aes_gcm_zeroize_key() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)”…”�”}”(hj^4h²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´KVhj<3ubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjo4h]”hŒContext”…”�”}”(hjq4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjm4ubah}”(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<3ubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj…4h²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´KZhj<3ubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hj–4h]”hŒReturn”…”�”}”(hj˜4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj”4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´K\hj<3ubj )�”}”(hhh]”(j )�”}”(hŒ 0 on success”h]”hÞ)�”}”(hj±4h]”hŒ 0 on success”…”�”}”(hj³4h²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¯4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬4ubj )�”}”(hŒ+-EINVAL if either of the lengths is invalid”h]”hÞ)�”}”(hjÉ4h]”hŒ+-EINVAL if either of the lengths is invalid”…”�”}”(hjË4h²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Ç4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬4ubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³jÀ4h´K[hj<3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_encrypt (C function)”Œc.aes_gcm_encrypt”hNt”auh1j hjæ,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”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj5h²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KcubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj5h²hh³j5h´KcubjR)�”}”(hŒaes_gcm_encrypt”h]”jX)�”}”(hŒaes_gcm_encrypt”h]”hŒaes_gcm_encrypt”…”�”}”(hj&5h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj"5ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj5h²hh³j5h´KcubjR)�”}”(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]”(jX)�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjE5h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjB5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jG5Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j(5sbŒc.aes_gcm_encrypt”†”asbuh1hhj>5ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj>5ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjs5h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>5ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj>5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj™5h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj•5ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦5h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj•5ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj·5h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj´5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j¹5Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhj•5ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ5h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj•5ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjã5h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj•5ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjð5h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj•5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(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”j‘Œ reftarget”j6Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhj6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj6ubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj86h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒ u8 *authtag”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjT6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjQ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jV6Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhjM6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjM6ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj€6h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjM6ubjX)�”}”(hŒauthtag”h]”hŒauthtag”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjM6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj¦6h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj¢6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¢6ubh)�”}”(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”j‘Œ reftarget”jÆ6Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhj¢6ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¢6ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjð6h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¢6ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjý6h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¢6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒ size_t ad_len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j7Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhj7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj7ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hjE7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj^7h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjZ7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ7ubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj|7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjy7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j~7Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhjZ7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ7ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj¨7h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjZ7ubj²)�”}”(hŒ[”h]”hŒ[”…”�”}”(hj¶7h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjZ7ubj/)�”}”(hŒstatic”h]”hŒstatic”…”�”}”(hjÄ7h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjZ7ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ7h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjZ7ubhŒdesc_sig_literal_number”“”)�”}”(hŒ12”h]”hŒ12”…”�”}”(hjâ7h²hh³Nh´Nubah}”(h]”h ]”Œm”ah"]”h$]”h&]”uh1jà7hjZ7ubj²)�”}”(hŒ]”h]”hŒ]”…”�”}”(hjñ7h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjZ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubjX)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj8ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj%8h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj28h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj8ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hjC8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj@8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jE8Œmodname”NŒ classname”Nj•j˜)�”}”j›]”ja5Œc.aes_gcm_encrypt”†”asbuh1hhj8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj8ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj8ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj:5ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj5h²hh³j5h´Kcubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjý4h²hh³j5h´Kcubah}”(h]”jø4ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³j5h´Kchjú4h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒEncrypt a message with AES-GCM”h]”hŒEncrypt a message with AES-GCM”…”�”}”(hj¦8h²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´Kchj£8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjú4h²hh³j5h´Kcubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j¾8j§j¾8j¨‰j©‰jª‰uh1jh²hhjæ,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È8h]”hŒ Parameters”…”�”}”(hjÊ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÆ8ubah}”(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Â8ubj%)�”}”(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]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hjç8h]”hŒu8 *dst”…”�”}”(hjé8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjå8ubah}”(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´Kehjá8ubjL)�”}”(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.”…”�”}”(hj9h²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ý8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjá8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jü8h´KehjÞ8ubj*)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hj!9h]”hŒ const u8 *src”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj9ubah}”(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´Kfhj9ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe source plaintext data”h]”hŒThe source plaintext data”…”�”}”(hj:9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j69h´Kfhj79ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j69h´KfhjÞ8ubj*)�”}”(hŒg``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ”h]”(j0)�”}”(hŒ``size_t data_len``”h]”j6)�”}”(hjZ9h]”hŒsize_t data_len”…”�”}”(hj\9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjX9ubah}”(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´KhhjT9ubjL)�”}”(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”…”�”}”(hjs9h²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´Kghjp9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjT9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jo9h´KhhjÞ8ubj*)�”}”(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]”(j0)�”}”(hŒ``u8 *authtag``”h]”j6)�”}”(hj”9h]”hŒ u8 *authtag”…”�”}”(hj–9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj’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Ž9ubjL)�”}”(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 ”…”�”}”(hj­9h²hh³Nh´Nubj¶)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjµ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj­9ubhŒ + ”…”�”}”(hj­9h²hh³Nh´Nubj¶)�”}”(hŒ **data_len**”h]”hŒdata_len”…”�”}”(hjÇ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj­9ubhŒ and ”…”�”}”(hj­9h²hh³Nh´Nubj¶)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÙ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj­9ubhŒ must have room for the tag.”…”�”}”(hj­9h²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´Kihjª9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjŽ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j©9h´KlhjÞ8ubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hj:h]”hŒ const u8 *ad”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj: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þ9ubjL)�”}”(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´Kmhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjþ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:h´KmhjÞ8ubj*)�”}”(hŒG``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ”h]”(j0)�”}”(hŒ``size_t ad_len``”h]”j6)�”}”(hj=:h]”hŒ size_t ad_len”…”�”}”(hj?:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj;: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´Knhj7:ubjL)�”}”(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”…”�”}”(hjV:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jR:h´KnhjS:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj7:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jR:h´KnhjÞ8ubj*)�”}”(hŒ```const u8 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used MUST be distinct. ”h]”(j0)�”}”(hŒ``const u8 nonce[static 12]``”h]”j6)�”}”(hjv:h]”hŒconst u8 nonce[static 12]”…”�”}”(hjx:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjt: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´Kohjp:ubjL)�”}”(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�:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j‹:h´KohjŒ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjp:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹:h´KohjÞ8ubj*)�”}”(hŒW``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() ”h]”(j0)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”j6)�”}”(hj¯:h]”hŒconst struct aes_gcm_key *key”…”�”}”(hj±:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj­: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´Kphj©:ubjL)�”}”(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´KphjÅ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj©:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄ:h´KphjÞ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÂ8ubhÞ)�”}”(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´KrhjÂ8ubhÞ)�”}”(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;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´KqhjÂ8ubhÞ)�”}”(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´KthjÂ8ubhÞ)�”}”(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´KuhjÂ8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_decrypt (C function)”Œc.aes_gcm_decrypt”hNt”auh1j hjæ,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”…”�”}”(hjV;h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjR;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Œ ”…”�”}”(hje;h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjR;h²hh³jd;h´K|ubjR)�”}”(hŒaes_gcm_decrypt”h]”jX)�”}”(hŒaes_gcm_decrypt”h]”hŒaes_gcm_decrypt”…”�”}”(hjw;h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjs;ubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjR;h²hh³jd;h´K|ubjR)�”}”(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]”(jX)�”}”(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”j‘Œ reftarget”j˜;Œmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jy;sbŒc.aes_gcm_decrypt”†”asbuh1hhj�;ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶;h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�;ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÄ;h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�;ubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjÑ;h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj�;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”j <Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhjæ;ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&<h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjæ;ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj4<h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjæ;ubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjA<h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjæ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(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&]”uh1jWhjZ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j_<Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhjV<ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{<h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjV<ubjX)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj‰<h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjV<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(hŒconst u8 *authtag”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”jÂ<Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhjž<ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ<h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjž<ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjì<h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjž<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Æuh1jWhj‹;ubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”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”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj-=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j2=Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhj=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj=ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj\=h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj=ubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hji=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(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”j‘Œ reftarget”j‡=Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhj~=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£=h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj~=ubjX)�”}”(hŒad_len”h]”hŒad_len”…”�”}”(hj±=h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj~=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hjch]”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”j‘Œ reftarget”jê=Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhjÆ=ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÆ=ubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÆ=ubj²)�”}”(hj¸7h]”hŒ[”…”�”}”(hj">h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÆ=ubj/)�”}”(hjÆ7h]”hŒstatic”…”�”}”(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á7)�”}”(hŒ12”h]”hŒ12”…”�”}”(hjJ>h²hh³Nh´Nubah}”(h]”h ]”jí7ah"]”h$]”h&]”uh1jà7hjÆ=ubj²)�”}”(hjó7h]”hŒ]”…”�”}”(hjX>h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÆ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubjX)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hjp>h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjl>ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjl>ubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj‹>h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjl>ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjl>ubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hj©>h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¦>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j«>Œmodname”NŒ classname”Nj•j˜)�”}”j›]”j²;Œc.aes_gcm_decrypt”†”asbuh1hhjl>ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ>h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjl>ubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÕ>h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjl>ubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjâ>h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjl>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhj‹;ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjR;h²hh³jd;h´K|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjN;h²hh³jd;h´K|ubah}”(h]”jI;ah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jd;h´K|hjK;h²hubj„)�”}”(hhh]”hÞ)�”}”(hŒDecrypt a message with AES-GCM”h]”hŒDecrypt a message with AES-GCM”…”�”}”(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ƒhjK;h²hh³jd;h´K|ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦j$?j§j$?j¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hX�**Parameters** ``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.?h]”hŒ Parameters”…”�”}”(hj0?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Œ~``u8 *dst`` The destination plaintext data. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hjM?h]”hŒu8 *dst”…”�”}”(hjO?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjK?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~hjG?ubjL)�”}”(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.”…”�”}”(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}hjc?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjG?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jb?h´K~hjD?ubj*)�”}”(hŒ-``const u8 *src`` The source ciphertext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hj‡?h]”hŒ const u8 *src”…”�”}”(hj‰?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj…?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´Khj�?ubjL)�”}”(hhh]”hÞ)�”}”(hŒThe source ciphertext data”h]”hŒThe source ciphertext data”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jœ?h´Khj�?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj�?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœ?h´KhjD?ubj*)�”}”(hŒg``size_t data_len`` Length of plaintext in bytes (and ciphertext excluding the tag): at most 2^36 - 32 ”h]”(j0)�”}”(hŒ``size_t data_len``”h]”j6)�”}”(hjÀ?h]”hŒsize_t data_len”…”�”}”(hjÂ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj¾?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º?ubjL)�”}”(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”…”�”}”(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&]”uh1jKhjº?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÕ?h´K�hjD?ubj*)�”}”(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]”(j0)�”}”(hŒ``const u8 *authtag``”h]”j6)�”}”(hjú?h]”hŒconst u8 *authtag”…”�”}”(hjü?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjø?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ô?ubjL)�”}”(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´K‚hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjô?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j@h´K…hjD?ubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hjj@h]”hŒ const u8 *ad”…”�”}”(hjl@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjh@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†hjd@ubjL)�”}”(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´K†hj€@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjd@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j@h´K†hjD?ubj*)�”}”(hŒG``size_t ad_len`` Length of associated data in bytes: at most 2^61 - 1 ”h]”(j0)�”}”(hŒ``size_t ad_len``”h]”j6)�”}”(hj£@h]”hŒ size_t ad_len”…”�”}”(hj¥@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj¡@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�@ubjL)�”}”(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¼@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¸@h´K‡hj¹@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj�@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¸@h´K‡hjD?ubj*)�”}”(hŒ0``const u8 nonce[static 12]`` The 12-byte nonce ”h]”(j0)�”}”(hŒ``const u8 nonce[static 12]``”h]”j6)�”}”(hjÜ@h]”hŒconst u8 nonce[static 12]”…”�”}”(hjÞ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjÚ@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Ö@ubjL)�”}”(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´Kˆhjò@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjÖ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jñ@h´KˆhjD?ubj*)�”}”(hŒW``const struct aes_gcm_key *key`` The key, already prepared using aes_gcm_preparekey() ”h]”(j0)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”j6)�”}”(hjAh]”hŒconst struct aes_gcm_key *key”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjAubah}”(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‰hjAubjL)�”}”(hhh]”hÞ)�”}”(hŒ4The key, already prepared using aes_gcm_preparekey()”h]”hŒ4The key, already prepared using aes_gcm_preparekey()”…”�”}”(hj.Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j*Ah´K‰hj+Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*Ah´K‰hjD?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj(?ubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjPAh]”hŒ Description”…”�”}”(hjRAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjNAubah}”(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 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.”…”�”}”(hjfAh²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Œ **Context**”h]”j¶)�”}”(hjwAh]”hŒContext”…”�”}”(hjyAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjuAubah}”(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(?ubhÞ)�”}”(hŒ **Return**”h]”j¶)�”}”(hjžAh]”hŒReturn”…”�”}”(hj Ah²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(?ubj )�”}”(hhh]”(j )�”}”(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»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·Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´Aubj )�”}”(hŒ&-EBADMSG if the message is inauthentic”h]”hÞ)�”}”(hjÒAh]”hŒ&-EBADMSG if the message is inauthentic”…”�”}”(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ÐAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´Aubeh}”(h]”h ]”h"]”h$]”h&]”j< jµuh1jÿh³jÉAh´K�hj(?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒaes_gcm_init (C function)”Œc.aes_gcm_init”hNt”auh1j hjæ,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”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj Bh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KšubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj Bh²hh³jBh´KšubjR)�”}”(hŒ aes_gcm_init”h]”jX)�”}”(hŒ aes_gcm_init”h]”hŒ aes_gcm_init”…”�”}”(hj/Bh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj+Bubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj Bh²hh³jBh´KšubjR)�”}”(hŒS(struct aes_gcm_ctx *ctx, const u8 nonce[static 12], const struct aes_gcm_key *key)”h]”(jX)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjKBh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjGBubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXBh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjGBubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hjiBh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjfBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jkBŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j1BsbŒc.aes_gcm_init”†”asbuh1hhjGBubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Bh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjGBubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj—Bh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjGBubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¤Bh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjGBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjCBubjX)�”}”(hŒconst u8 nonce[static 12]”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj½Bh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj¹BubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊBh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¹Bubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÛBh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjØBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jÝBŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j…BŒc.aes_gcm_init”†”asbuh1hhj¹BubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùBh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¹BubjX)�”}”(hŒnonce”h]”hŒnonce”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¹Bubj²)�”}”(hj¸7h]”hŒ[”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¹Bubj/)�”}”(hjÆ7h]”hŒstatic”…”�”}”(hj"Ch²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj¹BubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ch²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¹Bubjá7)�”}”(hŒ12”h]”hŒ12”…”�”}”(hj=Ch²hh³Nh´Nubah}”(h]”h ]”jí7ah"]”h$]”h&]”uh1jà7hj¹Bubj²)�”}”(hjó7h]”hŒ]”…”�”}”(hjKCh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¹Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjCBubjX)�”}”(hŒconst struct aes_gcm_key *key”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hjcCh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj_CubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpCh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj_Cubj/)�”}”(hj2h]”hŒstruct”…”�”}”(hj~Ch²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj_CubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Ch²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj_Cubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_key”h]”hŒ aes_gcm_key”…”�”}”(hjœCh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj™Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jžCŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j…BŒc.aes_gcm_init”†”asbuh1hhj_CubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºCh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj_Cubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÈCh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj_CubjX)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjÕCh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj_Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjCBubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj Bh²hh³jBh´Kšubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjBh²hh³jBh´Kšubah}”(h]”jBah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jBh´KšhjBh²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ÿCh²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üCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjBh²hh³jBh´Kšubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jDj§jDj¨‰j©‰jª‰uh1jh²hhjæ,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!Dh]”hŒ Parameters”…”�”}”(hj#Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjDubah}”(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žhjDubj%)�”}”(hhh]”(j*)�”}”(hŒ6``struct aes_gcm_ctx *ctx`` The context to initialize ”h]”(j0)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”j6)�”}”(hj@Dh]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hjBDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj>Dubah}”(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:DubjL)�”}”(hhh]”hÞ)�”}”(hŒThe context to initialize”h]”hŒThe context to initialize”…”�”}”(hjYDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jUDh´KœhjVDubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj:Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jUDh´Kœhj7Dubj*)�”}”(hŒ�``const u8 nonce[static 12]`` The 12-byte nonce. All (key, nonce) pairs used for encryption or MAC generation MUST be distinct. ”h]”(j0)�”}”(hŒ``const u8 nonce[static 12]``”h]”j6)�”}”(hjyDh]”hŒconst u8 nonce[static 12]”…”�”}”(hj{Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjwDubah}”(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žhjsDubjL)�”}”(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’Dh²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�Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjsDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŽDh´Kžhj7Dubj*)�”}”(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]”(j0)�”}”(hŒ!``const struct aes_gcm_key *key``”h]”j6)�”}”(hj³Dh]”hŒconst struct aes_gcm_key *key”…”�”}”(hjµDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj±Dubah}”(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­DubjL)�”}”(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ÌDh²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ÉDubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj­Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈDh´K¡hj7Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjDubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hjïDh]”hŒ Description”…”�”}”(hjñDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjíDubah}”(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£hjDubhÞ)�”}”(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.”…”�”}”(hjEh²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¢hjDubhÞ)�”}”(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.”…”�”}”(hjEh²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¦hjDubhÞ)�”}”(hŒ(For incremental AES-GCM encryption, use:”h]”hŒ(For incremental AES-GCM encryption, use:”…”�”}”(hj#Eh²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¬hjDubj])�”}”(hhh]”(j )�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hj7Eh]”hŒaes_gcm_init()”…”�”}”(hj9Eh²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®hj5Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2Eubj )�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hjOEh]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hjQEh²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¯hjMEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2Eubj )�”}”(hŒ.aes_gcm_encrypt_update() (any number of times)”h]”hÞ)�”}”(hjgEh]”hŒ.aes_gcm_encrypt_update() (any number of times)”…”�”}”(hjiEh²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°hjeEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2Eubj )�”}”(hŒaes_gcm_encrypt_final() ”h]”hÞ)�”}”(hŒaes_gcm_encrypt_final()”h]”hŒaes_gcm_encrypt_final()”…”�”}”(hj�Eh²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}Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2Eubeh}”(h]”h ]”h"]”h$]”h&]”jÈjÉjÊhjËjÌuh1j\hjDubhÞ)�”}”(hŒ(For incremental AES-GCM decryption, use:”h]”hŒ(For incremental AES-GCM decryption, use:”…”�”}”(hjœEh²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³hjDubj])�”}”(hhh]”(j )�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hj°Eh]”hŒaes_gcm_init()”…”�”}”(hj²Eh²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®Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«Eubj )�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hjÈEh]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hjÊEh²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ÆEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«Eubj )�”}”(hŒ.aes_gcm_decrypt_update() (any number of times)”h]”hÞ)�”}”(hjàEh]”hŒ.aes_gcm_decrypt_update() (any number of times)”…”�”}”(hjâEh²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ÞEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«Eubj )�”}”(hŒaes_gcm_decrypt_final() ”h]”hÞ)�”}”(hŒaes_gcm_decrypt_final()”h]”hŒaes_gcm_decrypt_final()”…”�”}”(hjúEh²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öEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«Eubeh}”(h]”h ]”h"]”h$]”h&]”jÈjÉjÊhjËjÌuh1j\hjDubhÞ)�”}”(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:”…”�”}”(hjFh²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ºhjDubj])�”}”(hhh]”(j )�”}”(hŒaes_gcm_init()”h]”hÞ)�”}”(hj)Fh]”hŒaes_gcm_init()”…”�”}”(hj+Fh²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'Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$Fubj )�”}”(hŒ+aes_gcm_auth_update() (any number of times)”h]”hÞ)�”}”(hjAFh]”hŒ+aes_gcm_auth_update() (any number of times)”…”�”}”(hjCFh²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?Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$Fubj )�”}”(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[Fh²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¿hjWFubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$Fubeh}”(h]”h ]”h"]”h$]”h&]”jÈjÉjÊhjËjÌuh1j\hjDubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjxFh]”hŒContext”…”�”}”(hjzFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjvFubah}”(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ÂhjDubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjŽFh²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ÃhjDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,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 hjæ,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”…”�”}”(hj½Fh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj¹Fh²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ÌFh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¹Fh²hh³jËFh´KÉubjR)�”}”(hŒaes_gcm_auth_update”h]”jX)�”}”(hŒaes_gcm_auth_update”h]”hŒaes_gcm_auth_update”…”�”}”(hjÞFh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÚFubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhj¹Fh²hh³jËFh´KÉubjR)�”}”(hŒ3(struct aes_gcm_ctx *ctx, const u8 *ad, size_t len)”h]”(jX)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjöFubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjöFubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jGŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘jàFsbŒc.aes_gcm_auth_update”†”asbuh1hhjöFubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Gh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjöFubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjFGh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjöFubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjSGh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjöFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjòFubjX)�”}”(hŒ const u8 *ad”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hjlGh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjhGubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjhGubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjŠGh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj‡Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jŒGŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j4GŒc.aes_gcm_auth_update”†”asbuh1hhjhGubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Gh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjhGubj²)�”}”(hjµh]”hŒ*”…”�”}”(hj¶Gh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjhGubjX)�”}”(hŒad”h]”hŒad”…”�”}”(hjÃGh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjhGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjòFubjX)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjßGh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÜGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jáGŒmodname”NŒ classname”Nj•j˜)�”}”j›]”j4GŒc.aes_gcm_auth_update”†”asbuh1hhjØGubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýGh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjØGubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjØGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjòFubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhj¹Fh²hh³jËFh´KÉubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjµFh²hh³jËFh´KÉubah}”(h]”j°Fah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jËFh´KÉhj²Fh²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ-Incrementally process AES-GCM associated data”h]”hŒ-Incrementally process AES-GCM associated data”…”�”}”(hj5Hh²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Éhj2Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj²Fh²hh³jËFh´KÉubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦jMHj§jMHj¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hX¯**Parameters** ``struct aes_gcm_ctx *ctx`` An AES-GCM context ``const u8 *ad`` The associated data ``size_t len`` Number of bytes provided. The caller must ensure that the total associated data length doesn't exceed GCM's limit of 2^61 - 1. **Description** 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¶)�”}”(hjWHh]”hŒ Parameters”…”�”}”(hjYHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjUHubah}”(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ÍhjQHubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct aes_gcm_ctx *ctx`` An AES-GCM context ”h]”(j0)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”j6)�”}”(hjvHh]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hjxHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjtHubah}”(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ÊhjpHubjL)�”}”(hhh]”hÞ)�”}”(hŒAn AES-GCM context”h]”hŒAn AES-GCM context”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j‹Hh´KÊhjŒHubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjpHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹Hh´KÊhjmHubj*)�”}”(hŒ%``const u8 *ad`` The associated data ”h]”(j0)�”}”(hŒ``const u8 *ad``”h]”j6)�”}”(hj¯Hh]”hŒ const u8 *ad”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj­Hubah}”(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©HubjL)�”}”(hhh]”hÞ)�”}”(hŒThe associated data”h]”hŒThe associated data”…”�”}”(hjÈHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÄHh´KËhjÅHubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj©Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄHh´KËhjmHubj*)�”}”(hŒ�``size_t len`` Number of bytes provided. The caller must ensure that the total associated data length doesn't exceed GCM's limit of 2^61 - 1. ”h]”(j0)�”}”(hŒ``size_t len``”h]”j6)�”}”(hjèHh]”hŒ size_t len”…”�”}”(hjêHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjæHubah}”(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âHubjL)�”}”(hhh]”hÞ)�”}”(hŒNumber of bytes provided. The caller must ensure that the total associated data length doesn't exceed GCM's limit of 2^61 - 1.”h]”hŒƒNumber of bytes provided. The caller must ensure that the total associated data length doesn’t exceed GCM’s limit of 2^61 - 1.”…”�”}”(hjIh²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þHubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjâHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jýHh´KÍhjmHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjQHubhÞ)�”}”(hŒ**Description**”h]”j¶)�”}”(hj$Ih]”hŒ Description”…”�”}”(hj&Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj"Iubah}”(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ÏhjQHubhÞ)�”}”(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:Ih²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ÎhjQHubhÞ)�”}”(hŒ **Context**”h]”j¶)�”}”(hjKIh]”hŒContext”…”�”}”(hjMIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjIIubah}”(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ÑhjQHubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjaIh²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ÒhjQHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#aes_gcm_encrypt_update (C function)”Œc.aes_gcm_encrypt_update”hNt”auh1j hjæ,h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒYvoid aes_gcm_encrypt_update (struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”j))�”}”(hŒXvoid aes_gcm_encrypt_update(struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjŒIh²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ŸIh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŒIh²hh³jžIh´K×ubjR)�”}”(hŒaes_gcm_encrypt_update”h]”jX)�”}”(hŒaes_gcm_encrypt_update”h]”hŒaes_gcm_encrypt_update”…”�”}”(hj±Ih²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj­Iubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjŒIh²hh³jžIh´K×ubjR)�”}”(hŒ=(struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(jX)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjÉIubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚIh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÉIubh)�”}”(hhh]”jX)�”}”(hŒ aes_gcm_ctx”h]”hŒ aes_gcm_ctx”…”�”}”(hjëIh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjèIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jíIŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jž)�”}”j‘j³IsbŒc.aes_gcm_encrypt_update”†”asbuh1hhjÉIubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÉIubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÉIubjX)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj&Jh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjÉIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjÅIubjX)�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjBJh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj?Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”jDJŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jJŒc.aes_gcm_encrypt_update”†”asbuh1hhj;JubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Jh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj;Jubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjnJh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj;JubjX)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj{Jh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj;Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjÅIubjX)�”}”(hŒ const u8 *src”h]”(j/)�”}”(hjch]”hŒconst”…”�”}”(hj”Jh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj�JubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Jh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�Jubh)�”}”(hhh]”jX)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj²Jh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj¯Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j´JŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jJŒc.aes_gcm_encrypt_update”†”asbuh1hhj�JubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐJh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj�Jubj²)�”}”(hjµh]”hŒ*”…”�”}”(hjÞJh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�JubjX)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjëJh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhj�Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjÅIubjX)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jX)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”j‘Œ reftarget”j KŒmodname”NŒ classname”Nj•j˜)�”}”j›]”jJŒc.aes_gcm_encrypt_update”†”asbuh1hhjKubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Kh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjKubjX)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj3Kh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jWhjÅIubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jQhjŒIh²hh³jžIh´K×ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjuˆuh1j(jvjwhjˆIh²hh³jžIh´K×ubah}”(h]”jƒIah ]”(j{j|eh"]”h$]”h&]”j€ˆj�)j‚huh1j"h³jžIh´K×hj…Ih²hubj„)�”}”(hhh]”hÞ)�”}”(hŒ'Incrementally encrypt data with AES-GCM”h]”hŒ'Incrementally encrypt data with AES-GCM”…”�”}”(hj]Kh²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×hjZKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj…Ih²hh³jžIh´K×ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j¥j j¦juKj§juKj¨‰j©‰jª‰uh1jh²hhjæ,h³Nh´Nubj¬)�”}”(hXø**Parameters** ``struct aes_gcm_ctx *ctx`` An AES-GCM 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. The caller must ensure that the total number of bytes encrypted doesn't exceed GCM's limit of 2^36 - 32. **Description** This can be called only after all associated data has been processed. **Context** Any context.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjKh]”hŒ Parameters”…”�”}”(hj�Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj}Kubah}”(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ÛhjyKubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct aes_gcm_ctx *ctx`` An AES-GCM context ”h]”(j0)�”}”(hŒ``struct aes_gcm_ctx *ctx``”h]”j6)�”}”(hjžKh]”hŒstruct aes_gcm_ctx *ctx”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjœKubah}”(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˜KubjL)�”}”(hhh]”hÞ)�”}”(hŒAn AES-GCM context”h]”hŒAn AES-GCM context”…”�”}”(hj·Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j³Kh´KØhj´Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj˜Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j³Kh´KØhj•Kubj*)�”}”(hŒw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ”h]”(j0)�”}”(hŒ ``u8 *dst``”h]”j6)�”}”(hj×Kh]”hŒu8 *dst”…”�”}”(hjÙKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjÕKubah}”(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ÑKubjL)�”}”(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ðKh²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íKubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjÑKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jìKh´KÚhj•Kubj*)�”}”(hŒ,``const u8 *src`` The source plaintext data ”h]”(j0)�”}”(hŒ``const u8 *src``”h]”j6)�”}”(hjLh]”hŒ const u8 *src”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjLubah}”(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 LubjL)�”}”(hhh]”hÞ)�”}”(hŒThe source plaintext data”h]”hŒThe source plaintext data”…”�”}”(hj*Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j&Lh´KÛhj'Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j&Lh´KÛhj•Kubj*)�”}”(hŒ•``size_t len`` Number of bytes to encrypt. The caller must ensure that the total number of bytes encrypted doesn't exceed GCM's limit of 2^36 - 32. ”h]”(j0)�”}”(hŒ``size_t len``”h]”j6)�”}”(hjJLh]”hŒ size_t len”…”�”}”(hjLLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjHLubah}”(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ÝhjDLubjL)�”}”(hhh]”hÞ)�”}”(hŒ…Number of bytes to encrypt. The caller must ensure that the total number of bytes encrypted doesn't exceed GCM's limit of 2^36 - 32.”h]”hŒ‰Number of bytes to encrypt. The caller must ensure that the total number of bytes encrypted doesn’t exceed GCM’s limit of 2^36 - 32.”…”�”}”(hjcLh²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&]”uh1jKhjDLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j_Lh´KÝhj•Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjyKubhÞ)�”}”(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ßhjyKubhÞ)�”}”(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œ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ÞhjyKubhÞ)�”}”(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àhjyKubhÞ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(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áhjyKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjæ,h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#aes_gcm_decrypt_update (C function)”Œc.aes_gcm_decrypt_update”hNt”auh1j hjæ,h²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒYvoid aes_gcm_decrypt_update (struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”j))�”}”(hŒXvoid aes_gcm_decrypt_update(struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòLh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjîLh²hh³Œi/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-auth-encryption:20: ./include/crypto/aes-gcm.h”h´KçubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjîLh²hh³jMh´KçubjR)�”}”(hŒaes_gcm_decrypt_update”h]”jX)�”}”(hŒaes_gcm_decrypt_update”h]”hŒaes_gcm_decrypt_update”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jWhjMubah}”(h]”h ]”(jjjkeh"]”h$]”h&]”hÅhÆuh1jQhjîLh²hh³jMh´KçubjR)�”}”(hŒ=(struct aes_gcm_ctx *ctx, u8 *dst, const u8 *src, size_t len)”h]”(jX)�”}”(hŒstruct aes_gcm_ctx *ctx”h]”(j/)�”}”(hj2h]”hŒstruct”…”�”}”(hj/Mh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hj+MubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj