sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget#/translations/zh_CN/crypto/api-aeadmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/zh_TW/crypto/api-aeadmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/it_IT/crypto/api-aeadmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ja_JP/crypto/api-aeadmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ko_KR/crypto/api-aeadmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/sp_SP/crypto/api-aeadmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hJAuthenticated Encryption With Associated Data (AEAD) Algorithm Definitionsh]hJAuthenticated Encryption With Associated Data (AEAD) Algorithm Definitions}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh=/var/lib/git/docbuild/linux/Documentation/crypto/api-aead.rsthKubh paragraph)}(hqThe AEAD cipher API is used with the ciphers of type CRYPTO_ALG_TYPE_AEAD (listed as type "aead" in /proc/crypto)h]huThe AEAD cipher API is used with the ciphers of type CRYPTO_ALG_TYPE_AEAD (listed as type “aead” in /proc/crypto)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKhhhhubh)}(hThe most prominent examples for this type of encryption is GCM and CCM. However, the kernel supports other types of AEAD ciphers which are defined with the following cipher string:h]hThe most prominent examples for this type of encryption is GCM and CCM. However, the kernel supports other types of AEAD ciphers which are defined with the following cipher string:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKhhhhubh block_quote)}(h,authenc(keyed message digest, block cipher) h]h)}(h+authenc(keyed message digest, block cipher)h]h+authenc(keyed message digest, block cipher)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKhhubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h,For example: authenc(hmac(sha256), cbc(aes))h]h,For example: authenc(hmac(sha256), cbc(aes))}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKhhhhubh)}(hXThe example code provided for the symmetric key cipher operation applies here as well. Naturally all *skcipher* symbols must be exchanged the *aead* pendants discussed in the following. In addition, for the AEAD operation, the aead_request_set_ad function must be used to set the pointer to the associated data memory location before performing the encryption or decryption operation. Another deviation from the asynchronous block cipher operation is that the caller should explicitly check for -EBADMSG of the crypto_aead_decrypt. That error indicates an authentication error, i.e. a breach in the integrity of the message. In essence, that -EBADMSG error code is the key bonus an AEAD cipher has over "standard" block chaining modes.h](heThe example code provided for the symmetric key cipher operation applies here as well. Naturally all }(hjhhhNhNubhemphasis)}(h *skcipher*h]hskcipher}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh symbols must be exchanged the }(hjhhhNhNubj )}(h*aead*h]haead}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhXO pendants discussed in the following. In addition, for the AEAD operation, the aead_request_set_ad function must be used to set the pointer to the associated data memory location before performing the encryption or decryption operation. Another deviation from the asynchronous block cipher operation is that the caller should explicitly check for -EBADMSG of the crypto_aead_decrypt. That error indicates an authentication error, i.e. a breach in the integrity of the message. In essence, that -EBADMSG error code is the key bonus an AEAD cipher has over “standard” block chaining modes.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKhhhhubh)}(hMemory Structure:h]hMemory Structure:}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK)hhhhubh)}(hdThe source scatterlist must contain the concatenation of associated data || plaintext or ciphertext.h]hdThe source scatterlist must contain the concatenation of associated data || plaintext or ciphertext.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK+hhhhubh)}(hXThe destination scatterlist has the same layout, except that the plaintext (resp. ciphertext) will grow (resp. shrink) by the authentication tag size during encryption (resp. decryption). The authentication tag is generated during the encryption operation and appended to the ciphertext. During decryption, the authentication tag is consumed along with the ciphertext and used to verify the integrity of the plaintext and the associated data.h]hXThe destination scatterlist has the same layout, except that the plaintext (resp. ciphertext) will grow (resp. shrink) by the authentication tag size during encryption (resp. decryption). The authentication tag is generated during the encryption operation and appended to the ciphertext. During decryption, the authentication tag is consumed along with the ciphertext and used to verify the integrity of the plaintext and the associated data.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK.hhhhubh)}(htIn-place encryption/decryption is enabled by using the same scatterlist pointer for both the source and destination.h]htIn-place encryption/decryption is enabled by using the same scatterlist pointer for both the source and destination.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK5hhhhubh)}(hX&Even in the out-of-place case, space must be reserved in the destination for the associated data, even though it won't be written to. This makes the in-place and out-of-place cases more consistent. It is permissible for the "destination" associated data to alias the "source" associated data.h]hX0Even in the out-of-place case, space must be reserved in the destination for the associated data, even though it won’t be written to. This makes the in-place and out-of-place cases more consistent. It is permissible for the “destination” associated data to alias the “source” associated data.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK8hhhhubh)}(hAs with the other scatterlist crypto APIs, zero-length scatterlist elements are not allowed in the used part of the scatterlist. Thus, if there is no associated data, the first element must point to the plaintext/ciphertext.h]hAs with the other scatterlist crypto APIs, zero-length scatterlist elements are not allowed in the used part of the scatterlist. Thus, if there is no associated data, the first element must point to the plaintext/ciphertext.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhK=hhhhubh)}(hX0To meet the needs of IPsec, a special quirk applies to rfc4106, rfc4309, rfc4543, and rfc7539esp ciphers. For these ciphers, the final 'ivsize' bytes of the associated data buffer must contain a second copy of the IV. This is in addition to the copy passed to aead_request_set_crypt(). These two IV copies must not differ; different implementations of the same algorithm may behave differently in that case. Note that the algorithm might not actually treat the IV as associated data; nevertheless the length passed to aead_request_set_ad() must include it.h]hX4To meet the needs of IPsec, a special quirk applies to rfc4106, rfc4309, rfc4543, and rfc7539esp ciphers. For these ciphers, the final ‘ivsize’ bytes of the associated data buffer must contain a second copy of the IV. This is in addition to the copy passed to aead_request_set_crypt(). These two IV copies must not differ; different implementations of the same algorithm may behave differently in that case. Note that the algorithm might not actually treat the IV as associated data; nevertheless the length passed to aead_request_set_ad() must include it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:4: ./include/crypto/aead.hhKAhhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleaead_request (C struct)c.aead_requesthNtauh1jhhhhhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhNubhdesc)}(hhh](hdesc_signature)}(h aead_requesth]hdesc_signature_line)}(hstruct aead_requesth](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(h aead_requesth]h desc_sig_name)}(hjh]h aead_request}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h AEAD requesth]h AEAD request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKQhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](cstructeh"]h$]h&]domainj6objtypej7desctypej7noindex noindexentrynocontentsentryuh1jhhhhhjhNubh container)}(hX7**Definition**:: struct aead_request { struct crypto_async_request base; unsigned int assoclen; unsigned int cryptlen; u8 *iv; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] ; }; **Members** ``base`` Common attributes for async crypto requests ``assoclen`` Length in bytes of associated data for authentication ``cryptlen`` Length of data to be encrypted or decrypted ``iv`` Initialisation vector ``src`` Source data ``dst`` Destination data ``__ctx`` Start of private context datah](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjGubh:}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKUhjCubh literal_block)}(hstruct aead_request { struct crypto_async_request base; unsigned int assoclen; unsigned int cryptlen; u8 *iv; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] ; };h]hstruct aead_request { struct crypto_async_request base; unsigned int assoclen; unsigned int cryptlen; u8 *iv; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] ; };}hjhsbah}(h]h ]h"]h$]h&]jjuh1jfhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKWhjCubh)}(h **Members**h]jL)}(hjyh]hMembers}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjwubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKahjCubhdefinition_list)}(hhh](hdefinition_list_item)}(h5``base`` Common attributes for async crypto requests h](hterm)}(h``base``h]hliteral)}(hjh]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKShjubh definition)}(hhh]h)}(h+Common attributes for async crypto requestsh]h+Common attributes for async crypto requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKShjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKShjubj)}(hC``assoclen`` Length in bytes of associated data for authentication h](j)}(h ``assoclen``h]j)}(hjh]hassoclen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKThjubj)}(hhh]h)}(h5Length in bytes of associated data for authenticationh]h5Length in bytes of associated data for authentication}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKThjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKThjubj)}(h9``cryptlen`` Length of data to be encrypted or decrypted h](j)}(h ``cryptlen``h]j)}(hjh]hcryptlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKUhjubj)}(hhh]h)}(h+Length of data to be encrypted or decryptedh]h+Length of data to be encrypted or decrypted}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKUhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hKUhjubj)}(h``iv`` Initialisation vector h](j)}(h``iv``h]j)}(hjMh]hiv}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKVhjGubj)}(hhh]h)}(hInitialisation vectorh]hInitialisation vector}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKVhjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjbhKVhjubj)}(h``src`` Source data h](j)}(h``src``h]j)}(hjh]hsrc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKWhjubj)}(hhh]h)}(h Source datah]h Source data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKWhjubj)}(h``dst`` Destination data h](j)}(h``dst``h]j)}(hjh]hdst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKXhjubj)}(hhh]h)}(hDestination datah]hDestination data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKXhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKXhjubj)}(h'``__ctx`` Start of private context datah](j)}(h ``__ctx``h]j)}(hjh]h__ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKXhjubj)}(hhh]h)}(hStart of private context datah]hStart of private context data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKXhjubeh}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhhhhhjhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaead_alg (C struct) c.aead_alghNtauh1jhhhhhjhNubj)}(hhh](j)}(haead_algh]j)}(hstruct aead_algh](j)}(hjh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNhhhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhK_ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNhhhj_hK_ubj)}(haead_algh]j)}(hjLh]haead_alg}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubah}(h]h ](jjeh"]h$]h&]jjuh1jhjNhhhj_hK_ubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjJhhhj_hK_ubah}(h]jEah ](jjeh"]h$]h&]jj)jhuh1jhj_hK_hjGhhubj)}(hhh]h)}(hAEAD cipher definitionh]hAEAD cipher definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKihjhhubah}(h]h ]h"]h$]h&]uh1jhjGhhhj_hK_ubeh}(h]h ](j6structeh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhhhjhNubjB)}(hXr**Definition**:: struct aead_alg { int (*setkey)(struct crypto_aead *tfm, const u8 *key, unsigned int keylen); int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize); int (*encrypt)(struct aead_request *req); int (*decrypt)(struct aead_request *req); int (*init)(struct crypto_aead *tfm); void (*exit)(struct crypto_aead *tfm); unsigned int ivsize; unsigned int maxauthsize; unsigned int chunksize; struct crypto_alg base; }; **Members** ``setkey`` see struct skcipher_alg ``setauthsize`` Set authentication size for the AEAD transformation. This function is used to specify the consumer requested size of the authentication tag to be either generated by the transformation during encryption or the size of the authentication tag to be supplied during the decryption operation. This function is also responsible for checking the authentication tag size for validity. ``encrypt`` see struct skcipher_alg ``decrypt`` see struct skcipher_alg ``init`` Initialize the cryptographic transformation object. This function is used to initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. ``exit`` Deinitialize the cryptographic transformation object. This is a counterpart to **init**, used to remove various changes set in **init**. ``ivsize`` see struct skcipher_alg ``maxauthsize`` Set the maximum authentication tag size supported by the transformation. A transformation may support smaller tag sizes. As the authentication tag is a message digest to ensure the integrity of the encrypted data, a consumer typically wants the largest authentication tag possible as defined by this variable. ``chunksize`` see struct skcipher_alg ``base`` Definition of a generic crypto cipher algorithm.h](h)}(h**Definition**::h](jL)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKmhjubjg)}(hXstruct aead_alg { int (*setkey)(struct crypto_aead *tfm, const u8 *key, unsigned int keylen); int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize); int (*encrypt)(struct aead_request *req); int (*decrypt)(struct aead_request *req); int (*init)(struct crypto_aead *tfm); void (*exit)(struct crypto_aead *tfm); unsigned int ivsize; unsigned int maxauthsize; unsigned int chunksize; struct crypto_alg base; };h]hXstruct aead_alg { int (*setkey)(struct crypto_aead *tfm, const u8 *key, unsigned int keylen); int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize); int (*encrypt)(struct aead_request *req); int (*decrypt)(struct aead_request *req); int (*init)(struct crypto_aead *tfm); void (*exit)(struct crypto_aead *tfm); unsigned int ivsize; unsigned int maxauthsize; unsigned int chunksize; struct crypto_alg base; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jfhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKohjubh)}(h **Members**h]jL)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhK|hjubj)}(hhh](j)}(h#``setkey`` see struct skcipher_alg h](j)}(h ``setkey``h]j)}(hjh]hsetkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKxhjubj)}(hhh]h)}(hsee struct skcipher_algh]hsee struct skcipher_alg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKxhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKxhjubj)}(hX``setauthsize`` Set authentication size for the AEAD transformation. This function is used to specify the consumer requested size of the authentication tag to be either generated by the transformation during encryption or the size of the authentication tag to be supplied during the decryption operation. This function is also responsible for checking the authentication tag size for validity. h](j)}(h``setauthsize``h]j)}(hj:h]h setauthsize}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKwhj4ubj)}(hhh]h)}(hXySet authentication size for the AEAD transformation. This function is used to specify the consumer requested size of the authentication tag to be either generated by the transformation during encryption or the size of the authentication tag to be supplied during the decryption operation. This function is also responsible for checking the authentication tag size for validity.h]hXySet authentication size for the AEAD transformation. This function is used to specify the consumer requested size of the authentication tag to be either generated by the transformation during encryption or the size of the authentication tag to be supplied during the decryption operation. This function is also responsible for checking the authentication tag size for validity.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKqhjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhKwhjubj)}(h$``encrypt`` see struct skcipher_alg h](j)}(h ``encrypt``h]j)}(hjth]hencrypt}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKyhjnubj)}(hhh]h)}(hsee struct skcipher_algh]hsee struct skcipher_alg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKyhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhKyhjubj)}(h$``decrypt`` see struct skcipher_alg h](j)}(h ``decrypt``h]j)}(hjh]hdecrypt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKzhjubj)}(hhh]h)}(hsee struct skcipher_algh]hsee struct skcipher_alg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKzhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKzhjubj)}(hX``init`` Initialize the cryptographic transformation object. This function is used to initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place. h](j)}(h``init``h]j)}(hjh]hinit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhjubj)}(hhh]h)}(hXInitialize the cryptographic transformation object. This function is used to initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.h]hXInitialize the cryptographic transformation object. This function is used to initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhK}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``exit`` Deinitialize the cryptographic transformation object. This is a counterpart to **init**, used to remove various changes set in **init**. h](j)}(h``exit``h]j)}(hj h]hexit}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhjubj)}(hhh]h)}(hDeinitialize the cryptographic transformation object. This is a counterpart to **init**, used to remove various changes set in **init**.h](hODeinitialize the cryptographic transformation object. This is a counterpart to }(hj9hhhNhNubjL)}(h**init**h]hinit}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj9ubh(, used to remove various changes set in }(hj9hhhNhNubjL)}(h**init**h]hinit}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj9ubh.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hKhjubj)}(h#``ivsize`` see struct skcipher_alg h](j)}(h ``ivsize``h]j)}(hj~h]hivsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhK{hjxubj)}(hhh]h)}(hsee struct skcipher_algh]hsee struct skcipher_alg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK{hjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjhK{hjubj)}(hXF``maxauthsize`` Set the maximum authentication tag size supported by the transformation. A transformation may support smaller tag sizes. As the authentication tag is a message digest to ensure the integrity of the encrypted data, a consumer typically wants the largest authentication tag possible as defined by this variable. h](j)}(h``maxauthsize``h]j)}(hjh]h maxauthsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKphjubj)}(hhh]h)}(hX5Set the maximum authentication tag size supported by the transformation. A transformation may support smaller tag sizes. As the authentication tag is a message digest to ensure the integrity of the encrypted data, a consumer typically wants the largest authentication tag possible as defined by this variable.h]hX5Set the maximum authentication tag size supported by the transformation. A transformation may support smaller tag sizes. As the authentication tag is a message digest to ensure the integrity of the encrypted data, a consumer typically wants the largest authentication tag possible as defined by this variable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKkhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKphjubj)}(h&``chunksize`` see struct skcipher_alg h](j)}(h ``chunksize``h]j)}(hjh]h chunksize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhK|hjubj)}(hhh]h)}(hsee struct skcipher_algh]hsee struct skcipher_alg}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK|hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK|hjubj)}(h9``base`` Definition of a generic crypto cipher algorithm.h](j)}(h``base``h]j)}(hj*h]hbase}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhj$ubj)}(hhh]h)}(h0Definition of a generic crypto cipher algorithm.h]h0Definition of a generic crypto cipher algorithm.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhhhhhjhNubh)}(h**Description**h]jL)}(hjmh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjkubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhhhhubh)}(h=All fields except **ivsize** is mandatory and must be filled.h](hAll fields except }(hjhhhNhNubjL)}(h **ivsize**h]hivsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubh! is mandatory and must be filled.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:7: ./include/crypto/aead.hhKhhhhubeh}(h]Hauthenticated-encryption-with-associated-data-aead-algorithm-definitionsah ]h"]Jauthenticated encryption with associated data (aead) algorithm definitionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h?Authenticated Encryption With Associated Data (AEAD) Cipher APIh]h?Authenticated Encryption With Associated Data (AEAD) Cipher API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jcrypto_alloc_aead (C function)c.crypto_alloc_aeadhNtauh1jhjhhhNhNubj)}(hhh](j)}(hQstruct crypto_aead * crypto_alloc_aead (const char *alg_name, u32 type, u32 mask)h]j)}(hOstruct crypto_aead *crypto_alloc_aead(const char *alg_name, u32 type, u32 mask)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}j crypto_alloc_aeadsbc.crypto_alloc_aeadasbuh1hhjhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubhdesc_sig_punctuation)}(h*h]h*}(hj.hhhNhNubah}(h]h ]pah"]h$]h&]uh1j,hjhhhjhKubj)}(hcrypto_alloc_aeadh]j)}(hjh]hcrypto_alloc_aead}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubhdesc_parameterlist)}(h*(const char *alg_name, u32 type, u32 mask)h](hdesc_parameter)}(hconst char *alg_nameh](j)}(hconsth]hconst}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj)}(h h]h }(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubhdesc_sig_keyword_type)}(hcharh]hchar}(hj~hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j|hj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj\ubj)}(halg_nameh]halg_name}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjVubj[)}(hu32 typeh](h)}(hhh]j)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]jc.crypto_alloc_aeadasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(htypeh]htype}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjVubj[)}(hu32 maskh](h)}(hhh]j)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj modnameN classnameNjj)}j]jc.crypto_alloc_aeadasbuh1hhj ubj)}(h h]h }(hj* hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hmaskh]hmask}(hj8 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjVubeh}(h]h ]h"]h$]h&]jjuh1jThjhhhjhKubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h)}(hallocate AEAD cipher handleh]hallocate AEAD cipher handle}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj_ hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jz j=jz j>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the AEAD cipher ``u32 type`` specifies the type of the cipher ``u32 mask`` specifies the mask for the cipher **Description** Allocate a cipher handle for an AEAD. The returned struct crypto_aead is the cipher handle that is required for any subsequent API invocation for that AEAD. **Return** allocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.h](h)}(h**Parameters**h]jL)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj~ ubj)}(hhh](j)}(hd``const char *alg_name`` is the cra_name / name or cra_driver_name / driver name of the AEAD cipher h](j)}(h``const char *alg_name``h]j)}(hj h]hconst char *alg_name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(hJis the cra_name / name or cra_driver_name / driver name of the AEAD cipherh]hJis the cra_name / name or cra_driver_name / driver name of the AEAD cipher}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h.``u32 type`` specifies the type of the cipher h](j)}(h ``u32 type``h]j)}(hj h]hu32 type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(h specifies the type of the cipherh]h specifies the type of the cipher}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h/``u32 mask`` specifies the mask for the cipher h](j)}(h ``u32 mask``h]j)}(hj h]hu32 mask}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(h!specifies the mask for the cipherh]h!specifies the mask for the cipher}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ hKhj, ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj+ hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj~ ubh)}(h**Description**h]jL)}(hjQ h]h Description}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjO ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj~ ubh)}(hAllocate a cipher handle for an AEAD. The returned struct crypto_aead is the cipher handle that is required for any subsequent API invocation for that AEAD.h]hAllocate a cipher handle for an AEAD. The returned struct crypto_aead is the cipher handle that is required for any subsequent API invocation for that AEAD.}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj~ ubh)}(h **Return**h]jL)}(hjx h]hReturn}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjv ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj~ ubj)}(hhh]j)}(hsallocated cipher handle in case of success; IS_ERR() is true in case of an error, PTR_ERR() returns the error code.h](j)}(hDallocated cipher handle in case of success; IS_ERR() is true in caseh]hDallocated cipher handle in case of success; IS_ERR() is true in case}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(h.of an error, PTR_ERR() returns the error code.h]h.of an error, PTR_ERR() returns the error code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj~ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jcrypto_free_aead (C function)c.crypto_free_aeadhNtauh1jhjhhhNhNubj)}(hhh](j)}(h/void crypto_free_aead (struct crypto_aead *tfm)h]j)}(h.void crypto_free_aead(struct crypto_aead *tfm)h](j})}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubj)}(hcrypto_free_aeadh]j)}(hcrypto_free_aeadh]hcrypto_free_aead}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKubjU)}(h(struct crypto_aead *tfm)h]j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hj% hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! ubj)}(h h]h }(hj2 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! ubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjC hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjE modnameN classnameNjj)}j]j)}j j sbc.crypto_free_aeadasbuh1hhj! ubj)}(h h]h }(hjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! ubj-)}(hj0h]h*}(hjq hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj! ubj)}(htfmh]htfm}(hj~ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubah}(h]h ]h"]h$]h&]jjuh1jThj hhhj hKubeh}(h]h ]h"]h$]h&]jjj uh1jj j hj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKhj hhubj)}(hhh]h)}(hzeroize and free aead handleh]hzeroize and free aead handle}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j j=j j>j?j@uh1jhhhjhNhNubjB)}(h**Parameters** ``struct crypto_aead *tfm`` cipher handle to be freed **Description** If **tfm** is a NULL or error pointer, this function does nothing.h](h)}(h**Parameters**h]jL)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]j)}(h6``struct crypto_aead *tfm`` cipher handle to be freed h](j)}(h``struct crypto_aead *tfm``h]j)}(hj h]hstruct crypto_aead *tfm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(hcipher handle to be freedh]hcipher handle to be freed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jL)}(hj$ h]h Description}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj" ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubh)}(hBIf **tfm** is a NULL or error pointer, this function does nothing.h](hIf }(hj: hhhNhNubjL)}(h**tfm**h]htfm}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj: ubh8 is a NULL or error pointer, this function does nothing.}(hj: hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jcrypto_aead_ivsize (C function)c.crypto_aead_ivsizehNtauh1jhjhhhNhNubj)}(hhh](j)}(h9unsigned int crypto_aead_ivsize (struct crypto_aead *tfm)h]j)}(h8unsigned int crypto_aead_ivsize(struct crypto_aead *tfm)h](j})}(hunsignedh]hunsigned}(hj{ hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjw hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw hhhj hKubj})}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjw hhhj hKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw hhhj hKubj)}(hcrypto_aead_ivsizeh]j)}(hcrypto_aead_ivsizeh]hcrypto_aead_ivsize}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjw hhhj hKubjU)}(h(struct crypto_aead *tfm)h]j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj modnameN classnameNjj)}j]j)}j j sbc.crypto_aead_ivsizeasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj-)}(hj0h]h*}(hj hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj ubj)}(htfmh]htfm}(hj- hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubah}(h]h ]h"]h$]h&]jjuh1jThjw hhhj hKubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjs hhhj hKubah}(h]jn ah ](jjeh"]h$]h&]jj)jhuh1jhj hKhjp hhubj)}(hhh]h)}(hobtain IV sizeh]hobtain IV size}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjT hhubah}(h]h ]h"]h$]h&]uh1jhjp hhhj hKubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jo j=jo j>j?j@uh1jhhhjhNhNubjB)}(h**Parameters** ``struct crypto_aead *tfm`` cipher handle **Description** The size of the IV for the aead referenced by the cipher handle is returned. This IV size may be zero if the cipher does not need an IV. **Return** IV size in bytesh](h)}(h**Parameters**h]jL)}(hjy h]h Parameters}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjw ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjs ubj)}(hhh]j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hj h]hstruct crypto_aead *tfm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj ubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjs ubh)}(h**Description**h]jL)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjs ubh)}(hThe size of the IV for the aead referenced by the cipher handle is returned. This IV size may be zero if the cipher does not need an IV.h]hThe size of the IV for the aead referenced by the cipher handle is returned. This IV size may be zero if the cipher does not need an IV.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjs ubh)}(h **Return**h]jL)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjs ubh)}(hIV size in bytesh]hIV size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjs ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!crypto_aead_authsize (C function)c.crypto_aead_authsizehNtauh1jhjhhhNhNubj)}(hhh](j)}(h;unsigned int crypto_aead_authsize (struct crypto_aead *tfm)h]j)}(h:unsigned int crypto_aead_authsize(struct crypto_aead *tfm)h](j})}(hunsignedh]hunsigned}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj;hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhhjMhKubj})}(hinth]hint}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj;hhhjMhKubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhhjMhKubj)}(hcrypto_aead_authsizeh]j)}(hcrypto_aead_authsizeh]hcrypto_aead_authsize}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]jjuh1jhj;hhhjMhKubjU)}(h(struct crypto_aead *tfm)h]j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j)}j j~sbc.crypto_aead_authsizeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(htfmh]htfm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjubah}(h]h ]h"]h$]h&]jjuh1jThj;hhhjMhKubeh}(h]h ]h"]h$]h&]jjj uh1jj j hj7hhhjMhKubah}(h]j2ah ](jjeh"]h$]h&]jj)jhuh1jhjMhKhj4hhubj)}(hhh]h)}(h'obtain maximum authentication data sizeh]h'obtain maximum authentication data size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj4hhhjMhKubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j3j=j3j>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct crypto_aead *tfm`` cipher handle **Description** The maximum size of the authentication data for the AEAD cipher referenced by the AEAD cipher handle is returned. The authentication data size may be zero if the cipher implements a hard-coded maximum. The authentication data may also be known as "tag value". **Return** authentication data size / tag size in bytesh](h)}(h**Parameters**h]jL)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubj)}(hhh]j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hj\h]hstruct crypto_aead *tfm}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhjVubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjqhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h**Description**h]jL)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubh)}(hThe maximum size of the authentication data for the AEAD cipher referenced by the AEAD cipher handle is returned. The authentication data size may be zero if the cipher implements a hard-coded maximum.h]hThe maximum size of the authentication data for the AEAD cipher referenced by the AEAD cipher handle is returned. The authentication data size may be zero if the cipher implements a hard-coded maximum.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubh)}(h9The authentication data may also be known as "tag value".h]h=The authentication data may also be known as “tag value”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubh)}(h **Return**h]jL)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubh)}(h,authentication data size / tag size in bytesh]h,authentication data size / tag size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhKhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"crypto_aead_blocksize (C function)c.crypto_aead_blocksizehNtauh1jhjhhhNhNubj)}(hhh](j)}(hj?j@uh1jhhhjhNhNubjB)}(hX=**Parameters** ``struct crypto_aead *tfm`` cipher handle **Description** The block size for the AEAD referenced with the cipher handle is returned. The caller may use that information to allocate appropriate memory for the data returned by the encryption or decryption operation **Return** block size of cipherh](h)}(h**Parameters**h]jL)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj ubj)}(hhh]j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hj/h]hstruct crypto_aead *tfm}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj)ubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjEubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhMhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jL)}(hjjh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjhubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj ubh)}(hThe block size for the AEAD referenced with the cipher handle is returned. The caller may use that information to allocate appropriate memory for the data returned by the encryption or decryption operationh]hThe block size for the AEAD referenced with the cipher handle is returned. The caller may use that information to allocate appropriate memory for the data returned by the encryption or decryption operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj ubh)}(h **Return**h]jL)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj ubh)}(hblock size of cipherh]hblock size of cipher}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jcrypto_aead_setkey (C function)c.crypto_aead_setkeyhNtauh1jhjhhhNhNubj)}(hhh](j)}(hTint crypto_aead_setkey (struct crypto_aead *tfm, const u8 *key, unsigned int keylen)h]j)}(hSint crypto_aead_setkey(struct crypto_aead *tfm, const u8 *key, unsigned int keylen)h](j})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM?ubj)}(hcrypto_aead_setkeyh]j)}(hcrypto_aead_setkeyh]hcrypto_aead_setkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM?ubjU)}(h=(struct crypto_aead *tfm, const u8 *key, unsigned int keylen)h](j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj3modnameN classnameNjj)}j]j)}j jsbc.crypto_aead_setkeyasbuh1hhjubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hj_hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(htfmh]htfm}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubj[)}(h const u8 *keyh](j)}(hjbh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]jMc.crypto_aead_setkeyasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubj[)}(hunsigned int keylenh](j})}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hkeylenh]hkeylen}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubeh}(h]h ]h"]h$]h&]jjuh1jThjhhhjhM?ubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhM?ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhM?hjhhubj)}(hhh]h)}(hset key for cipherh]hset key for cipher}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM0hjThhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM?ubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<joj=joj>j?j@uh1jhhhjhNhNubjB)}(hXD**Parameters** ``struct crypto_aead *tfm`` cipher handle ``const u8 *key`` buffer holding the key ``unsigned int keylen`` length of the key in bytes **Description** The caller provided key is set for the AEAD referenced by the cipher handle. Note, the key length determines the cipher type. Many block ciphers implement different cipher modes depending on the key size, such as AES-128 vs AES-192 vs. AES-256. When providing a 16 byte key for an AES cipher handle, AES-128 is performed. **Return** 0 if the setting of the key was successful; < 0 if an error occurredh](h)}(h**Parameters**h]jL)}(hjyh]h Parameters}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjwubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM4hjsubj)}(hhh](j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hjh]hstruct crypto_aead *tfm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM1hjubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM1hjubj)}(h)``const u8 *key`` buffer holding the key h](j)}(h``const u8 *key``h]j)}(hjh]h const u8 *key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM2hjubj)}(hhh]h)}(hbuffer holding the keyh]hbuffer holding the key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM2hjubj)}(h3``unsigned int keylen`` length of the key in bytes h](j)}(h``unsigned int keylen``h]j)}(hj h]hunsigned int keylen}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM3hjubj)}(hhh]h)}(hlength of the key in bytesh]hlength of the key in bytes}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM3hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM3hjubeh}(h]h ]h"]h$]h&]uh1jhjsubh)}(h**Description**h]jL)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjCubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM5hjsubh)}(hLThe caller provided key is set for the AEAD referenced by the cipher handle.h]hLThe caller provided key is set for the AEAD referenced by the cipher handle.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM5hjsubh)}(hNote, the key length determines the cipher type. Many block ciphers implement different cipher modes depending on the key size, such as AES-128 vs AES-192 vs. AES-256. When providing a 16 byte key for an AES cipher handle, AES-128 is performed.h]hNote, the key length determines the cipher type. Many block ciphers implement different cipher modes depending on the key size, such as AES-128 vs AES-192 vs. AES-256. When providing a 16 byte key for an AES cipher handle, AES-128 is performed.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM8hjsubh)}(h **Return**h]jL)}(hj{h]hReturn}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjyubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM=hjsubh)}(hD0 if the setting of the key was successful; < 0 if an error occurredh]hD0 if the setting of the key was successful; < 0 if an error occurred}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM=hjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$crypto_aead_setauthsize (C function)c.crypto_aead_setauthsizehNtauh1jhjhhhNhNubj)}(hhh](j)}(hLint crypto_aead_setauthsize (struct crypto_aead *tfm, unsigned int authsize)h]j)}(hKint crypto_aead_setauthsize(struct crypto_aead *tfm, unsigned int authsize)h](j})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMLubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMLubj)}(hcrypto_aead_setauthsizeh]j)}(hcrypto_aead_setauthsizeh]hcrypto_aead_setauthsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMLubjU)}(h0(struct crypto_aead *tfm, unsigned int authsize)h](j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j)}j jsbc.crypto_aead_setauthsizeasbuh1hhjubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hjIhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(htfmh]htfm}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjubj[)}(hunsigned int authsizeh](j})}(hunsignedh]hunsigned}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjkubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(hauthsizeh]hauthsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjubeh}(h]h ]h"]h$]h&]jjuh1jThjhhhjhMLubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhMLubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMLhjhhubj)}(hhh]h)}(hset authentication data sizeh]hset authentication data size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMChjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMLubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhjhNhNubjB)}(hXi**Parameters** ``struct crypto_aead *tfm`` cipher handle ``unsigned int authsize`` size of the authentication data / tag in bytes **Description** Set the authentication data size / tag size. AEAD requires an authentication tag (or MAC) in addition to the associated data. **Return** 0 if the setting of the key was successful; < 0 if an error occurredh](h)}(h**Parameters**h]jL)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMGhjubj)}(hhh](j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hjh]hstruct crypto_aead *tfm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMDhj ubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMDhj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hMDhj ubj)}(hI``unsigned int authsize`` size of the authentication data / tag in bytes h](j)}(h``unsigned int authsize``h]j)}(hjKh]hunsigned int authsize}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMEhjEubj)}(hhh]h)}(h.size of the authentication data / tag in bytesh]h.size of the authentication data / tag in bytes}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMEhjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj`hMEhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jL)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMGhjubh)}(h}Set the authentication data size / tag size. AEAD requires an authentication tag (or MAC) in addition to the associated data.h]h}Set the authentication data size / tag size. AEAD requires an authentication tag (or MAC) in addition to the associated data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMGhjubh)}(h **Return**h]jL)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMJhjubh)}(hD0 if the setting of the key was successful; < 0 if an error occurredh]hD0 if the setting of the key was successful; < 0 if an error occurred}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMJhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j crypto_aead_encrypt (C function)c.crypto_aead_encrypthNtauh1jhjhhhNhNubj)}(hhh](j)}(h2int crypto_aead_encrypt (struct aead_request *req)h]j)}(h1int crypto_aead_encrypt(struct aead_request *req)h](j})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMfubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMfubj)}(hcrypto_aead_encrypth]j)}(hcrypto_aead_encrypth]hcrypto_aead_encrypt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMfubjU)}(h(struct aead_request *req)h]j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubh)}(hhh]j)}(h aead_requesth]h aead_request}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjOmodnameN classnameNjj)}j]j)}j jsbc.crypto_aead_encryptasbuh1hhj+ubj)}(h h]h }(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj-)}(hj0h]h*}(hj{hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj+ubj)}(hreqh]hreq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj'ubah}(h]h ]h"]h$]h&]jjuh1jThjhhhjhMfubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhMfubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMfhjhhubj)}(hhh]h)}(hencrypt plaintexth]hencrypt plaintext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMThjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMfubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhjhNhNubjB)}(hXk**Parameters** ``struct aead_request *req`` reference to the aead_request handle that holds all information needed to perform the cipher operation **Description** Encrypt plaintext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions. IMPORTANT NOTE The encryption operation creates the authentication data / tag. That data is concatenated with the created ciphertext. The ciphertext memory size is therefore the given number of block cipher blocks + the size defined by the crypto_aead_setauthsize invocation. The caller must ensure that sufficient memory is available for the ciphertext and the authentication tag. **Return** 0 if the cipher operation was successful; < 0 if an error occurredh](h)}(h**Parameters**h]jL)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMXhjubj)}(hhh]j)}(h``struct aead_request *req`` reference to the aead_request handle that holds all information needed to perform the cipher operation h](j)}(h``struct aead_request *req``h]j)}(hjh]hstruct aead_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMVhjubj)}(hhh]h)}(hfreference to the aead_request handle that holds all information needed to perform the cipher operationh]hfreference to the aead_request handle that holds all information needed to perform the cipher operation}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMUhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMVhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jL)}(hj/h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj-ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMXhjubh)}(hEncrypt plaintext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions.h]hEncrypt plaintext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMXhjubj)}(hhh]j)}(hX~IMPORTANT NOTE The encryption operation creates the authentication data / tag. That data is concatenated with the created ciphertext. The ciphertext memory size is therefore the given number of block cipher blocks + the size defined by the crypto_aead_setauthsize invocation. The caller must ensure that sufficient memory is available for the ciphertext and the authentication tag. h](j)}(hIIMPORTANT NOTE The encryption operation creates the authentication data /h]hIIMPORTANT NOTE The encryption operation creates the authentication data /}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMbhjWubj)}(hhh]h)}(hX3tag. That data is concatenated with the created ciphertext. The ciphertext memory size is therefore the given number of block cipher blocks + the size defined by the crypto_aead_setauthsize invocation. The caller must ensure that sufficient memory is available for the ciphertext and the authentication tag.h]hX3tag. That data is concatenated with the created ciphertext. The ciphertext memory size is therefore the given number of block cipher blocks + the size defined by the crypto_aead_setauthsize invocation. The caller must ensure that sufficient memory is available for the ciphertext and the authentication tag.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM]hjjubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjihMbhjTubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]jL)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMdhjubh)}(hB0 if the cipher operation was successful; < 0 if an error occurredh]hB0 if the cipher operation was successful; < 0 if an error occurred}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMdhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j crypto_aead_decrypt (C function)c.crypto_aead_decrypthNtauh1jhjhhhNhNubj)}(hhh](j)}(h2int crypto_aead_decrypt (struct aead_request *req)h]j)}(h1int crypto_aead_decrypt(struct aead_request *req)h](j})}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM~ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM~ubj)}(hcrypto_aead_decrypth]j)}(hcrypto_aead_decrypth]hcrypto_aead_decrypt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM~ubjU)}(h(struct aead_request *req)h]j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h aead_requesth]h aead_request}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj2modnameN classnameNjj)}j]j)}j jsbc.crypto_aead_decryptasbuh1hhjubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hj^hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(hreqh]hreq}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj ubah}(h]h ]h"]h$]h&]jjuh1jThjhhhjhM~ubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhM~ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhM~hjhhubj)}(hhh]h)}(hdecrypt ciphertexth]hdecrypt ciphertext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMihjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM~ubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct aead_request *req`` reference to the aead_request handle that holds all information needed to perform the cipher operation **Description** Decrypt ciphertext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions. IMPORTANT NOTE The caller must concatenate the ciphertext followed by the authentication data / tag. That authentication data / tag must have the size defined by the crypto_aead_setauthsize invocation. **Return** 0 if the cipher operation was successful; -EBADMSG: The AEAD cipher operation performs the authentication of the data during the decryption operation. Therefore, the function returns this error if the authentication of the ciphertext was unsuccessful (i.e. the integrity of the ciphertext or the associated data was violated); < 0 if an error occurred.h](h)}(h**Parameters**h]jL)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMmhjubj)}(hhh]j)}(h``struct aead_request *req`` reference to the aead_request handle that holds all information needed to perform the cipher operation h](j)}(h``struct aead_request *req``h]j)}(hjh]hstruct aead_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMkhjubj)}(hhh]h)}(hfreference to the aead_request handle that holds all information needed to perform the cipher operationh]hfreference to the aead_request handle that holds all information needed to perform the cipher operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMkhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jL)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMmhjubh)}(hDecrypt ciphertext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions.h]hDecrypt ciphertext data using the aead_request handle. That data structure and how it is filled with data is discussed with the aead_request_* functions.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMmhjubj)}(hhh]j)}(hIMPORTANT NOTE The caller must concatenate the ciphertext followed by the authentication data / tag. That authentication data / tag must have the size defined by the crypto_aead_setauthsize invocation. h](j)}(hIIMPORTANT NOTE The caller must concatenate the ciphertext followed by theh]hIIMPORTANT NOTE The caller must concatenate the ciphertext followed by the}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMthj:ubj)}(hhh]h)}(hauthentication data / tag. That authentication data / tag must have the size defined by the crypto_aead_setauthsize invocation.h]hauthentication data / tag. That authentication data / tag must have the size defined by the crypto_aead_setauthsize invocation.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMrhjMubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjLhMthj7ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]jL)}(hjsh]hReturn}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjqubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMvhjubj)}(hhh]j)}(hX`0 if the cipher operation was successful; -EBADMSG: The AEAD cipher operation performs the authentication of the data during the decryption operation. Therefore, the function returns this error if the authentication of the ciphertext was unsuccessful (i.e. the integrity of the ciphertext or the associated data was violated); < 0 if an error occurred.h](j)}(h<0 if the cipher operation was successful; -EBADMSG: The AEADh]h<0 if the cipher operation was successful; -EBADMSG: The AEAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhM{hjubj)}(hhh]h)}(hX#cipher operation performs the authentication of the data during the decryption operation. Therefore, the function returns this error if the authentication of the ciphertext was unsuccessful (i.e. the integrity of the ciphertext or the associated data was violated); < 0 if an error occurred.h]hX#cipher operation performs the authentication of the data during the decryption operation. Therefore, the function returns this error if the authentication of the ciphertext was unsuccessful (i.e. the integrity of the ciphertext or the associated data was violated); < 0 if an error occurred.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:13: ./include/crypto/aead.hhMxhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM{hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubeh}(h]=authenticated-encryption-with-associated-data-aead-cipher-apiah ]h"]?authenticated encryption with associated data (aead) cipher apiah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Asynchronous AEAD Request Handleh]h Asynchronous AEAD Request Handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX{The aead_request data structure contains all pointers to data required for the AEAD cipher operation. This includes the cipher handle (which can be used by multiple aead_request instances), pointer to plaintext and ciphertext, asynchronous callback function, etc. It acts as a handle to the aead_request_* API calls in a similar way as AEAD handle to the crypto_aead_* API calls.h]hX{The aead_request data structure contains all pointers to data required for the AEAD cipher operation. This includes the cipher handle (which can be used by multiple aead_request instances), pointer to plaintext and ciphertext, asynchronous callback function, etc. It acts as a handle to the aead_request_* API calls in a similar way as AEAD handle to the crypto_aead_* API calls.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:19: ./include/crypto/aead.hhMhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j crypto_aead_reqsize (C function)c.crypto_aead_reqsizehNtauh1jhjhhhNhNubj)}(hhh](j)}(h:unsigned int crypto_aead_reqsize (struct crypto_aead *tfm)h]j)}(h9unsigned int crypto_aead_reqsize(struct crypto_aead *tfm)h](j})}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj})}(hinth]hint}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhjhMubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hcrypto_aead_reqsizeh]j)}(hcrypto_aead_reqsizeh]hcrypto_aead_reqsize}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubjU)}(h(struct crypto_aead *tfm)h]j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j)}j jJsbc.crypto_aead_reqsizeasbuh1hhj`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj`ubj)}(htfmh]htfm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj\ubah}(h]h ]h"]h$]h&]jjuh1jThjhhhjhMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]h)}(h)obtain size of the request data structureh]h)obtain size of the request data structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct crypto_aead *tfm`` cipher handle **Return** number of bytesh](h)}(h**Parameters**h]jL)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubj)}(hhh]j)}(h*``struct crypto_aead *tfm`` cipher handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hj(h]hstruct crypto_aead *tfm}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj"ubj)}(hhh]h)}(h cipher handleh]h cipher handle}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj>ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]jL)}(hjch]hReturn}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjaubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubh)}(hnumber of bytesh]hnumber of bytes}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!aead_request_set_tfm (C function)c.aead_request_set_tfmhNtauh1jhjhhhNhNubj)}(hhh](j)}(hMvoid aead_request_set_tfm (struct aead_request *req, struct crypto_aead *tfm)h]j)}(hLvoid aead_request_set_tfm(struct aead_request *req, struct crypto_aead *tfm)h](j})}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(haead_request_set_tfmh]j)}(haead_request_set_tfmh]haead_request_set_tfm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubjU)}(h3(struct aead_request *req, struct crypto_aead *tfm)h](j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h aead_requesth]h aead_request}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j)}j jsbc.aead_request_set_tfmasbuh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj-)}(hj0h]h*}(hj1hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjubj)}(hreqh]hreq}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjubj[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjwmodnameN classnameNjj)}j]jc.aead_request_set_tfmasbuh1hhjSubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjSubj)}(htfmh]htfm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjubeh}(h]h ]h"]h$]h&]jjuh1jThjhhhjhMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]h)}(h)update cipher handle reference in requesth]h)update cipher handle reference in request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jj=jj>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct aead_request *req`` request handle to be modified ``struct crypto_aead *tfm`` cipher handle that shall be added to the request handle **Description** Allow the caller to replace the existing aead handle in the request data structure with a different one.h](h)}(h**Parameters**h]jL)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubj)}(hhh](j)}(h;``struct aead_request *req`` request handle to be modified h](j)}(h``struct aead_request *req``h]j)}(hjh]hstruct aead_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubj)}(hhh]h)}(hrequest handle to be modifiedh]hrequest handle to be modified}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.hMhjubj)}(hT``struct crypto_aead *tfm`` cipher handle that shall be added to the request handle h](j)}(h``struct crypto_aead *tfm``h]j)}(hjRh]hstruct crypto_aead *tfm}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjLubj)}(hhh]h)}(h7cipher handle that shall be added to the request handleh]h7cipher handle that shall be added to the request handle}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhjghMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jL)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubh)}(hhAllow the caller to replace the existing aead handle in the request data structure with a different one.h]hhAllow the caller to replace the existing aead handle in the request data structure with a different one.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaead_request_alloc (C function)c.aead_request_allochNtauh1jhjhhhNhNubj)}(hhh](j)}(hMstruct aead_request * aead_request_alloc (struct crypto_aead *tfm, gfp_t gfp)h]j)}(hKstruct aead_request *aead_request_alloc(struct crypto_aead *tfm, gfp_t gfp)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j)}(h aead_requesth]h aead_request}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j)}j aead_request_allocsbc.aead_request_allocasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj-)}(hj0h]h*}(hj hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjhhhjhMubj)}(haead_request_alloch]j)}(hjh]haead_request_alloc}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubjU)}(h$(struct crypto_aead *tfm, gfp_t gfp)h](j[)}(hstruct crypto_aead *tfmh](j)}(hjh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hhh]j)}(h crypto_aeadh]h crypto_aead}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjlmodnameN classnameNjj)}j]j c.aead_request_allocasbuh1hhjHubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj-)}(hj0h]h*}(hjhhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjHubj)}(htfmh]htfm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjDubj[)}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjmodnameN classnameNjj)}j]j c.aead_request_allocasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hgfph]hgfp}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjDubeh}(h]h ]h"]h$]h&]jjuh1jThjhhhjhMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]h)}(hallocate request data structureh]hallocate request data structure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j- j=j- j>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct crypto_aead *tfm`` cipher handle to be registered with the request ``gfp_t gfp`` memory allocation flag that is handed to kmalloc by the API call. **Description** Allocate the request data structure that must be used with the AEAD encrypt and decrypt API calls. During the allocation, the provided aead handle is registered in the request data structure. **Return** allocated request handle in case of success, or NULL if out of memoryh](h)}(h**Parameters**h]jL)}(hj7 h]h Parameters}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj5 ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1 ubj)}(hhh](j)}(hL``struct crypto_aead *tfm`` cipher handle to be registered with the request h](j)}(h``struct crypto_aead *tfm``h]j)}(hjV h]hstruct crypto_aead *tfm}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjP ubj)}(hhh]h)}(h/cipher handle to be registered with the requesth]h/cipher handle to be registered with the request}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk hMhjl ubah}(h]h ]h"]h$]h&]uh1jhjP ubeh}(h]h ]h"]h$]h&]uh1jhjk hMhjM ubj)}(hP``gfp_t gfp`` memory allocation flag that is handed to kmalloc by the API call. h](j)}(h ``gfp_t gfp``h]j)}(hj h]h gfp_t gfp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj ubj)}(hhh]h)}(hAmemory allocation flag that is handed to kmalloc by the API call.h]hAmemory allocation flag that is handed to kmalloc by the API call.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhjM ubeh}(h]h ]h"]h$]h&]uh1jhj1 ubh)}(h**Description**h]jL)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1 ubh)}(hAllocate the request data structure that must be used with the AEAD encrypt and decrypt API calls. During the allocation, the provided aead handle is registered in the request data structure.h]hAllocate the request data structure that must be used with the AEAD encrypt and decrypt API calls. During the allocation, the provided aead handle is registered in the request data structure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1 ubh)}(h **Return**h]jL)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1 ubh)}(hEallocated request handle in case of success, or NULL if out of memoryh]hEallocated request handle in case of success, or NULL if out of memory}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaead_request_free (C function)c.aead_request_freehNtauh1jhjhhhNhNubj)}(hhh](j)}(h1void aead_request_free (struct aead_request *req)h]j)}(h0void aead_request_free(struct aead_request *req)h](j})}(hvoidh]hvoid}(hj6!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj2!hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hjE!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2!hhhjD!hMubj)}(haead_request_freeh]j)}(haead_request_freeh]haead_request_free}(hjW!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj2!hhhjD!hMubjU)}(h(struct aead_request *req)h]j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hjs!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo!ubh)}(hhh]j)}(h aead_requesth]h aead_request}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj!modnameN classnameNjj)}j]j)}j jY!sbc.aead_request_freeasbuh1hhjo!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo!ubj-)}(hj0h]h*}(hj!hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjo!ubj)}(hreqh]hreq}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhjk!ubah}(h]h ]h"]h$]h&]jjuh1jThj2!hhhjD!hMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hj.!hhhjD!hMubah}(h]j)!ah ](jjeh"]h$]h&]jj)jhuh1jhjD!hMhj+!hhubj)}(hhh]h)}(h'zeroize and free request data structureh]h'zeroize and free request data structure}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj!hhubah}(h]h ]h"]h$]h&]uh1jhj+!hhhjD!hMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j"j=j"j>j?j@uh1jhhhjhNhNubjB)}(h_**Parameters** ``struct aead_request *req`` request data structure cipher handle to be freedh](h)}(h**Parameters**h]jL)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj"ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj"ubj)}(hhh]j)}(hM``struct aead_request *req`` request data structure cipher handle to be freedh](j)}(h``struct aead_request *req``h]j)}(hj7"h]hstruct aead_request *req}(hj9"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5"ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj1"ubj)}(hhh]h)}(h0request data structure cipher handle to be freedh]h0request data structure cipher handle to be freed}(hjP"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjM"ubah}(h]h ]h"]h$]h&]uh1jhj1"ubeh}(h]h ]h"]h$]h&]uh1jhjL"hMhj."ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&aead_request_set_callback (C function)c.aead_request_set_callbackhNtauh1jhjhhhNhNubj)}(hhh](j)}(hkvoid aead_request_set_callback (struct aead_request *req, u32 flags, crypto_completion_t compl, void *data)h]j)}(hjvoid aead_request_set_callback(struct aead_request *req, u32 flags, crypto_completion_t compl, void *data)h](j})}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj"hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhj"hMubj)}(haead_request_set_callbackh]j)}(haead_request_set_callbackh]haead_request_set_callback}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj"hhhj"hMubjU)}(hL(struct aead_request *req, u32 flags, crypto_completion_t compl, void *data)h](j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubh)}(hhh]j)}(h aead_requesth]h aead_request}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj"modnameN classnameNjj)}j]j)}j j"sbc.aead_request_set_callbackasbuh1hhj"ubj)}(h h]h }(hj #hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj-)}(hj0h]h*}(hj#hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj"ubj)}(hreqh]hreq}(hj'#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj"ubj[)}(h u32 flagsh](h)}(hhh]j)}(hu32h]hu32}(hjC#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@#ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetjE#modnameN classnameNjj)}j]j#c.aead_request_set_callbackasbuh1hhj<#ubj)}(h h]h }(hja#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<#ubj)}(hflagsh]hflags}(hjo#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj"ubj[)}(hcrypto_completion_t complh](h)}(hhh]j)}(hcrypto_completion_th]hcrypto_completion_t}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj#modnameN classnameNjj)}j]j#c.aead_request_set_callbackasbuh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hcomplh]hcompl}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj"ubj[)}(h void *datah](j})}(hvoidh]hvoid}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj-)}(hj0h]h*}(hj#hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj#ubj)}(hdatah]hdata}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj"ubeh}(h]h ]h"]h$]h&]jjuh1jThj"hhhj"hMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hj"hhhj"hMubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1jhj"hMhj"hhubj)}(hhh]h)}(h"set asynchronous callback functionh]h"set asynchronous callback function}(hj#$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj $hhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj"hMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j;$j=j;$j>j?j@uh1jhhhjhNhNubjB)}(hX**Parameters** ``struct aead_request *req`` request handle ``u32 flags`` specify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep ``crypto_completion_t compl`` callback function pointer to be registered with the request handle ``void *data`` The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the "data" field in the crypto_async_request data structure provided to the callback function. **Description** Setting the callback function that is triggered once the cipher operation completes The callback function is registered with the aead_request handle and must comply with the following template:: void callback_function(struct crypto_async_request *req, int error)h](h)}(h**Parameters**h]jL)}(hjE$h]h Parameters}(hjG$hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjC$ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj?$ubj)}(hhh](j)}(h,``struct aead_request *req`` request handle h](j)}(h``struct aead_request *req``h]j)}(hjd$h]hstruct aead_request *req}(hjf$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb$ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj^$ubj)}(hhh]h)}(hrequest handleh]hrequest handle}(hj}$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy$hMhjz$ubah}(h]h ]h"]h$]h&]uh1jhj^$ubeh}(h]h ]h"]h$]h&]uh1jhjy$hMhj[$ubj)}(h``u32 flags`` specify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep h](j)}(h ``u32 flags``h]j)}(hj$h]h u32 flags}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj$ubj)}(hhh]h)}(hspecify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleeph]hspecify zero or an ORing of the flags CRYPTO_TFM_REQ_MAY_BACKLOG the request queue may back log and increase the wait queue beyond the initial maximum size; CRYPTO_TFM_REQ_MAY_SLEEP the request processing may sleep}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hMhj[$ubj)}(ha``crypto_completion_t compl`` callback function pointer to be registered with the request handle h](j)}(h``crypto_completion_t compl``h]j)}(hj$h]hcrypto_completion_t compl}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj$ubj)}(hhh]h)}(hBcallback function pointer to be registered with the request handleh]hBcallback function pointer to be registered with the request handle}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hMhj[$ubj)}(hX9``void *data`` The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the "data" field in the crypto_async_request data structure provided to the callback function. h](j)}(h``void *data``h]j)}(hj%h]h void *datah}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj %ubj)}(hhh]h)}(hX)The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the "data" field in the crypto_async_request data structure provided to the callback function.h]hX-The data pointer refers to memory that is not used by the kernel crypto API, but provided to the callback function for it to use. Here, the caller can provide a reference to memory the callback function can operate on. As the callback function is invoked asynchronously to the related functionality, it may need to access data structures of the related functionality which can be referenced using this pointer. The callback function can access the memory via the “data” field in the crypto_async_request data structure provided to the callback function.}(hj)%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj&%ubah}(h]h ]h"]h$]h&]uh1jhj %ubeh}(h]h ]h"]h$]h&]uh1jhj%%hMhj[$ubeh}(h]h ]h"]h$]h&]uh1jhj?$ubh)}(h**Description**h]jL)}(hjL%h]h Description}(hjN%hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjJ%ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj?$ubh)}(hSSetting the callback function that is triggered once the cipher operation completesh]hSSetting the callback function that is triggered once the cipher operation completes}(hjb%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj?$ubh)}(hnThe callback function is registered with the aead_request handle and must comply with the following template::h]hmThe callback function is registered with the aead_request handle and must comply with the following template:}(hjq%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj?$ubjg)}(hCvoid callback_function(struct crypto_async_request *req, int error)h]hCvoid callback_function(struct crypto_async_request *req, int error)}hj%sbah}(h]h ]h"]h$]h&]jjuh1jfhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj?$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#aead_request_set_crypt (C function)c.aead_request_set_crypthNtauh1jhjhhhNhNubj)}(hhh](j)}(hvoid aead_request_set_crypt (struct aead_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int cryptlen, u8 *iv)h]j)}(hvoid aead_request_set_crypt(struct aead_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int cryptlen, u8 *iv)h](j})}(hvoidh]hvoid}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj%hhhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj%hMubj)}(haead_request_set_crypth]j)}(haead_request_set_crypth]haead_request_set_crypt}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj%hhhj%hMubjU)}(hk(struct aead_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int cryptlen, u8 *iv)h](j[)}(hstruct aead_request *reqh](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubh)}(hhh]j)}(h aead_requesth]h aead_request}(hj &hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj &modnameN classnameNjj)}j]j)}j j%sbc.aead_request_set_cryptasbuh1hhj%ubj)}(h h]h }(hj*&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj-)}(hj0h]h*}(hj8&hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj%ubj)}(hreqh]hreq}(hjE&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj%ubj[)}(hstruct scatterlist *srch](j)}(hjh]hstruct}(hj^&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ&ubj)}(h h]h }(hjk&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ&ubh)}(hhh]j)}(h scatterlisth]h scatterlist}(hj|&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy&ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj~&modnameN classnameNjj)}j]j&&c.aead_request_set_cryptasbuh1hhjZ&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ&ubj-)}(hj0h]h*}(hj&hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hjZ&ubj)}(hsrch]hsrc}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ&ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj%ubj[)}(hstruct scatterlist *dsth](j)}(hjh]hstruct}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubh)}(hhh]j)}(h scatterlisth]h scatterlist}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj&modnameN classnameNjj)}j]j&&c.aead_request_set_cryptasbuh1hhj&ubj)}(h h]h }(hj 'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj-)}(hj0h]h*}(hj'hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj&ubj)}(hdsth]hdst}(hj%'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj%ubj[)}(hunsigned int cryptlenh](j})}(hunsignedh]hunsigned}(hj>'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj:'ubj)}(h h]h }(hjL'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:'ubj})}(hinth]hint}(hjZ'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj:'ubj)}(h h]h }(hjh'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:'ubj)}(hcryptlenh]hcryptlen}(hjv'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj%ubj[)}(hu8 *ivh](h)}(hhh]j)}(hu8h]hu8}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainj6reftypej  reftargetj'modnameN classnameNjj)}j]j&&c.aead_request_set_cryptasbuh1hhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj-)}(hj0h]h*}(hj'hhhNhNubah}(h]h ]j9ah"]h$]h&]uh1j,hj'ubj)}(hivh]hiv}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jZhj%ubeh}(h]h ]h"]h$]h&]jjuh1jThj%hhhj%hMubeh}(h]h ]h"]h$]h&]jjj uh1jj j hj%hhhj%hMubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1jhj%hMhj%hhubj)}(hhh]h)}(hset data buffersh]hset data buffers}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj'hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj%hMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<j (j=j (j>j?j@uh1jhhhjhNhNubjB)}(hXc**Parameters** ``struct aead_request *req`` request handle ``struct scatterlist *src`` source scatter / gather list ``struct scatterlist *dst`` destination scatter / gather list ``unsigned int cryptlen`` number of bytes to process from **src** ``u8 *iv`` IV for the cipher operation which must comply with the IV size defined by crypto_aead_ivsize() **Description** Setting the source data and destination data scatter / gather lists which hold the associated data concatenated with the plaintext or ciphertext. See below for the authentication tag. For encryption, the source is treated as the plaintext and the destination is the ciphertext. For a decryption operation, the use is reversed - the source is the ciphertext and the destination is the plaintext. The memory structure for cipher operation has the following structure: - AEAD encryption input: assoc data || plaintext - AEAD encryption output: assoc data || ciphertext || auth tag - AEAD decryption input: assoc data || ciphertext || auth tag - AEAD decryption output: assoc data || plaintext Albeit the kernel requires the presence of the AAD buffer, however, the kernel does not fill the AAD buffer in the output case. If the caller wants to have that data buffer filled, the caller must either use an in-place cipher operation (i.e. same memory location for input/output memory location).h](h)}(h**Parameters**h]jL)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj(ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubj)}(hhh](j)}(h,``struct aead_request *req`` request handle h](j)}(h``struct aead_request *req``h]j)}(hj6(h]hstruct aead_request *req}(hj8(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4(ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj0(ubj)}(hhh]h)}(hrequest handleh]hrequest handle}(hjO(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjK(hMhjL(ubah}(h]h ]h"]h$]h&]uh1jhj0(ubeh}(h]h ]h"]h$]h&]uh1jhjK(hMhj-(ubj)}(h9``struct scatterlist *src`` source scatter / gather list h](j)}(h``struct scatterlist *src``h]j)}(hjo(h]hstruct scatterlist *src}(hjq(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm(ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhji(ubj)}(hhh]h)}(hsource scatter / gather listh]hsource scatter / gather list}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1jhji(ubeh}(h]h ]h"]h$]h&]uh1jhj(hMhj-(ubj)}(h>``struct scatterlist *dst`` destination scatter / gather list h](j)}(h``struct scatterlist *dst``h]j)}(hj(h]hstruct scatterlist *dst}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubj)}(hhh]h)}(h!destination scatter / gather listh]h!destination scatter / gather list}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hMhj-(ubj)}(hB``unsigned int cryptlen`` number of bytes to process from **src** h](j)}(h``unsigned int cryptlen``h]j)}(hj(h]hunsigned int cryptlen}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubj)}(hhh]h)}(h'number of bytes to process from **src**h](h number of bytes to process from }(hj(hhhNhNubjL)}(h**src**h]hsrc}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj(ubeh}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hMhj-(ubj)}(hj``u8 *iv`` IV for the cipher operation which must comply with the IV size defined by crypto_aead_ivsize() h](j)}(h ``u8 *iv``h]j)}(hj()h]hu8 *iv}(hj*)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&)ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj")ubj)}(hhh]h)}(h^IV for the cipher operation which must comply with the IV size defined by crypto_aead_ivsize()h]h^IV for the cipher operation which must comply with the IV size defined by crypto_aead_ivsize()}(hjA)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj>)ubah}(h]h ]h"]h$]h&]uh1jhj")ubeh}(h]h ]h"]h$]h&]uh1jhj=)hMhj-(ubeh}(h]h ]h"]h$]h&]uh1jhj(ubh)}(h**Description**h]jL)}(hjd)h]h Description}(hjf)hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjb)ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubh)}(hSetting the source data and destination data scatter / gather lists which hold the associated data concatenated with the plaintext or ciphertext. See below for the authentication tag.h]hSetting the source data and destination data scatter / gather lists which hold the associated data concatenated with the plaintext or ciphertext. See below for the authentication tag.}(hjz)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubh)}(hFor encryption, the source is treated as the plaintext and the destination is the ciphertext. For a decryption operation, the use is reversed - the source is the ciphertext and the destination is the plaintext.h]hFor encryption, the source is treated as the plaintext and the destination is the ciphertext. For a decryption operation, the use is reversed - the source is the ciphertext and the destination is the plaintext.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubh)}(hFThe memory structure for cipher operation has the following structure:h]hFThe memory structure for cipher operation has the following structure:}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj(ubh bullet_list)}(hhh](h list_item)}(h/AEAD encryption input: assoc data || plaintexth]h)}(hj)h]h/AEAD encryption input: assoc data || plaintext}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj)ubah}(h]h ]h"]h$]h&]uh1j)hj)ubj))}(h*hhhjT*hMubah}(h]j9*ah ](jjeh"]h$]h&]jj)jhuh1jhjT*hMhj;*hhubj)}(hhh]h)}(hset associated data informationh]hset associated data information}(hjW+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjT+hhubah}(h]h ]h"]h$]h&]uh1jhj;*hhhjT*hMubeh}(h]h ](j6functioneh"]h$]h&]j;j6j<jo+j=jo+j>j?j@uh1jhhhjhNhNubjB)}(h**Parameters** ``struct aead_request *req`` request handle ``unsigned int assoclen`` number of bytes in associated data **Description** Setting the AD information. This function sets the length of the associated data.h](h)}(h**Parameters**h]jL)}(hjy+h]h Parameters}(hj{+hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhjw+ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjs+ubj)}(hhh](j)}(h,``struct aead_request *req`` request handle h](j)}(h``struct aead_request *req``h]j)}(hj+h]hstruct aead_request *req}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj+ubj)}(hhh]h)}(hrequest handleh]hrequest handle}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj+ubj)}(h=``unsigned int assoclen`` number of bytes in associated data h](j)}(h``unsigned int assoclen``h]j)}(hj+h]hunsigned int assoclen}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhj+ubj)}(hhh]h)}(h"number of bytes in associated datah]h"number of bytes in associated data}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj+ubeh}(h]h ]h"]h$]h&]uh1jhjs+ubh)}(h**Description**h]jL)}(hj ,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jKhj ,ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjs+ubh)}(hRSetting the AD information. This function sets the length of the associated data.h]hRSetting the AD information. This function sets the length of the associated data.}(hj",hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/crypto/api-aead:22: ./include/crypto/aead.hhMhjs+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jAhjhhhNhNubeh}(h] asynchronous-aead-request-handleah ]h"] asynchronous aead request handleah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjc,error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjjj=,j:,u nametypes}(jjj=,uh}(jhjjjEjJjjjjj j jn js j2j7jj jjjjjjjjj:,jjjjjjjj)!j.!j"j"j%j%j9*j>*u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.