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) |
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
context | Kerberos 5 context |
enctype | encryption type to probe |
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)
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. |
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
context | Kerberos 5 context |
enable | true to enable, false to disable |
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.
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. |
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().
context | a Kerberos 5 context |
inblock | the key to copy |
to | the output key. |
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().
context | a Kerberos 5 context |
inblock | the key to copy |
to | the output key. |
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.
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 |
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().
context | Kerberos context |
crypto | crypto context to free |
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.
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() |
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
context | Kerberos context |
crypto | crypto context to query |
blocksize | the resulting blocksize |
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
context | Kerberos context |
crypto | crypto context to query |
confoundersize | the returned confounder size |
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
context | Kerberos context |
crypto | crypto context to query |
enctype | the resulting encryption type |
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
context | Kerberos context |
crypto | crypto context to query |
padsize | the return padding size |
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().
context | Kerberos context |
key | the key block information with all key data |
etype | the encryption type |
crypto | the resulting crypto context |
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.
context | Kerberos context |
crypto | Kerberos crypto context |
usage | Key usage for this buffer |
data | array of buffers to process |
num_data | length of array |
ivec | initial cbc/cts vector |
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
context | Kerberos context |
crypto | Kerberos crypto context |
usage | Key usage for this buffer |
data | array of buffers to process |
num_data | length of array |
ivec | initial cbc/cts vector |
Kerberos encrypted data look like this:
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_disable | ( | krb5_context | context, |
krb5_enctype | enctype | ||
) |
Disable encryption type
context | Kerberos 5 context |
enctype | encryption type to disable |
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_enable | ( | krb5_context | context, |
krb5_enctype | enctype | ||
) |
Enable encryption type
context | Kerberos 5 context |
enctype | encryption type to enable |
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.
context | Kerberos context |
etype | enctype to check if its valid or not |
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.
context | a Kerberos 5 context |
keyblock | keyblock to free, NULL is valid argument |
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.
context | a Kerberos 5 context |
keyblock | keyblock content to free, NULL is valid argument |
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 diclosing the randomness w/o disclosing the randomness source.
This function can fail, and callers must check the return value.
buf | a buffer to fill with randomness |
len | length of memory that buf points to. |
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 diclosing the randomness w/o disclosing the randomness source.
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 behavies that way.
buf | a buffer to fill with randomness |
len | length of memory that buf points to. |
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
context | kerberos context |
key | session key |
etype | encryption type of subkey, if ETYPE_NULL, use key's enctype |
subkey | returned new, free with krb5_free_keyblock(). |
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
context | Kerberos 5 context |
enctype | encryption type to probe |
KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL krb5_keyblock_get_enctype | ( | const krb5_keyblock * | block | ) |
Get encryption type of a keyblock.
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().
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_keyblock_zero | ( | krb5_keyblock * | keyblock | ) |
Zero out a keyblock
keyblock | keyblock to zero out |
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.
context | Kerberos 5 context |
type | the enctype resulting key will be of |
data | input random data to convert to a key |
size | size of input random data, at least krb5_enctype_keysize() long |
key | key, output key, free with krb5_free_keyblock_contents() |
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.
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 | return checksum type if not NULL |