krb5_crypto(3)
krb5_crypto(3) β Heimdal Kerberos 5 library
π NAME π
krb5_crypto β Heimdal Kerberos 5 cryptography functions, bestie. That's the whole vibe.
β¨ SYNOPSIS β¨
okay so here's the entire cast of functions, literally every single one, no skips:
Functions
HEIMDAL_WARN_UNUSED_RESULT_ATTRIBUTE KRB5_LIB_FUNCTION krb5_error_code
KRB5_LIB_CALL krb5_generate_random (void *buf, size_t len)
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_generate_random_block (void
*buf, size_t len)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_valid
(krb5_context context, krb5_enctype etype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_cksumtype_to_enctype (krb5_context context, krb5_cksumtype
ctype, krb5_enctype *etype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_encrypt_iov_ivec
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov *data, int num_data, void *ivec)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_decrypt_iov_ivec
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov *data, unsigned int num_data, void *ivec)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_create_checksum_iov
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov *data, unsigned int num_data, krb5_cksumtype *type)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_verify_checksum_iov
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov *data, unsigned int num_data, krb5_cksumtype *type)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_init
(krb5_context context, const krb5_keyblock *key, krb5_enctype etype,
krb5_crypto *crypto)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_destroy
(krb5_context context, krb5_crypto crypto)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getblocksize
(krb5_context context, krb5_crypto crypto, size_t *blocksize)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getenctype
(krb5_context context, krb5_crypto crypto, krb5_enctype *enctype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getpadsize
(krb5_context context, krb5_crypto crypto, size_t *padsize)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_crypto_getconfoundersize (krb5_context context, krb5_crypto
crypto, size_t *confoundersize)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_disable
(krb5_context context, krb5_enctype enctype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_enable
(krb5_context context, krb5_enctype enctype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_allow_weak_crypto
(krb5_context context, krb5_boolean enable)
KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_enctype_weak
(krb5_context context, krb5_enctype enctype)
KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
_krb5_enctype_requires_random_salt (krb5_context context,
krb5_enctype enctype)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_random_to_key
(krb5_context context, krb5_enctype type, const void *data, size_t
size, krb5_keyblock *key)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_fx_cf2
(krb5_context context, const krb5_crypto crypto1, const krb5_crypto
crypto2, krb5_data *pepper1, krb5_data *pepper2, krb5_enctype
enctype, krb5_keyblock *res)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_generate_subkey_extended (krb5_context context, const
krb5_keyblock *key, krb5_enctype etype, krb5_keyblock **subkey)
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_keyblock_zero (krb5_keyblock
*keyblock)
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock_contents
(krb5_context context, krb5_keyblock *keyblock)
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock (krb5_context
context, krb5_keyblock *keyblock)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_copy_keyblock_contents (krb5_context context, const
krb5_keyblock *inblock, krb5_keyblock *to)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock
(krb5_context context, const krb5_keyblock *inblock, krb5_keyblock
**to)
KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL krb5_keyblock_get_enctype
(const krb5_keyblock *block)
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keyblock_init
(krb5_context context, krb5_enctype type, const void *data, size_t
size, krb5_keyblock *key)
krb5_error_code _krb5_SP800_108_HMAC_KDF (krb5_context context, const
krb5_data *kdf_K1, const krb5_data *kdf_label, const krb5_data
*kdf_context, const EVP_MD *md, krb5_data *kdf_K0)
πΈ Detailed Description πΈ
okay so the original page has this heading and then literally nothing before Function Documentation. No extra lore, bestie. Just vibes. π
π Function Documentation π
_krb5_enctype_requires_random_salt
KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
_krb5_enctype_requires_random_salt (krb5_context context, krb5_enctype
enctype)
Returns whether the encryption type should use randomly generated salts. Like, does this enctype want its salt to have a random little sprinkle? β¨
Parameters
contextβ Kerberos 5 context. The main character.enctypeβ encryption type to probe. The one we're checking.
Returns
Returns true if generated salts should have random component. So true = random salt vibes, false = no random component.
_krb5_SP800_108_HMAC_KDF
krb5_error_code _krb5_SP800_108_HMAC_KDF (krb5_context context, const
krb5_data * kdf_K1, const krb5_data * kdf_label, const krb5_data *
kdf_context, const EVP_MD * md, krb5_data * kdf_K0)
As described in SP800-108 5.1 (for HMAC). That's the tea. π«
Parameters
contextβ Kerberos 5 context.kdf_K1β Base key material.kdf_labelβ A string that identifies the purpose for the derived key.kdf_contextβ A binary string containing parties, nonce, etc.mdβ Message digest function to use for PRF.kdf_K0β Derived key data.
Returns
Return an error code for an failure or 0 on success. So 0 = slay, error code = not slay.
krb5_allow_weak_crypto
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_allow_weak_crypto
(krb5_context context, krb5_boolean enable)
Enable or disable all weak encryption types.
Parameters
contextβ Kerberos 5 context.enableβ true to enable, false to disable.
Returns
Return an error code or 0.
krb5_cksumtype_to_enctype
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cksumtype_to_enctype
(krb5_context context, krb5_cksumtype ctype, krb5_enctype * etype)
Return the coresponding encryption type for a checksum type. (yes, the original says "coresponding", we're keeping the vibe.)
Parameters
contextβ Kerberos context.ctypeβ The checksum type to get the result enctype for.etypeβ The returned encryption, when the matching etype is not found, etype is set to ETYPE_NULL.
Returns
Return an error code for an failure or 0 on success.
krb5_copy_keyblock
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock
(krb5_context context, const krb5_keyblock * inblock, krb5_keyblock **
to)
Copy a keyblock, free the output keyblock with krb5_free_keyblock().
Parameters
contextβ a Kerberos 5 context.inblockβ the key to copy.toβ the output key.
Returns
0 on success or a Kerberos 5 error code
krb5_copy_keyblock_contents
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock_contents
(krb5_context context, const krb5_keyblock * inblock, krb5_keyblock *
to)
Copy a keyblock, free the output keyblock with krb5_free_keyblock_contents().
Parameters
contextβ a Kerberos 5 context.inblockβ the key to copy.toβ the output key.
Returns
0 on success or a Kerberos 5 error code
krb5_create_checksum_iov
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_create_checksum_iov
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov * data, unsigned int num_data, krb5_cksumtype * type)
Create a Kerberos message checksum.
Parameters
contextβ Kerberos context.cryptoβ Kerberos crypto context.usageβ Key usage for this buffer.dataβ array of buffers to process.num_dataβ length of array.typeβ output data.
Returns
Return an error code or 0.
krb5_crypto_destroy
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_destroy
(krb5_context context, krb5_crypto crypto)
Free a crypto context created by krb5_crypto_init().
Parameters
contextβ Kerberos context.cryptoβ crypto context to free.
Returns
Return an error code or 0.
krb5_crypto_fx_cf2
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_fx_cf2
(krb5_context context, const krb5_crypto crypto1, const krb5_crypto
crypto2, krb5_data * pepper1, krb5_data * pepper2, krb5_enctype enctype,
krb5_keyblock * res)
The FX-CF2 key derivation function, used in FAST and preauth framework.
Parameters
contextβ Kerberos 5 context.crypto1β first key to combine.crypto2β second key to combine.pepper1β factor to combine with first key to garante uniqueness.pepper2β factor to combine with second key to garante uniqueness.enctypeβ the encryption type of the resulting key.resβ allocated key, free with krb5_free_keyblock_contents().
Returns
Return an error code or 0.
krb5_crypto_getblocksize
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getblocksize
(krb5_context context, krb5_crypto crypto, size_t * blocksize)
Return the blocksize used algorithm referenced by the crypto context
Parameters
contextβ Kerberos context.cryptoβ crypto context to query.blocksizeβ the resulting blocksize.
Returns
Return an error code or 0.
krb5_crypto_getconfoundersize
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_crypto_getconfoundersize (krb5_context context, krb5_crypto crypto,
size_t * confoundersize)
Return the confounder size used by the crypto context
Parameters
contextβ Kerberos context.cryptoβ crypto context to query.confoundersizeβ the returned confounder size.
Returns
Return an error code or 0.
krb5_crypto_getenctype
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getenctype
(krb5_context context, krb5_crypto crypto, krb5_enctype * enctype)
Return the encryption type used by the crypto context
Parameters
contextβ Kerberos context.cryptoβ crypto context to query.enctypeβ the resulting encryption type.
Returns
Return an error code or 0.
krb5_crypto_getpadsize
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getpadsize
(krb5_context context, krb5_crypto crypto, size_t * padsize)
Return the padding size used by the crypto context
Parameters
contextβ Kerberos context.cryptoβ crypto context to query.padsizeβ the return padding size.
Returns
Return an error code or 0.
krb5_crypto_init
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_init
(krb5_context context, const krb5_keyblock * key, krb5_enctype etype,
krb5_crypto * crypto)
Create a crypto context used for all encryption and signature operation. The encryption type to use is taken from the key, but can be overridden with the enctype parameter. This can be useful for encryptions types which is compatiable (DES for example).
To free the crypto context, use krb5_crypto_destroy().
Parameters:
contextβ Kerberos contextkeyβ the key block information with all key dataetypeβ the encryption typecryptoβ the resulting crypto context
Returns: Return an error code or 0.
π¦ krb5_decrypt_iov_ivec π¦
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_decrypt_iov_ivec
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov * data, unsigned int num_data, void * ivec)
Inline decrypt a Kerberos message. It's giving decryption, bestie.
Parameters:
contextβ Kerberos contextcryptoβ Kerberos crypto contextusageβ Key usage for this bufferdataβ array of buffers to processnum_dataβ length of arrayivecβ initial cbc/cts vector
Returns: Return an error code or 0.
KRB5_CRYPTO_TYPE_HEADER- one
KRB5_CRYPTO_TYPE_DATAand array[0,...]ofKRB5_CRYPTO_TYPE_SIGN_ONLYin any order, however the receiver has to be aware of the order.KRB5_CRYPTO_TYPE_SIGN_ONLYis commonly used for unencrypted protocol headers and trailers. The output data will be of same size as the input data or shorter.
π₯ krb5_encrypt_iov_ivec π₯
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_encrypt_iov_ivec
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov * data, int num_data, void * ivec)
Inline encrypt a kerberos message. Yes, the encryption vibe.
Parameters:
contextβ Kerberos contextcryptoβ Kerberos crypto contextusageβ Key usage for this bufferdataβ array of buffers to processnum_dataβ length of arrayivecβ initial cbc/cts vector
Returns: Return an error code or 0.
Kerberos encrypted data look like this:
KRB5_CRYPTO_TYPE_HEADER- array
[1,...]KRB5_CRYPTO_TYPE_DATAand array[0,...]KRB5_CRYPTO_TYPE_SIGN_ONLYin any order, however the receiver has to be aware of the order.KRB5_CRYPTO_TYPE_SIGN_ONLYis commonly used for headers and trailers. KRB5_CRYPTO_TYPE_PADDING, at least onpadsizelong ifpadsize > 1KRB5_CRYPTO_TYPE_TRAILER
π
krb5_enctype_disable π
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_disable
(krb5_context context, krb5_enctype enctype)
Disable encryption type. No more of that etype, periodt.
Parameters:
contextβ Kerberos 5 contextenctypeβ encryption type to disable
Returns: Return an error code or 0.
β¨ krb5_enctype_enable β¨
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_enable
(krb5_context context, krb5_enctype enctype)
Enable encryption type. Bring it back, bestie.
Parameters:
contextβ Kerberos 5 contextenctypeβ encryption type to enable
Returns: Return an error code or 0.
πΈ krb5_enctype_valid πΈ
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_valid
(krb5_context context, krb5_enctype etype)
Check if a enctype is valid, return 0 if it is. It's giving validation.
Parameters:
contextβ Kerberos contextetypeβ enctype to check if its valid or not
Returns: Return an error code for an failure or 0 on success (enctype valid).
π krb5_free_keyblock π
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock (krb5_context
context, krb5_keyblock * keyblock)
Free a keyblock, also zero out the content of the keyblock, uses krb5_free_keyblock_contents() to free the content.
Parameters:
contextβ a Kerberos 5 contextkeyblockβ keyblock to free,NULLis valid argument
π«Ά krb5_free_keyblock_contents π«Ά
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock_contents
(krb5_context context, krb5_keyblock * keyblock)
Free a keyblock's content, also zero out the content of the keyblock.
Parameters:
contextβ a Kerberos 5 contextkeyblockβ keyblock content to free,NULLis valid argument
π krb5_generate_random π
HEIMDAL_WARN_UNUSED_RESULT_ATTRIBUTE KRB5_LIB_FUNCTION krb5_error_code
KRB5_LIB_CALL krb5_generate_random (void * buf, size_t len)
Fill buffer buf with len bytes of PRNG randomness that is ok to use for key generation, padding and public disclosing the randomness w/o disclosing the randomness source.
This function can fail, and callers must check the return value. No cap.
Parameters:
bufβ a buffer to fill with randomnesslenβ length of memory thatbufpoints to.
Returns: return 0 on success or HEIM_ERR_RANDOM_OFFLINE if the function failed to initialize the randomness source.
π krb5_generate_random_block π
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_generate_random_block (void * buf,
size_t len)
Fill buffer buf with len bytes of PRNG randomness that is ok to use for key generation, padding and public disclosing the randomness w/o disclosing the randomness source.
WARNING: This function can NOT fail, instead it will abort() and program will crash. π
If this function is called after a successful krb5_init_context(), the chance of it failing is low due to that krb5_init_context() pulls out some random, and quite commonly the randomness sources will not fail once it have started to produce good output, /dev/urandom behaves that way.
Parameters:
bufβ a buffer to fill with randomnesslenβ length of memory thatbufpoints to.
π§ krb5_generate_subkey_extended π§
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_generate_subkey_extended (krb5_context context, const krb5_keyblock
* key, krb5_enctype etype, krb5_keyblock ** subkey)
Generate subkey, from keyblock. It's giving subkey energy.
Parameters:
contextβ kerberos contextkeyβ session keyetypeβ encryption type of subkey, ifETYPE_NULL, use key's enctypesubkeyβ returned new, free withkrb5_free_keyblock().
Returns: 0 on success or a Kerberos 5 error code
π krb5_is_enctype_weak π
KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_enctype_weak
(krb5_context context, krb5_enctype enctype)
Returns is the encryption is strong or weak. Vibe check on that enctype.
Parameters:
contextβ Kerberos 5 contextenctypeβ encryption type to probe
Returns: Returns true if encryption type is weak or is not supported.
β krb5_keyblock_get_enctype β
KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL krb5_keyblock_get_enctype
(const krb5_keyblock * block)
Get encryption type of a keyblock. Simple as that.
π krb5_keyblock_init π
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keyblock_init
(krb5_context context, krb5_enctype type, const void * data, size_t
size, krb5_keyblock * key)
Fill in key' with key data of type enctype' from data' of length size'. Key should be freed using krb5_free_keyblock_contents().
Returns: 0 on success or a Kerberos 5 error code
π krb5_keyblock_zero π
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_keyblock_zero (krb5_keyblock *
keyblock)
Zero out a keyblock. Bye bye key data.
Parameters:
keyblockβ keyblock to zero out
π krb5_random_to_key π
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_random_to_key
(krb5_context context, krb5_enctype type, const void * data, size_t
size, krb5_keyblock * key)
Converts the random bytestring to a protocol key according to Kerberos crypto frame work. It may be assumed that all the bits of the input string are equally random, even though the entropy present in the random source may be limited.
Parameters:
contextβ Kerberos 5 contexttypeβ the enctype resulting key will be ofdataβ input random data to convert to a keysizeβ size of input random data, at leastkrb5_enctype_keysize()longkeyβ key, output key, free withkrb5_free_keyblock_contents()
Returns: Return an error code or 0.
π krb5_verify_checksum_iov π
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_verify_checksum_iov
(krb5_context context, krb5_crypto crypto, unsigned usage,
krb5_crypto_iov * data, unsigned int num_data, krb5_cksumtype * type)
Verify a Kerberos message checksum. Trust but verify, bestie.
Parameters:
contextβ Kerberos contextcryptoβ Kerberos crypto contextusageβ Key usage for this bufferdataβ array of buffers to processnum_dataβ length of arraytypeβ return checksum type if notNULL
Returns: Return an error code or 0.
πΈ Author πΈ
Generated automatically by Doxygen for Heimdal Kerberos 5 library from the source code.
That's the vibe. This page is from Heimdal Kerberos 5 library, version 7.8.0, dated Tue Nov 15 2022. Stay slay, bestie! πβ¨
π¦ where this page comes from
- alpine 3.22: heimdal-doc 7.8.0-r4 Β· BSD-3-Clause
- alpine 3.23: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- alpine 3.24: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- epel 10: heimdal-devel 7.8.0-26.el10_2 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- epel 9: heimdal-devel 7.8.0-5.el9 Β· BSD and MIT
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms