=sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget6/translations/zh_CN/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/zh_TW/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/it_IT/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ja_JP/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ko_KR/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/pt_BR/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/sp_SP/crypto/libcrypto-unauth-encryptionmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhP/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption.rsthKubhsection)}(hhh](htitle)}(hUnauthenticated encryptionh]hUnauthenticated encryption}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThese APIs provide support for unauthenticated encryption and decryption, including bare stream ciphers and other length-preserving algorithms such as block ciphers in XTS mode. The legitimate use cases for these algorithms are:h]hThese APIs provide support for unauthenticated encryption and decryption, including bare stream ciphers and other length-preserving algorithms such as block ciphers in XTS mode. The legitimate use cases for these algorithms are:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(hSupport for legacy protocols that really should have chosen an authenticated mode (or even another primitive entirely) but didn't. h]h)}(hSupport for legacy protocols that really should have chosen an authenticated mode (or even another primitive entirely) but didn't.h]hSupport for legacy protocols that really should have chosen an authenticated mode (or even another primitive entirely) but didn’t.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hmInternal components of authenticated modes. For example, AES-CTR is used by AES-GCM and AES-CCM internally. h]h)}(hlInternal components of authenticated modes. For example, AES-CTR is used by AES-GCM and AES-CCM internally.h]hlInternal components of authenticated modes. For example, AES-CTR is used by AES-GCM and AES-CCM internally.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hdStorage encryption that cannot accommodate ciphertext expansion. Usually AES-XTS is used for this. h]h)}(hcStorage encryption that cannot accommodate ciphertext expansion. Usually AES-XTS is used for this.h]hcStorage encryption that cannot accommodate ciphertext expansion. Usually AES-XTS is used for this.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h@Stream ciphers for key derivation and random number generation. h]h)}(h?Stream ciphers for key derivation and random number generation.h]h?Stream ciphers for key derivation and random number generation.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj<ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhhhubh)}(h+Besides the above, these shouldn't be used.h]h-Besides the above, these shouldn’t be used.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hAES-CBC and AES-CBC-CTSh]hAES-CBC and AES-CBC-CTS}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhhhhhKubh)}(hLThis API provides support for AES in the CBC and CBC-CTS modes of operation.h]hLThis API provides support for AES in the CBC and CBC-CTS modes of operation.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleaes_cbc_encrypt (C function)c.aes_cbc_encrypthNtauh1jhjjhhhNhNubhdesc)}(hhh](hdesc_signature)}(hlvoid aes_cbc_encrypt (u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h]hdesc_signature_line)}(hkvoid aes_cbc_encrypt(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK ubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhK ubh desc_name)}(haes_cbc_encrypth]h desc_sig_name)}(haes_cbc_encrypth]haes_cbc_encrypt}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhK ubhdesc_parameterlist)}(hW(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](hdesc_parameter)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjsbc.aes_cbc_encryptasbuh1hhjubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h*h]h*}(hj5hhhNhNubah}(h]h ]pah"]h$]h&]uh1j3hjubj)}(hdsth]hdst}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h const u8 *srch](hdesc_sig_keyword)}(hconsth]hconst}(hj_hhhNhNubah}(h]h ]kah"]h$]h&]uh1j]hjYubj)}(h h]h }(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.aes_cbc_encryptasbuh1hhjYubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjYubj)}(hsrch]hsrc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.aes_cbc_encryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 iv[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.aes_cbc_encryptasbuh1hhjubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hivh]hiv}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(h[h]h[}(hjVhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj^)}(hstatich]hstatic}(hjdhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(h h]h }(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.aes_cbc_encryptasbuh1hhjubj4)}(h]h]h]}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(haes_encrypt_arg keyh](h)}(hhh]j)}(haes_encrypt_argh]haes_encrypt_arg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.aes_cbc_encryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK ubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhK ubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhK hjhhubh desc_content)}(hhh]h)}(hEncrypt data using AES-CBCh]hEncrypt data using AES-CBC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK ubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypej5desctypej5noindex noindexentrynocontentsentryuh1jhhhjjhNhNubh container)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE. ``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0). ``aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() **Description** This supports incremental encryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated **iv** must be passed in each time. **Context** Any context.h](h)}(h**Parameters**h]hstrong)}(hjGh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjEubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjAubhdefinition_list)}(hhh](hdefinition_list_item)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](hterm)}(h ``u8 *dst``h]hliteral)}(hjnh]hu8 *dst}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjfubh definition)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjaubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjh]h const u8 *src}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjubj)}(hhh]h)}(hThe source datah]hThe source data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjaubje)}(hR``size_t len`` Number of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE. h](jk)}(h``size_t len``h]jq)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjubj)}(hhh]h)}(hBNumber of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE.h]hBNumber of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjaubje)}(h``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0). h](jk)}(h ``u8 iv[static AES_BLOCK_SIZE]``h]jq)}(hjh]hu8 iv[static AES_BLOCK_SIZE]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjubj)}(hhh]h)}(hThe initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0).h](htThe initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if }(hj7hhhNhNubjJ)}(h**len**h]hlen}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj7ubh == 0).}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj3hKhjaubje)}(h```aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() h](jk)}(h``aes_encrypt_arg key``h]jq)}(hjjh]haes_encrypt_arg key}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjhubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjdubj)}(hhh]h)}(hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()h]hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjaubeh}(h]h ]h"]h$]h&]uh1j_hjAubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjAubh)}(hThis supports incremental encryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated **iv** must be passed in each time.h](hvThis supports incremental encryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated }(hjhhhNhNubjJ)}(h**iv**h]hiv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh must be passed in each time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjAubh)}(h **Context**h]jJ)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjAubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hjjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_cbc_decrypt (C function)c.aes_cbc_decrypthNtauh1jhjjhhhNhNubj)}(hhh](j)}(hrvoid aes_cbc_decrypt (u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h]j)}(hqvoid aes_cbc_decrypt(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h](j)}(hvoidh]hvoid}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj1hKubj)}(haes_cbc_decrypth]j)}(haes_cbc_decrypth]haes_cbc_decrypt}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj1hKubj)}(h](u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]j )}jjFsbc.aes_cbc_decryptasbuh1hhj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj\ubj)}(hdsth]hdst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(h const u8 *srch](j^)}(hjah]hconst}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(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&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cbc_decryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hsrch]hsrc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jc.aes_cbc_decryptasbuh1hhj#ubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hlenh]hlen}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hu8 iv[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjtmodnameN classnameNjj)}j]jc.aes_cbc_decryptasbuh1hhjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(hivh]hiv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj4)}(hjXh]h[}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjkubj^)}(hjfh]hstatic}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cbc_decryptasbuh1hhjkubj4)}(hjh]h]}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hconst struct aes_key *keyh](j^)}(hjah]hconst}(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hstructh]hstruct}(hj(hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(haes_keyh]haes_key}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]jc.aes_cbc_decryptasbuh1hhj ubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj4)}(hj7h]h*}(hjshhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj1hKubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhj1hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj1hKhjhhubj)}(hhh]h)}(hDecrypt data using AES-CBCh]hDecrypt data using AES-CBC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj1hKubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:jj;jj<j=j>uh1jhhhjjhNhNubj@)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE. ``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0). ``const struct aes_key *key`` The key, already prepared using aes_preparekey() **Description** This supports incremental decryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated **iv** must be passed in each time. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK#hjubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hjh]hu8 *dst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK!hjubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj hK!hjubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hj% h]h const u8 *src}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj# ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK"hj ubj)}(hhh]h)}(hThe source datah]hThe source data}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj: hK"hj; ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj: hK"hjubje)}(hR``size_t len`` Number of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE. h](jk)}(h``size_t len``h]jq)}(hj^ h]h size_t len}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK#hjX ubj)}(hhh]h)}(hBNumber of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE.h]hBNumber of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE.}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs hK#hjt ubah}(h]h ]h"]h$]h&]uh1jhjX ubeh}(h]h ]h"]h$]h&]uh1jdhjs hK#hjubje)}(h``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0). h](jk)}(h ``u8 iv[static AES_BLOCK_SIZE]``h]jq)}(hj h]hu8 iv[static AES_BLOCK_SIZE]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK%hj ubj)}(hhh]h)}(hThe initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if **len** == 0).h](htThe initialization vector. It is updated with the next value, i.e. the last ciphertext block (or left unchanged if }(hj hhhNhNubjJ)}(h**len**h]hlen}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubh == 0).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK$hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj hK%hjubje)}(hO``const struct aes_key *key`` The key, already prepared using aes_preparekey() h](jk)}(h``const struct aes_key *key``h]jq)}(hj h]hconst struct aes_key *key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK&hj ubj)}(hhh]h)}(h0The key, already prepared using aes_preparekey()h]h0The key, already prepared using aes_preparekey()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK&hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj hK&hjubeh}(h]h ]h"]h$]h&]uh1j_hjubh)}(h**Description**h]jJ)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK(hjubh)}(hThis supports incremental decryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated **iv** must be passed in each time.h](hvThis supports incremental decryption. The length of each chunk must be a multiple of AES_BLOCK_SIZE, and the updated }(hj4 hhhNhNubjJ)}(h**iv**h]hiv}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj4 ubh must be passed in each time.}(hj4 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK'hjubh)}(h **Context**h]jJ)}(hjW h]hContext}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjU ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK*hjubh)}(h Any context.h]h Any context.}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK+hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hjjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cbc_cts_encrypt (C function)c.aes_cbc_cts_encrypthNtauh1jhjjhhhNhNubj)}(hhh](j)}(hpvoid aes_cbc_cts_encrypt (u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h]j)}(hovoid aes_cbc_cts_encrypt(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK1ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hK1ubj)}(haes_cbc_cts_encrypth]j)}(haes_cbc_cts_encrypth]haes_cbc_cts_encrypt}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hK1ubj)}(hW(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j )}jj sbc.aes_cbc_cts_encryptasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj4)}(hj7h]h*}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj)}(hdsth]hdst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h const u8 *srch](j^)}(hjah]hconst}(hj0 hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj, ubj)}(h h]h }(hj= hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj, ubh)}(hhh]j)}(hu8h]hu8}(hjN hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjP modnameN classnameNjj)}j]j c.aes_cbc_cts_encryptasbuh1hhj, ubj)}(h h]h }(hjl hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj, ubj4)}(hj7h]h*}(hjz hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj, ubj)}(hsrch]hsrc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj, ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.aes_cbc_cts_encryptasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hlenh]hlen}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hu8 iv[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.aes_cbc_cts_encryptasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hivh]hiv}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj4)}(hjXh]h[}(hj% hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj^)}(hjfh]hstatic}(hj2 hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hj? hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjP hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjR modnameN classnameNjj)}j]j c.aes_cbc_cts_encryptasbuh1hhj ubj4)}(hjh]h]}(hjn hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(haes_encrypt_arg keyh](h)}(hhh]j)}(haes_encrypt_argh]haes_encrypt_arg}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.aes_cbc_cts_encryptasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hkeyh]hkey}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hK1ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj hhhj hK1ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hK1hj hhubj)}(hhh]h)}(h,Encrypt data using AES-CBC-CTS (CS3 variant)h]h,Encrypt data using AES-CBC-CTS (CS3 variant)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK1hj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hK1ubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j j;j j<j=j>uh1jhhhjjhNhNubj@)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to encrypt, at least AES_BLOCK_SIZE ``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector, clobbered by this function ``aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK5hj ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hj h]hu8 *dst}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK3hj ubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK2hj6 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj5 hK3hj ubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjZ h]h const u8 *src}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjX ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK4hjT ubj)}(hhh]h)}(hThe source datah]hThe source data}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo hK4hjp ubah}(h]h ]h"]h$]h&]uh1jhjT ubeh}(h]h ]h"]h$]h&]uh1jdhjo hK4hj ubje)}(hC``size_t len`` Number of bytes to encrypt, at least AES_BLOCK_SIZE h](jk)}(h``size_t len``h]jq)}(hj h]h size_t len}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK5hj ubj)}(hhh]h)}(h3Number of bytes to encrypt, at least AES_BLOCK_SIZEh]h3Number of bytes to encrypt, at least AES_BLOCK_SIZE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK5hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj hK5hj ubje)}(hW``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector, clobbered by this function h](jk)}(h ``u8 iv[static AES_BLOCK_SIZE]``h]jq)}(hj h]hu8 iv[static AES_BLOCK_SIZE]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK6hj ubj)}(hhh]h)}(h5The initialization vector, clobbered by this functionh]h5The initialization vector, clobbered by this function}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK6hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhj hK6hj ubje)}(h```aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() h](jk)}(h``aes_encrypt_arg key``h]jq)}(hjh]haes_encrypt_arg key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK7hj ubj)}(hhh]h)}(hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()h]hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jdhjhK7hj ubeh}(h]h ]h"]h$]h&]uh1j_hj ubh)}(h **Context**h]jJ)}(hj@h]hContext}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK9hj ubh)}(h Any context.h]h Any context.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK9hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hjjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j aes_cbc_cts_decrypt (C function)c.aes_cbc_cts_decrypthNtauh1jhjjhhhNhNubj)}(hhh](j)}(hvvoid aes_cbc_cts_decrypt (u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h]j)}(huvoid aes_cbc_cts_decrypt(u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK?ubj)}(haes_cbc_cts_decrypth]j)}(haes_cbc_cts_decrypth]haes_cbc_cts_decrypt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK?ubj)}(h](u8 *dst, const u8 *src, size_t len, u8 iv[static AES_BLOCK_SIZE], const struct aes_key *key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}jjsbc.aes_cbc_cts_decryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hdsth]hdst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h const u8 *srch](j^)}(hjah]hconst}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hu8h]hu8}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]jc.aes_cbc_cts_decryptasbuh1hhjubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hjchhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hsrch]hsrc}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cbc_cts_decryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 iv[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cbc_cts_decryptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hivh]hiv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hjXh]h[}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj^)}(hjfh]hstatic}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]jc.aes_cbc_cts_decryptasbuh1hhjubj4)}(hjh]h]}(hjWhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct aes_key *keyh](j^)}(hjah]hconst}(hjohhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjkubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj^)}(hj*h]hstruct}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubh)}(hhh]j)}(haes_keyh]haes_key}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.aes_cbc_cts_decryptasbuh1hhjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjkubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK?ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj}hhhjhK?ubah}(h]jxah ](jjeh"]h$]h&]jj)jhuh1jhjhK?hjzhhubj)}(hhh]h)}(h,Decrypt data using AES-CBC-CTS (CS3 variant)h]h,Decrypt data using AES-CBC-CTS (CS3 variant)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK?hjhhubah}(h]h ]h"]h$]h&]uh1jhjzhhhjhK?ubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j#j;j#j<j=j>uh1jhhhjjhNhNubj@)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to decrypt, at least AES_BLOCK_SIZE ``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector, clobbered by this function ``const struct aes_key *key`` The key, already prepared using aes_preparekey() **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj-h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj+ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKChj'ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hjLh]hu8 *dst}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjJubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKAhjFubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhK@hjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jdhjahKAhjCubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjh]h const u8 *src}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKBhjubj)}(hhh]h)}(hThe source datah]hThe source data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKBhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKBhjCubje)}(hC``size_t len`` Number of bytes to decrypt, at least AES_BLOCK_SIZE h](jk)}(h``size_t len``h]jq)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKChjubj)}(hhh]h)}(h3Number of bytes to decrypt, at least AES_BLOCK_SIZEh]h3Number of bytes to decrypt, at least AES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKChjCubje)}(hW``u8 iv[static AES_BLOCK_SIZE]`` The initialization vector, clobbered by this function h](jk)}(h ``u8 iv[static AES_BLOCK_SIZE]``h]jq)}(hjh]hu8 iv[static AES_BLOCK_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKDhjubj)}(hhh]h)}(h5The initialization vector, clobbered by this functionh]h5The initialization vector, clobbered by this function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKDhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj hKDhjCubje)}(hO``const struct aes_key *key`` The key, already prepared using aes_preparekey() h](jk)}(h``const struct aes_key *key``h]jq)}(hj1h]hconst struct aes_key *key}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKEhj+ubj)}(hhh]h)}(h0The key, already prepared using aes_preparekey()h]h0The key, already prepared using aes_preparekey()}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKEhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jdhjFhKEhjCubeh}(h]h ]h"]h$]h&]uh1j_hj'ubh)}(h **Context**h]jJ)}(hjlh]hContext}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKGhj'ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:28: ./include/crypto/aes-cbc.hhKGhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hjjhhhNhNubeh}(h]aes-cbc-and-aes-cbc-ctsah ]h"]aes-cbc and aes-cbc-ctsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hAES-CTR and AES-XCTRh]hAES-CTR and AES-XCTR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hIThis API provides support for AES in the CTR and XCTR modes of operation.h]hIThis API provides support for AES in the CTR and XCTR modes of operation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_ctr (C function) c.aes_ctrhNtauh1jhjhhhNhNubj)}(hhh](j)}(hevoid aes_ctr (u8 *dst, const u8 *src, size_t len, u8 ctr[static AES_BLOCK_SIZE], aes_encrypt_arg key)h]j)}(hdvoid aes_ctr(u8 *dst, const u8 *src, size_t len, u8 ctr[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK ubj)}(haes_ctrh]j)}(haes_ctrh]haes_ctr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK ubj)}(hX(u8 *dst, const u8 *src, size_t len, u8 ctr[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}jjsb c.aes_ctrasbuh1hhjubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hjFhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hdsth]hdst}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h const u8 *srch](j^)}(hjah]hconst}(hjlhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjhubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubh)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j4 c.aes_ctrasbuh1hhjhubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhubj)}(hsrch]hsrc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j4 c.aes_ctrasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlenh]hlen}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hu8 ctr[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j4 c.aes_ctrasbuh1hhj ubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hctrh]hctr}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj4)}(hjXh]h[}(hjahhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj^)}(hjfh]hstatic}(hjnhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j4 c.aes_ctrasbuh1hhj ubj4)}(hjh]h]}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(haes_encrypt_arg keyh](h)}(hhh]j)}(haes_encrypt_argh]haes_encrypt_arg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j4 c.aes_ctrasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhK ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhK hjhhubj)}(hhh]h)}(hAES-CTR en/decryptionh]hAES-CTR en/decryption}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK ubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j3j;j3j<j=j>uh1jhhhjhNhNubj@)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to en/decrypt ``u8 ctr[static AES_BLOCK_SIZE]`` The counter. It will be incremented by ceil(**len** / AES_BLOCK_SIZE). ``aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() **Description** This implements AES in counter mode with a 128-bit big endian counter. This exists only for use by the implementation of modes built on top of CTR (e.g., GCM and CCM) and some legacy protocols that use CTR mode directly. Callers are expected to know how to use CTR mode appropriately, including choosing (key, counter) pairs appropriately to avoid keystream reuse. This supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated **ctr** must be passed in each time. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj;ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hj\h]hu8 *dst}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjVubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jdhjqhKhjSubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjh]h const u8 *src}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjubj)}(hhh]h)}(hThe source datah]hThe source data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjSubje)}(h-``size_t len`` Number of bytes to en/decrypt h](jk)}(h``size_t len``h]jq)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjubj)}(hhh]h)}(hNumber of bytes to en/decrypth]hNumber of bytes to en/decrypt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjSubje)}(hj``u8 ctr[static AES_BLOCK_SIZE]`` The counter. It will be incremented by ceil(**len** / AES_BLOCK_SIZE). h](jk)}(h!``u8 ctr[static AES_BLOCK_SIZE]``h]jq)}(hjh]hu8 ctr[static AES_BLOCK_SIZE]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjubj)}(hhh]h)}(hGThe counter. It will be incremented by ceil(**len** / AES_BLOCK_SIZE).h](h-The counter. It will be incremented by ceil(}(hj!hhhNhNubjJ)}(h**len**h]hlen}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj!ubh / AES_BLOCK_SIZE).}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjSubje)}(h```aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() h](jk)}(h``aes_encrypt_arg key``h]jq)}(hjSh]haes_encrypt_arg key}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhjMubj)}(hhh]h)}(hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()h]hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jdhjhhKhjSubeh}(h]h ]h"]h$]h&]uh1j_hj7ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubh)}(hFThis implements AES in counter mode with a 128-bit big endian counter.h]hFThis implements AES in counter mode with a 128-bit big endian counter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubh)}(hX%This exists only for use by the implementation of modes built on top of CTR (e.g., GCM and CCM) and some legacy protocols that use CTR mode directly. Callers are expected to know how to use CTR mode appropriately, including choosing (key, counter) pairs appropriately to avoid keystream reuse.h]hX%This exists only for use by the implementation of modes built on top of CTR (e.g., GCM and CCM) and some legacy protocols that use CTR mode directly. Callers are expected to know how to use CTR mode appropriately, including choosing (key, counter) pairs appropriately to avoid keystream reuse.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubh)}(hThis supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated **ctr** must be passed in each time.h](hThis supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated }(hjhhhNhNubjJ)}(h**ctr**h]hctr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh must be passed in each time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubh)}(h **Context**h]jJ)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKhj7ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK hj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_xctr (C function) c.aes_xctrhNtauh1jhjhhhNhNubj)}(hhh](j)}(huvoid aes_xctr (u8 *dst, const u8 *src, size_t len, u64 *ctr, const u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h]j)}(htvoid aes_xctr(u8 *dst, const u8 *src, size_t len, u64 *ctr, const u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hvoidh]hvoid}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK&ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhj8hK&ubj)}(haes_xctrh]j)}(haes_xctrh]haes_xctr}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ](jjeh"]h$]h&]hhuh1jhj&hhhj8hK&ubj)}(hg(u8 *dst, const u8 *src, size_t len, u64 *ctr, const u8 iv[static AES_BLOCK_SIZE], aes_encrypt_arg key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]j )}jjMsb c.aes_xctrasbuh1hhjcubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjcubj)}(hdsth]hdst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(h const u8 *srch](j^)}(hjah]hconst}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(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&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.aes_xctrasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hsrch]hsrc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j c.aes_xctrasbuh1hhj*ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hlenh]hlen}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hu64 *ctrh](h)}(hhh]j)}(hu64h]hu64}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j c.aes_xctrasbuh1hhjrubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjrubj)}(hctrh]hctr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(h"const u8 iv[static AES_BLOCK_SIZE]h](j^)}(hjah]hconst}(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(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&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.aes_xctrasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hivh]hiv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hjXh]h[}(hj#hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj^)}(hjfh]hstatic}(hj0hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j c.aes_xctrasbuh1hhjubj4)}(hjh]h]}(hjlhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(haes_encrypt_arg keyh](h)}(hhh]j)}(haes_encrypt_argh]haes_encrypt_arg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.aes_xctrasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hkeyh]hkey}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhj&hhhj8hK&ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj"hhhj8hK&ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj8hK&hjhhubj)}(hhh]h)}(hAES-XCTR en/decryptionh]hAES-XCTR en/decryption}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK&hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj8hK&ubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:jj;jj<j=j>uh1jhhhjhNhNubj@)}(hXd**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to en/decrypt ``u64 *ctr`` The block counter (in host endianness). For the first call, set it to 1. It will be incremented by ceil(**len** / AES_BLOCK_SIZE). ``const u8 iv[static AES_BLOCK_SIZE]`` The initialization vector ``aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() **Description** This implements AES in XOR Counter mode, as specified in the paper "Length-preserving encryption with HCTR2" (https://eprint.iacr.org/2021/1441.pdf). This exists only for use by the implementation of modes built on top of XCTR. Callers are expected to know how to use XCTR mode appropriately, including choosing (key, IV) pairs appropriately to avoid keystream reuse. This supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated **ctr** must be passed in each time. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK*hjubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hjh]hu8 *dst}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK(hjubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK'hj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj3hK(hjubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjXh]h const u8 *src}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK)hjRubj)}(hhh]h)}(hThe source datah]hThe source data}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhK)hjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jdhjmhK)hjubje)}(h-``size_t len`` Number of bytes to en/decrypt h](jk)}(h``size_t len``h]jq)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK*hjubj)}(hhh]h)}(hNumber of bytes to en/decrypth]hNumber of bytes to en/decrypt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK*hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhK*hjubje)}(h``u64 *ctr`` The block counter (in host endianness). For the first call, set it to 1. It will be incremented by ceil(**len** / AES_BLOCK_SIZE). h](jk)}(h ``u64 *ctr``h]jq)}(hjh]hu64 *ctr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK,hjubj)}(hhh]h)}(hThe block counter (in host endianness). For the first call, set it to 1. It will be incremented by ceil(**len** / AES_BLOCK_SIZE).h](hjThe block counter (in host endianness). For the first call, set it to 1. It will be incremented by ceil(}(hjhhhNhNubjJ)}(h**len**h]hlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh / AES_BLOCK_SIZE).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhK,hjubje)}(hA``const u8 iv[static AES_BLOCK_SIZE]`` The initialization vector h](jk)}(h&``const u8 iv[static AES_BLOCK_SIZE]``h]jq)}(hjh]h"const u8 iv[static AES_BLOCK_SIZE]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK-hjubj)}(hhh]h)}(hThe initialization vectorh]hThe initialization vector}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hK-hj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj+hK-hjubje)}(h```aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() h](jk)}(h``aes_encrypt_arg key``h]jq)}(hjOh]haes_encrypt_arg key}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK.hjIubj)}(hhh]h)}(hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()h]hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhK.hjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jdhjdhK.hjubeh}(h]h ]h"]h$]h&]uh1j_hjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK0hjubh)}(hThis implements AES in XOR Counter mode, as specified in the paper "Length-preserving encryption with HCTR2" (https://eprint.iacr.org/2021/1441.pdf).h](hrThis implements AES in XOR Counter mode, as specified in the paper “Length-preserving encryption with HCTR2” (}(hjhhhNhNubh reference)}(h%https://eprint.iacr.org/2021/1441.pdfh]h%https://eprint.iacr.org/2021/1441.pdf}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK/hjubh)}(hThis exists only for use by the implementation of modes built on top of XCTR. Callers are expected to know how to use XCTR mode appropriately, including choosing (key, IV) pairs appropriately to avoid keystream reuse.h]hThis exists only for use by the implementation of modes built on top of XCTR. Callers are expected to know how to use XCTR mode appropriately, including choosing (key, IV) pairs appropriately to avoid keystream reuse.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK3hjubh)}(hThis supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated **ctr** must be passed in each time.h](hThis supports incremental en/decryption. The length of each non-final chunk must be a multiple of AES_BLOCK_SIZE, and the updated }(hjhhhNhNubjJ)}(h**ctr**h]hctr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh must be passed in each time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK7hjubh)}(h **Context**h]jJ)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhK;hjubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:35: ./include/crypto/aes-ctr.hhKuh1jhhhj*hNhNubj@)}(hX**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE. ``aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() **Description** ECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes. This supports incremental encryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj)h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj'ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hjHh]hu8 *dst}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhjBubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jdhj]hKhj?ubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hjh]h const u8 *src}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj|ubj)}(hhh]h)}(hThe source datah]hThe source data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jdhjhKhj?ubje)}(hR``size_t len`` Number of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE. h](jk)}(h``size_t len``h]jq)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhjubj)}(hhh]h)}(hBNumber of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE.h]hBNumber of bytes to encrypt. Must be a multiple of AES_BLOCK_SIZE.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhj?ubje)}(h```aes_encrypt_arg key`` The key, already prepared using aes_preparekey() or aes_prepareenckey() h](jk)}(h``aes_encrypt_arg key``h]jq)}(hjh]haes_encrypt_arg key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhjubj)}(hhh]h)}(hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()h]hGThe key, already prepared using aes_preparekey() or aes_prepareenckey()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jdhj hKhj?ubeh}(h]h ]h"]h$]h&]uh1j_hj#ubh)}(h**Description**h]jJ)}(hj/h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubh)}(hECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes.h]hECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubh)}(hhThis supports incremental encryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE.h]hhThis supports incremental encryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubh)}(h **Context**h]jJ)}(hjeh]hContext}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjcubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubh)}(h Any context.h]h Any context.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hj*hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_ecb_decrypt (C function)c.aes_ecb_decrypthNtauh1jhj*hhhNhNubj)}(hhh](j)}(hTvoid aes_ecb_decrypt (u8 *dst, const u8 *src, size_t len, const struct aes_key *key)h]j)}(hSvoid aes_ecb_decrypt(u8 *dst, const u8 *src, size_t len, const struct aes_key *key)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(haes_ecb_decrypth]j)}(haes_ecb_decrypth]haes_ecb_decrypt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h?(u8 *dst, const u8 *src, size_t len, const struct aes_key *key)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}jjsbc.aes_ecb_decryptasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hj7h]h*}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(hdsth]hdst}(hj% hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h const u8 *srch](j^)}(hjah]hconst}(hj> hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj: ubj)}(h h]h }(hjK hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj: ubh)}(hhh]j)}(hu8h]hu8}(hj\ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^ modnameN classnameNjj)}j]j c.aes_ecb_decryptasbuh1hhj: ubj)}(h h]h }(hjz hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj: ubj4)}(hj7h]h*}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj: ubj)}(hsrch]hsrc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj: ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.aes_ecb_decryptasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hlenh]hlen}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct aes_key *keyh](j^)}(hjah]hconst}(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hj*h]hstruct}(hj!hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(haes_keyh]haes_key}(hj/!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1!modnameN classnameNjj)}j]j c.aes_ecb_decryptasbuh1hhj ubj)}(h h]h }(hjM!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj4)}(hj7h]h*}(hj[!hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj)}(hkeyh]hkey}(hjh!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h)}(hDecrypt data using AES-ECBh]hDecrypt data using AES-ECB}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhKhj!hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j!j;j!j<j=j>uh1jhhhj*hNhNubj@)}(hXu**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE. ``const struct aes_key *key`` The key, already prepared using aes_preparekey() **Description** ECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes. This supports incremental decryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj!ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK#hj!ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hj!h]hu8 *dst}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK!hj!ubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK hj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jdhj!hK!hj!ubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hj "h]h const u8 *src}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj "ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK"hj"ubj)}(hhh]h)}(hThe source datah]hThe source data}(hj&"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj""hK"hj#"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jdhj""hK"hj!ubje)}(hR``size_t len`` Number of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE. h](jk)}(h``size_t len``h]jq)}(hjF"h]h size_t len}(hjH"hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjD"ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK#hj@"ubj)}(hhh]h)}(hBNumber of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE.h]hBNumber of bytes to decrypt. Must be a multiple of AES_BLOCK_SIZE.}(hj_"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj["hK#hj\"ubah}(h]h ]h"]h$]h&]uh1jhj@"ubeh}(h]h ]h"]h$]h&]uh1jdhj["hK#hj!ubje)}(hO``const struct aes_key *key`` The key, already prepared using aes_preparekey() h](jk)}(h``const struct aes_key *key``h]jq)}(hj"h]hconst struct aes_key *key}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}"ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK$hjy"ubj)}(hhh]h)}(h0The key, already prepared using aes_preparekey()h]h0The key, already prepared using aes_preparekey()}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hK$hj"ubah}(h]h ]h"]h$]h&]uh1jhjy"ubeh}(h]h ]h"]h$]h&]uh1jdhj"hK$hj!ubeh}(h]h ]h"]h$]h&]uh1j_hj!ubh)}(h**Description**h]jJ)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK&hj!ubh)}(hECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes.h]hECB mode is insecure by itself. This function exists only for compatibility with legacy protocols and for internal use by other modes.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK%hj!ubh)}(hhThis supports incremental decryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE.h]hhThis supports incremental decryption, but the length of each chunk must be a multiple of AES_BLOCK_SIZE.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK(hj!ubh)}(h **Context**h]jJ)}(hj"h]hContext}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK+hj!ubh)}(h Any context.h]h Any context.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:42: ./include/crypto/aes-ecb.hhK,hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hj*hhhNhNubeh}(h]aes-ecbah ]h"]aes-ecbah$]h&]uh1hhhhhhhhK&ubh)}(hhh](h)}(hAES-XTSh]hAES-XTS}(hj'#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$#hhhhhK-ubh)}(h?This API provides support for AES in the XTS mode of operation.h]h?This API provides support for AES in the XTS mode of operation.}(hj5#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj$#hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_xts_key (C struct) c.aes_xts_keyhNtauh1jhj$#hhhNhNubj)}(hhh](j)}(h aes_xts_keyh]j)}(hstruct aes_xts_keyh](j^)}(hj*h]hstruct}(hj\#hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjX#hhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKubj)}(h h]h }(hjj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX#hhhji#hKubj)}(h aes_xts_keyh]j)}(hjV#h]h aes_xts_key}(hj|#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx#ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjX#hhhji#hKubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjT#hhhji#hKubah}(h]jO#ah ](jjeh"]h$]h&]jj)jhuh1jhji#hKhjQ#hhubj)}(hhh]h)}(h4A key prepared for AES-XTS encryption and decryptionh]h4A key prepared for AES-XTS encryption and decryption}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj#hhubah}(h]h ]h"]h$]h&]uh1jhjQ#hhhji#hKubeh}(h]h ](jstructeh"]h$]h&]j9jj:j#j;j#j<j=j>uh1jhhhj$#hNhNubj@)}(h:**Definition**:: struct aes_xts_key { }; **Members**h](h)}(h**Definition**::h](jJ)}(h**Definition**h]h Definition}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj#ubh:}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj#ubh literal_block)}(hstruct aes_xts_key { };h]hstruct aes_xts_key { };}hj#sbah}(h]h ]h"]h$]h&]hhuh1j#hk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj#ubh)}(h **Members**h]jJ)}(hj#h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hj$#hhhNhNubh)}(h**Description**h]jJ)}(hj $h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj $ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj$#hhubh)}(hNote that (depending on the architecture) this typically is around 768 bytes, which makes it a bit too large to allocate on the stack in most cases.h]hNote that (depending on the architecture) this typically is around 768 bytes, which makes it a bit too large to allocate on the stack in most cases.}(hj#$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj$#hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_xts_preparekey (C function)c.aes_xts_preparekeyhNtauh1jhj$#hhhNhNubj)}(hhh](j)}(h]int aes_xts_preparekey (struct aes_xts_key *key, const u8 *in_key, size_t key_len, int flags)h]j)}(h\int aes_xts_preparekey(struct aes_xts_key *key, const u8 *in_key, size_t key_len, int flags)h](j)}(hinth]hint}(hjK$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG$hhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKubj)}(h h]h }(hjZ$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG$hhhjY$hKubj)}(haes_xts_preparekeyh]j)}(haes_xts_preparekeyh]haes_xts_preparekey}(hjl$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjG$hhhjY$hKubj)}(hF(struct aes_xts_key *key, const u8 *in_key, size_t key_len, int flags)h](j)}(hstruct aes_xts_key *keyh](j^)}(hj*h]hstruct}(hj$hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj$ubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hhh]j)}(h aes_xts_keyh]h aes_xts_key}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j )}jjn$sbc.aes_xts_preparekeyasbuh1hhj$ubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj4)}(hj7h]h*}(hj$hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj$ubj)}(hkeyh]hkey}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubj)}(hconst u8 *in_keyh](j^)}(hjah]hconst}(hj$hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj$ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hhh]j)}(hu8h]hu8}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j$c.aes_xts_preparekeyasbuh1hhj$ubj)}(h h]h }(hj6%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj4)}(hj7h]h*}(hjD%hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj$ubj)}(hin_keyh]hin_key}(hjQ%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubj)}(hsize_t key_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjm%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjo%modnameN classnameNjj)}j]j$c.aes_xts_preparekeyasbuh1hhjf%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf%ubj)}(hkey_lenh]hkey_len}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubj)}(h int flagsh](j)}(hinth]hint}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hflagsh]hflags}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubeh}(h]h ]h"]h$]h&]hhuh1jhjG$hhhjY$hKubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjC$hhhjY$hKubah}(h]j>$ah ](jjeh"]h$]h&]jj)jhuh1jhjY$hKhj@$hhubj)}(hhh]h)}(h3Prepare a key for AES-XTS encryption and decryptionh]h3Prepare a key for AES-XTS encryption and decryption}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj%hhubah}(h]h ]h"]h$]h&]uh1jhj@$hhhjY$hKubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j&j;j&j<j=j>uh1jhhhj$#hNhNubj@)}(hX**Parameters** ``struct aes_xts_key *key`` (output) The key structure to initialize ``const u8 *in_key`` The raw AES-XTS key ``size_t key_len`` Length of the raw key in bytes ``int flags`` Optional flag XTS_FORBID_WEAK_KEYS to forbid keys whose two halves are the same. **Description** Users should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.) **Context** Any context. **Return** * 0 on success * -EINVAL if the key is rejected because its length isn't 32, 64, or (when FIPS mode isn't enabled) 48; or because its two halves are the same and either XTS_FORBID_WEAK_KEYS is given or FIPS mode is enabled.h](h)}(h**Parameters**h]jJ)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj&ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj&ubj`)}(hhh](je)}(hE``struct aes_xts_key *key`` (output) The key structure to initialize h](jk)}(h``struct aes_xts_key *key``h]jq)}(hj9&h]hstruct aes_xts_key *key}(hj;&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7&ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj3&ubj)}(hhh]h)}(h((output) The key structure to initializeh]h((output) The key structure to initialize}(hjR&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN&hKhjO&ubah}(h]h ]h"]h$]h&]uh1jhj3&ubeh}(h]h ]h"]h$]h&]uh1jdhjN&hKhj0&ubje)}(h)``const u8 *in_key`` The raw AES-XTS key h](jk)}(h``const u8 *in_key``h]jq)}(hjr&h]hconst u8 *in_key}(hjt&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjp&ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhjl&ubj)}(hhh]h)}(hThe raw AES-XTS keyh]hThe raw AES-XTS key}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhjl&ubeh}(h]h ]h"]h$]h&]uh1jdhj&hKhj0&ubje)}(h2``size_t key_len`` Length of the raw key in bytes h](jk)}(h``size_t key_len``h]jq)}(hj&h]hsize_t key_len}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj&ubj)}(hhh]h)}(hLength of the raw key in bytesh]hLength of the raw key in bytes}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jdhj&hKhj0&ubje)}(h_``int flags`` Optional flag XTS_FORBID_WEAK_KEYS to forbid keys whose two halves are the same. h](jk)}(h ``int flags``h]jq)}(hj&h]h int flags}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj&ubj)}(hhh]h)}(hPOptional flag XTS_FORBID_WEAK_KEYS to forbid keys whose two halves are the same.h]hPOptional flag XTS_FORBID_WEAK_KEYS to forbid keys whose two halves are the same.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jdhj&hKhj0&ubeh}(h]h ]h"]h$]h&]uh1j_hj&ubh)}(h**Description**h]jJ)}(hj 'h]h Description}(hj"'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj'ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK!hj&ubh)}(hUsers should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)h]hUsers should use memzero_explicit() to zeroize the key struct at the end of its lifetime. (But if this function fails, zeroization is unnecessary.)}(hj6'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK hj&ubh)}(h **Context**h]jJ)}(hjG'h]hContext}(hjI'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjE'ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK#hj&ubh)}(h Any context.h]h Any context.}(hj]'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK$hj&ubh)}(h **Return**h]jJ)}(hjn'h]hReturn}(hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjl'ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK&hj&ubh)}(hhh](h)}(h 0 on successh]h)}(hj'h]h 0 on success}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK%hj'ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h-EINVAL if the key is rejected because its length isn't 32, 64, or (when FIPS mode isn't enabled) 48; or because its two halves are the same and either XTS_FORBID_WEAK_KEYS is given or FIPS mode is enabled.h]h)}(h-EINVAL if the key is rejected because its length isn't 32, 64, or (when FIPS mode isn't enabled) 48; or because its two halves are the same and either XTS_FORBID_WEAK_KEYS is given or FIPS mode is enabled.h]h-EINVAL if the key is rejected because its length isn’t 32, 64, or (when FIPS mode isn’t enabled) 48; or because its two halves are the same and either XTS_FORBID_WEAK_KEYS is given or FIPS mode is enabled.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK&hj'ubah}(h]h ]h"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]jZj7uh1hhj'hK%hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hj$#hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jaes_xts_encrypt (C function)c.aes_xts_encrypthNtauh1jhj$#hhhNhNubj)}(hhh](j)}(hvoid aes_xts_encrypt (u8 *dst, const u8 *src, size_t len, u8 tweak[static AES_BLOCK_SIZE], const struct aes_xts_key *key, bool cont)h]j)}(hvoid aes_xts_encrypt(u8 *dst, const u8 *src, size_t len, u8 tweak[static AES_BLOCK_SIZE], const struct aes_xts_key *key, bool cont)h](j)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK/ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj'hK/ubj)}(haes_xts_encrypth]j)}(haes_xts_encrypth]haes_xts_encrypt}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj'hhhj'hK/ubj)}(ho(u8 *dst, const u8 *src, size_t len, u8 tweak[static AES_BLOCK_SIZE], const struct aes_xts_key *key, bool cont)h](j)}(hu8 *dsth](h)}(hhh]j)}(hu8h]hu8}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj (modnameN classnameNjj)}j]j )}jj(sbc.aes_xts_encryptasbuh1hhj(ubj)}(h h]h }(hj>(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj4)}(hj7h]h*}(hjL(hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj(ubj)}(hdsth]hdst}(hjY(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(h const u8 *srch](j^)}(hjah]hconst}(hjr(hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjn(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn(ubh)}(hhh]j)}(hu8h]hu8}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j:(c.aes_xts_encryptasbuh1hhjn(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn(ubj4)}(hj7h]h*}(hj(hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjn(ubj)}(hsrch]hsrc}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j:(c.aes_xts_encryptasbuh1hhj(ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hlenh]hlen}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(hu8 tweak[static AES_BLOCK_SIZE]h](h)}(hhh]j)}(hu8h]hu8}(hj-)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/)modnameN classnameNjj)}j]j:(c.aes_xts_encryptasbuh1hhj&)ubj)}(h h]h }(hjK)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&)ubj)}(htweakh]htweak}(hjY)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&)ubj4)}(hjXh]h[}(hjg)hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj&)ubj^)}(hjfh]hstatic}(hjt)hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj&)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&)ubh)}(hhh]j)}(hAES_BLOCK_SIZEh]hAES_BLOCK_SIZE}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j:(c.aes_xts_encryptasbuh1hhj&)ubj4)}(hjh]h]}(hj)hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj&)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(hconst struct aes_xts_key *keyh](j^)}(hjah]hconst}(hj)hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj^)}(hj*h]hstruct}(hj)hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubh)}(hhh]j)}(h aes_xts_keyh]h aes_xts_key}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j:(c.aes_xts_encryptasbuh1hhj)ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj4)}(hj7h]h*}(hj-*hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj)ubj)}(hkeyh]hkey}(hj:*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(h bool conth](j)}(hboolh]hbool}(hjS*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO*ubj)}(h h]h }(hja*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO*ubj)}(hconth]hcont}(hjo*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhj'hhhj'hK/ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj'hhhj'hK/ubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1jhj'hK/hj'hhubj)}(hhh]h)}(hEncrypt data using AES-XTSh]hEncrypt data using AES-XTS}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK/hj*hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hK/ubeh}(h]h ](jfunctioneh"]h$]h&]j9jj:j*j;j*j<j=j>uh1jhhhj$#hNhNubj@)}(hXL**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to encrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported. ``u8 tweak[static AES_BLOCK_SIZE]`` The tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified. ``const struct aes_xts_key *key`` The key, already prepared using aes_xts_preparekey() ``bool cont`` ``false`` to begin encrypting a new message (do the tweak encryption); ``true`` to continue encrypting a message (skip tweak encryption) **Description** This supports both one-shot and incremental encryption. On the first call, pass **cont** = ``false``. On any later calls, pass **cont** = ``true`` and the updated **tweak**; all earlier **len** must have been multiples of AES_BLOCK_SIZE. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj*h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK3hj*ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(khj*h]hu8 *dst}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK1hj*ubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK0hj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jdhj*hK1hj*ubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hj+h]h const u8 *src}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK2hj+ubj)}(hhh]h)}(hThe source datah]hThe source data}(hj-+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)+hK2hj*+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jdhj)+hK2hj*ubje)}(h``size_t len`` Number of bytes to encrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported. h](jk)}(h``size_t len``h]jq)}(hjM+h]h size_t len}(hjO+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjK+ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK5hjG+ubj)}(hhh]h)}(hNumber of bytes to encrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported.h]hNumber of bytes to encrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported.}(hjf+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK3hjc+ubah}(h]h ]h"]h$]h&]uh1jhjG+ubeh}(h]h ]h"]h$]h&]uh1jdhjb+hK5hj*ubje)}(h``u8 tweak[static AES_BLOCK_SIZE]`` The tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified. h](jk)}(h#``u8 tweak[static AES_BLOCK_SIZE]``h]jq)}(hj+h]hu8 tweak[static AES_BLOCK_SIZE]}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK7hj+ubj)}(hhh]h)}(hThe tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified.h](h6The tweak. It is updated with the next value, unless }(hj+hhhNhNubjJ)}(h**len**h]hlen}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj+ubhM isn’t a multiple of AES_BLOCK_SIZE in which case the value is unspecified.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK6hj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jdhj+hK7hj*ubje)}(hW``const struct aes_xts_key *key`` The key, already prepared using aes_xts_preparekey() h](jk)}(h!``const struct aes_xts_key *key``h]jq)}(hj+h]hconst struct aes_xts_key *key}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK8hj+ubj)}(hhh]h)}(h4The key, already prepared using aes_xts_preparekey()h]h4The key, already prepared using aes_xts_preparekey()}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hK8hj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jdhj+hK8hj*ubje)}(h``bool cont`` ``false`` to begin encrypting a new message (do the tweak encryption); ``true`` to continue encrypting a message (skip tweak encryption) h](jk)}(h ``bool cont``h]jq)}(hj ,h]h bool cont}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ,ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK:hj,ubj)}(hhh]h)}(h``false`` to begin encrypting a new message (do the tweak encryption); ``true`` to continue encrypting a message (skip tweak encryption)h](jq)}(h ``false``h]hfalse}(hj),hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%,ubh> to begin encrypting a new message (do the tweak encryption); }(hj%,hhhNhNubjq)}(h``true``h]htrue}(hj;,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%,ubh9 to continue encrypting a message (skip tweak encryption)}(hj%,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhK9hj",ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jdhj!,hK:hj*ubeh}(h]h ]h"]h$]h&]uh1j_hj*ubh)}(h**Description**h]jJ)}(hjh,h]h Description}(hjj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjf,ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKuh1jhhhj$#hNhNubj@)}(hXL**Parameters** ``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. ``const u8 *src`` The source data ``size_t len`` Number of bytes to decrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported. ``u8 tweak[static AES_BLOCK_SIZE]`` The tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified. ``const struct aes_xts_key *key`` The key, already prepared using aes_xts_preparekey() ``bool cont`` ``false`` to begin decrypting a new message (do the tweak encryption); ``true`` to continue decrypting a message (skip tweak encryption) **Description** This supports both one-shot and incremental decryption. On the first call, pass **cont** = ``false``. On any later calls, pass **cont** = ``true`` and the updated **tweak**; all earlier **len** must have been multiples of AES_BLOCK_SIZE. **Context** Any context.h](h)}(h**Parameters**h]jJ)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKKhj0ubj`)}(hhh](je)}(hw``u8 *dst`` The destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified. h](jk)}(h ``u8 *dst``h]jq)}(hj;0h]hu8 *dst}(hj=0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj90ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKIhj50ubj)}(hhh]h)}(hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.h]hjThe destination buffer. Can be in-place or out-of-place. For other overlaps the behavior is unspecified.}(hjT0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKHhjQ0ubah}(h]h ]h"]h$]h&]uh1jhj50ubeh}(h]h ]h"]h$]h&]uh1jdhjP0hKIhj20ubje)}(h"``const u8 *src`` The source data h](jk)}(h``const u8 *src``h]jq)}(hju0h]h const u8 *src}(hjw0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjs0ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKJhjo0ubj)}(hhh]h)}(hThe source datah]hThe source data}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKJhj0ubah}(h]h ]h"]h$]h&]uh1jhjo0ubeh}(h]h ]h"]h$]h&]uh1jdhj0hKJhj20ubje)}(h``size_t len`` Number of bytes to decrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported. h](jk)}(h``size_t len``h]jq)}(hj0h]h size_t len}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKMhj0ubj)}(hhh]h)}(hNumber of bytes to decrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported.h]hNumber of bytes to decrypt. On non-final calls it must be a nonzero multiple of AES_BLOCK_SIZE. On the final call it can be any value >= AES_BLOCK_SIZE, i.e. ciphertext stealing is supported.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKKhj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jdhj0hKMhj20ubje)}(h``u8 tweak[static AES_BLOCK_SIZE]`` The tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified. h](jk)}(h#``u8 tweak[static AES_BLOCK_SIZE]``h]jq)}(hj0h]hu8 tweak[static AES_BLOCK_SIZE]}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKOhj0ubj)}(hhh]h)}(hThe tweak. It is updated with the next value, unless **len** isn't a multiple of AES_BLOCK_SIZE in which case the value is unspecified.h](h6The tweak. It is updated with the next value, unless }(hj1hhhNhNubjJ)}(h**len**h]hlen}(hj 1hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubhM isn’t a multiple of AES_BLOCK_SIZE in which case the value is unspecified.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKNhj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jdhj0hKOhj20ubje)}(hW``const struct aes_xts_key *key`` The key, already prepared using aes_xts_preparekey() h](jk)}(h!``const struct aes_xts_key *key``h]jq)}(hj41h]hconst struct aes_xts_key *key}(hj61hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj21ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKPhj.1ubj)}(hhh]h)}(h4The key, already prepared using aes_xts_preparekey()h]h4The key, already prepared using aes_xts_preparekey()}(hjM1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI1hKPhjJ1ubah}(h]h ]h"]h$]h&]uh1jhj.1ubeh}(h]h ]h"]h$]h&]uh1jdhjI1hKPhj20ubje)}(h``bool cont`` ``false`` to begin decrypting a new message (do the tweak encryption); ``true`` to continue decrypting a message (skip tweak encryption) h](jk)}(h ``bool cont``h]jq)}(hjm1h]h bool cont}(hjo1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjk1ubah}(h]h ]h"]h$]h&]uh1jjhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKRhjg1ubj)}(hhh]h)}(h``false`` to begin decrypting a new message (do the tweak encryption); ``true`` to continue decrypting a message (skip tweak encryption)h](jq)}(h ``false``h]hfalse}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh> to begin decrypting a new message (do the tweak encryption); }(hj1hhhNhNubjq)}(h``true``h]htrue}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh9 to continue decrypting a message (skip tweak encryption)}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKQhj1ubah}(h]h ]h"]h$]h&]uh1jhjg1ubeh}(h]h ]h"]h$]h&]uh1jdhj1hKRhj20ubeh}(h]h ]h"]h$]h&]uh1j_hj0ubh)}(h**Description**h]jJ)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKThj0ubh)}(hThis supports both one-shot and incremental decryption. On the first call, pass **cont** = ``false``. On any later calls, pass **cont** = ``true`` and the updated **tweak**; all earlier **len** must have been multiples of AES_BLOCK_SIZE.h](hQThis supports both one-shot and incremental decryption. On the first call, pass }(hj1hhhNhNubjJ)}(h**cont**h]hcont}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubh = }(hj1hhhNhNubjq)}(h ``false``h]hfalse}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh. On any later calls, pass }(hj1hhhNhNubjJ)}(h**cont**h]hcont}(hj 2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubh = }hj1sbjq)}(h``true``h]htrue}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh and the updated }(hj1hhhNhNubjJ)}(h **tweak**h]htweak}(hj/2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubh; all earlier }(hj1hhhNhNubjJ)}(h**len**h]hlen}(hjA2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1ubh, must have been multiples of AES_BLOCK_SIZE.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKShj0ubh)}(h **Context**h]jJ)}(hj\2h]hContext}(hj^2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjZ2ubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKWhj0ubh)}(h Any context.h]h Any context.}(hjr2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhk/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-unauth-encryption:49: ./include/crypto/aes-xts.hhKXhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1j?hj$#hhhNhNubeh}(h]aes-xtsah ]h"]aes-xtsah$]h&]uh1hhhhhhhhK-ubeh}(h]unauthenticated-encryptionah ]h"]unauthenticated encryptionah$]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_handlerj2error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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}(j2j2jjj'j$j!#j#j2j2u nametypes}(j2jj'j!#j2uh}(j2hjjjjjjjj j jxj}j$jjjjj"j#j*jUjZjjj2j$#jO#jT#j>$jC$j'j'j3-j8-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.