€•fˆŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/crypto/krb5”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ9/var/lib/git/docbuild/linux/Documentation/crypto/krb5.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒKerberos V Cryptography API”h]”hŒKerberos V Cryptography API”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´Kubh¶)”}”(hŒóContents: - Overview. - Small Buffer. - Encoding Type. - Key Derivation. - PRF+ Calculation. - Kc, Ke And Ki Derivation. - Crypto Functions. - Preparation Functions. - Encryption Mode. - Checksum Mode. - The krb5enc AEAD algorithm”h]”hŒóContents: - Overview. - Small Buffer. - Encoding Type. - Key Derivation. - PRF+ Calculation. - Kc, Ke And Ki Derivation. - Crypto Functions. - Preparation Functions. - Encryption Mode. - Checksum Mode. - The krb5enc AEAD algorithm”…””}”hhÝsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒOverview”h]”hŒOverview”…””}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhëh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒÊThis API provides Kerberos 5-style cryptography for key derivation, encryption and checksumming for use in network filesystems and can be used to implement the low-level crypto that's needed for GSSAPI.”h]”hŒÌThis API provides Kerberos 5-style cryptography for key derivation, encryption and checksumming for use in network filesystems and can be used to implement the low-level crypto that’s needed for GSSAPI.”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Khhëh²hubhý)”}”(hŒ*The following crypto types are supported::”h]”hŒ)The following crypto types are supported:”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Khhëh²hubhŒ literal_block”“”)”}”(hX°KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96 KRB5_ENCTYPE_AES256_CTS_HMAC_SHA1_96 KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128 KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192 KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC KRB5_CKSUMTYPE_HMAC_SHA1_96_AES128 KRB5_CKSUMTYPE_HMAC_SHA1_96_AES256 KRB5_CKSUMTYPE_CMAC_CAMELLIA128 KRB5_CKSUMTYPE_CMAC_CAMELLIA256 KRB5_CKSUMTYPE_HMAC_SHA256_128_AES128 KRB5_CKSUMTYPE_HMAC_SHA384_192_AES256”h]”hX°KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96 KRB5_ENCTYPE_AES256_CTS_HMAC_SHA1_96 KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128 KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192 KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC KRB5_CKSUMTYPE_HMAC_SHA1_96_AES128 KRB5_CKSUMTYPE_HMAC_SHA1_96_AES256 KRB5_CKSUMTYPE_CMAC_CAMELLIA128 KRB5_CKSUMTYPE_CMAC_CAMELLIA256 KRB5_CKSUMTYPE_HMAC_SHA256_128_AES128 KRB5_CKSUMTYPE_HMAC_SHA384_192_AES256”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Khhëh²hubhý)”}”(hŒThe API can be included by::”h]”hŒThe API can be included by:”…””}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K,hhëh²hubj)”}”(hŒ#include ”h]”hŒ#include ”…””}”hj8sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K.hhëh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Small Buffer”h]”hŒ Small Buffer”…””}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjFh²hh³hÇh´K1ubhý)”}”(hŒ‰To pass small pieces of data about, such as keys, a buffer structure is defined, giving a pointer to the data and the size of that data::”h]”hŒˆTo pass small pieces of data about, such as keys, a buffer structure is defined, giving a pointer to the data and the size of that data:”…””}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K3hjFh²hubj)”}”(hŒSstruct krb5_buffer { unsigned int len; void *data; };”h]”hŒSstruct krb5_buffer { unsigned int len; void *data; };”…””}”hjesbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K6hjFh²hubeh}”(h]”Œ small-buffer”ah ]”h"]”Œ small buffer”ah$]”h&]”uh1hÈhhëh²hh³hÇh´K1ubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Encoding Type”h]”hŒ Encoding Type”…””}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjƒh²hh³hÇh´Khjƒh²hubj)”}”(hX®struct krb5_enctype { int etype; int ctype; const char *name; u16 key_bytes; u16 key_len; u16 Kc_len; u16 Ke_len; u16 Ki_len; u16 prf_len; u16 block_len; u16 conf_len; u16 cksum_len; ... };”h]”hX®struct krb5_enctype { int etype; int ctype; const char *name; u16 key_bytes; u16 key_len; u16 Kc_len; u16 Ke_len; u16 Ki_len; u16 prf_len; u16 block_len; u16 conf_len; u16 cksum_len; ... };”…””}”hj¢sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K@hjƒh²hubhý)”}”(hŒ=The fields of interest to the user of the API are as follows:”h]”hŒ=The fields of interest to the user of the API are as follows:”…””}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KPhjƒh²hubhŒ block_quote”“”)”}”(hXj* ``etype`` and ``ctype`` indicate the protocol number for this encoding type for encryption and checksumming respectively. They hold ``KRB5_ENCTYPE_*`` and ``KRB5_CKSUMTYPE_*`` constants. * ``name`` is the formal name of the encoding. * ``key_len`` and ``key_bytes`` are the input key length and the derived key length. (I think they only differ for DES, which isn't supported here). * ``Kc_len``, ``Ke_len`` and ``Ki_len`` are the sizes of the derived Kc, Ke and Ki keys. Kc is used for in checksum mode; Ke and Ki are used in encryption mode. * ``prf_len`` is the size of the result from the PRF+ function calculation. * ``block_len``, ``conf_len`` and ``cksum_len`` are the encryption block length, confounder length and checksum length respectively. All three are used in encryption mode, but only the checksum length is used in checksum mode. ”h]”hŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ¼``etype`` and ``ctype`` indicate the protocol number for this encoding type for encryption and checksumming respectively. They hold ``KRB5_ENCTYPE_*`` and ``KRB5_CKSUMTYPE_*`` constants. ”h]”hý)”}”(hŒ»``etype`` and ``ctype`` indicate the protocol number for this encoding type for encryption and checksumming respectively. They hold ``KRB5_ENCTYPE_*`` and ``KRB5_CKSUMTYPE_*`` constants.”h]”(hŒliteral”“”)”}”(hŒ ``etype``”h]”hŒetype”…””}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjÏubhŒ and ”…””}”(hjÏh²hh³Nh´NubjÔ)”}”(hŒ ``ctype``”h]”hŒctype”…””}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjÏubhŒn indicate the protocol number for this encoding type for encryption and checksumming respectively. They hold ”…””}”(hjÏh²hh³Nh´NubjÔ)”}”(hŒ``KRB5_ENCTYPE_*``”h]”hŒKRB5_ENCTYPE_*”…””}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjÏubhŒ and ”…””}”hjÏsbjÔ)”}”(hŒ``KRB5_CKSUMTYPE_*``”h]”hŒKRB5_CKSUMTYPE_*”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjÏubhŒ constants.”…””}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KRhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubjÊ)”}”(hŒ-``name`` is the formal name of the encoding. ”h]”hý)”}”(hŒ,``name`` is the formal name of the encoding.”h]”(jÔ)”}”(hŒ``name``”h]”hŒname”…””}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj-ubhŒ$ is the formal name of the encoding.”…””}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KVhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubjÊ)”}”(hŒ”``key_len`` and ``key_bytes`` are the input key length and the derived key length. (I think they only differ for DES, which isn't supported here). ”h]”hý)”}”(hŒ“``key_len`` and ``key_bytes`` are the input key length and the derived key length. (I think they only differ for DES, which isn't supported here).”h]”(jÔ)”}”(hŒ ``key_len``”h]”hŒkey_len”…””}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjSubhŒ and ”…””}”(hjSh²hh³Nh´NubjÔ)”}”(hŒ ``key_bytes``”h]”hŒ key_bytes”…””}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjSubhŒx are the input key length and the derived key length. (I think they only differ for DES, which isn’t supported here).”…””}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KXhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubjÊ)”}”(hŒ ``Kc_len``, ``Ke_len`` and ``Ki_len`` are the sizes of the derived Kc, Ke and Ki keys. Kc is used for in checksum mode; Ke and Ki are used in encryption mode. ”h]”hý)”}”(hŒŸ``Kc_len``, ``Ke_len`` and ``Ki_len`` are the sizes of the derived Kc, Ke and Ki keys. Kc is used for in checksum mode; Ke and Ki are used in encryption mode.”h]”(jÔ)”}”(hŒ ``Kc_len``”h]”hŒKc_len”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj‹ubhŒ, ”…””}”(hj‹h²hh³Nh´NubjÔ)”}”(hŒ ``Ke_len``”h]”hŒKe_len”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj‹ubhŒ and ”…””}”(hj‹h²hh³Nh´NubjÔ)”}”(hŒ ``Ki_len``”h]”hŒKi_len”…””}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj‹ubhŒz are the sizes of the derived Kc, Ke and Ki keys. Kc is used for in checksum mode; Ke and Ki are used in encryption mode.”…””}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K[hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubjÊ)”}”(hŒJ``prf_len`` is the size of the result from the PRF+ function calculation. ”h]”hý)”}”(hŒI``prf_len`` is the size of the result from the PRF+ function calculation.”h]”(jÔ)”}”(hŒ ``prf_len``”h]”hŒprf_len”…””}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjÕubhŒ> is the size of the result from the PRF+ function calculation.”…””}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K_hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubjÊ)”}”(hŒâ``block_len``, ``conf_len`` and ``cksum_len`` are the encryption block length, confounder length and checksum length respectively. All three are used in encryption mode, but only the checksum length is used in checksum mode. ”h]”hý)”}”(hŒá``block_len``, ``conf_len`` and ``cksum_len`` are the encryption block length, confounder length and checksum length respectively. All three are used in encryption mode, but only the checksum length is used in checksum mode.”h]”(jÔ)”}”(hŒ ``block_len``”h]”hŒ block_len”…””}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjûubhŒ, ”…””}”(hjûh²hh³Nh´NubjÔ)”}”(hŒ ``conf_len``”h]”hŒconf_len”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjûubhŒ and ”…””}”(hjûh²hh³Nh´NubjÔ)”}”(hŒ ``cksum_len``”h]”hŒ cksum_len”…””}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjûubhŒ´ are the encryption block length, confounder length and checksum length respectively. All three are used in encryption mode, but only the checksum length is used in checksum mode.”…””}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kahj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jÄh³hÇh´KRhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³hÇh´KRhjƒh²hubhý)”}”(hŒGThe encoding type is looked up by number using the following function::”h]”hŒFThe encoding type is looked up by number using the following function:”…””}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kfhjƒh²hubj)”}”(hŒAconst struct krb5_enctype *crypto_krb5_find_enctype(u32 enctype);”h]”hŒAconst struct krb5_enctype *crypto_krb5_find_enctype(u32 enctype);”…””}”hj]sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Khhjƒh²hubeh}”(h]”Œ encoding-type”ah ]”h"]”Œ encoding type”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kssize_t crypto_krb5_encrypt(const struct krb5_enctype *krb5, struct crypto_aead *aead, struct scatterlist *sg, unsigned int nr_sg, size_t sg_len, size_t data_offset, size_t data_len, bool preconfounded); int crypto_krb5_decrypt(const struct krb5_enctype *krb5, struct crypto_aead *aead, struct scatterlist *sg, unsigned int nr_sg, size_t *_offset, size_t *_len);”h]”hX>ssize_t crypto_krb5_encrypt(const struct krb5_enctype *krb5, struct crypto_aead *aead, struct scatterlist *sg, unsigned int nr_sg, size_t sg_len, size_t data_offset, size_t data_len, bool preconfounded); int crypto_krb5_decrypt(const struct krb5_enctype *krb5, struct crypto_aead *aead, struct scatterlist *sg, unsigned int nr_sg, size_t *_offset, size_t *_len);”…””}”hjÎsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´KÌhj¯h²hubhý)”}”(hŒRIn both cases, the input and output buffers are indicated by the same scatterlist.”h]”hŒRIn both cases, the input and output buffers are indicated by the same scatterlist.”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K×hj¯h²hubhý)”}”(hXFor the encryption function, the output buffer may be larger than is needed (the amount of output generated is returned) and the location and size of the data are indicated (which must match the encoding). If no confounder is set, the function will insert one.”h]”hXFor the encryption function, the output buffer may be larger than is needed (the amount of output generated is returned) and the location and size of the data are indicated (which must match the encoding). If no confounder is set, the function will insert one.”…””}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KÚhj¯h²hubhý)”}”(hŒëFor the decryption function, the offset and length of the message in buffer are supplied and these are shrunk to fit the data. The decryption function will verify any checksums within the message and give an error if they don't match.”h]”hŒíFor the decryption function, the offset and length of the message in buffer are supplied and these are shrunk to fit the data. The decryption function will verify any checksums within the message and give an error if they don’t match.”…””}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kßhj¯h²hubeh}”(h]”Œencryption-mode”ah ]”h"]”Œencryption mode”ah$]”h&]”uh1hÈhjÝh²hh³hÇh´KÈubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Checksum Mode”h]”hŒ Checksum Mode”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´Käubhý)”}”(hŒcA pair of function are provided to generate the checksum on a message and to verify that checksum::”h]”hŒbA pair of function are provided to generate the checksum on a message and to verify that checksum:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kæhjh²hubj)”}”(hXssize_t crypto_krb5_get_mic(const struct krb5_enctype *krb5, struct crypto_shash *shash, const struct krb5_buffer *metadata, struct scatterlist *sg, unsigned int nr_sg, size_t sg_len, size_t data_offset, size_t data_len); int crypto_krb5_verify_mic(const struct krb5_enctype *krb5, struct crypto_shash *shash, const struct krb5_buffer *metadata, struct scatterlist *sg, unsigned int nr_sg, size_t *_offset, size_t *_len);”h]”hXssize_t crypto_krb5_get_mic(const struct krb5_enctype *krb5, struct crypto_shash *shash, const struct krb5_buffer *metadata, struct scatterlist *sg, unsigned int nr_sg, size_t sg_len, size_t data_offset, size_t data_len); int crypto_krb5_verify_mic(const struct krb5_enctype *krb5, struct crypto_shash *shash, const struct krb5_buffer *metadata, struct scatterlist *sg, unsigned int nr_sg, size_t *_offset, size_t *_len);”…””}”hj-sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Kéhjh²hubhý)”}”(hŒªIn both cases, the input and output buffers are indicated by the same scatterlist. Additional metadata can be passed in which will get added to the hash before the data.”h]”hŒªIn both cases, the input and output buffers are indicated by the same scatterlist. Additional metadata can be passed in which will get added to the hash before the data.”…””}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kõhjh²hubhý)”}”(hŒÊFor the get_mic function, the output buffer may be larger than is needed (the amount of output generated is returned) and the location and size of the data are indicated (which must match the encoding).”h]”hŒÊFor the get_mic function, the output buffer may be larger than is needed (the amount of output generated is returned) and the location and size of the data are indicated (which must match the encoding).”…””}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kùhjh²hubhý)”}”(hŒ¹For the verification function, the offset and length of the message in buffer are supplied and these are shrunk to fit the data. An error will be returned if the checksums don't match.”h]”hŒ»For the verification function, the offset and length of the message in buffer are supplied and these are shrunk to fit the data. An error will be returned if the checksums don’t match.”…””}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kýhjh²hubeh}”(h]”Œ checksum-mode”ah ]”h"]”Œ checksum mode”ah$]”h&]”uh1hÈhjÝh²hh³hÇh´Käubeh}”(h]”Œcrypto-functions”ah ]”h"]”Œcrypto functions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒThe krb5enc AEAD algorithm”h]”hŒThe krb5enc AEAD algorithm”…””}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjuh²hh³hÇh´Mubhý)”}”(hX,A template AEAD crypto algorithm, called "krb5enc", is provided that hashes the plaintext before encrypting it (the reverse of authenc). The handle returned by ``crypto_krb5_prepare_encryption()`` may be one of these, but there's no requirement for the user of this API to interact with it directly.”h]”(hŒ¥A template AEAD crypto algorithm, called “krb5encâ€, is provided that hashes the plaintext before encrypting it (the reverse of authenc). The handle returned by ”…””}”(hj†h²hh³Nh´NubjÔ)”}”(hŒ$``crypto_krb5_prepare_encryption()``”h]”hŒ crypto_krb5_prepare_encryption()”…””}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj†ubhŒi may be one of these, but there’s no requirement for the user of this API to interact with it directly.”…””}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Mhjuh²hubhý)”}”(hŒùFor reference, its key format begins with a BE32 of the format number. Only format 1 is provided and that continues with a BE32 of the Ke key length followed by a BE32 of the Ki key length, followed by the bytes from the Ke key and then the Ki key.”h]”hŒùFor reference, its key format begins with a BE32 of the format number. Only format 1 is provided and that continues with a BE32 of the Ke key length followed by a BE32 of the Ki key length, followed by the bytes from the Ke key and then the Ki key.”…””}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´M hjuh²hubhý)”}”(hŒ^Using specifically ordered words means that the static test data doesn't require byteswapping.”h]”hŒ`Using specifically ordered words means that the static test data doesn’t require byteswapping.”…””}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Mhjuh²hubeh}”(h]”Œthe-krb5enc-aead-algorithm”ah ]”h"]”Œthe krb5enc aead algorithm”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Mubeh}”(h]”Œkerberos-v-cryptography-api”ah ]”h"]”Œkerberos v cryptography api”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jõŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÏjÌj€j}jxjujpjmjÚj×jÒjÏjrjoj¬j©j jjjjgjÇjÄuŒ nametypes”}”(jωj€‰jx‰jp‰jÚ‰jÒ‰jr‰j¬‰j ‰jj‰jljuh}”(jÌhÊj}hëjujFjmjƒj×jsjÏj’jojÝj©jljj¯jgjjÄjuuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.