diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/crypto/krb/prf.c | 18 | ||||
-rw-r--r-- | src/lib/crypto/libk5crypto.exports | 1 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/lib/crypto/krb/prf.c b/src/lib/crypto/krb/prf.c index 141390f..27286c3 100644 --- a/src/lib/crypto/krb/prf.c +++ b/src/lib/crypto/krb/prf.c @@ -50,17 +50,16 @@ krb5_c_prf_length(krb5_context context, krb5_enctype enctype, size_t *len) } krb5_error_code KRB5_CALLCONV -krb5_c_prf(krb5_context context, const krb5_keyblock *keyblock, +krb5_k_prf(krb5_context context, krb5_key key, krb5_data *input, krb5_data *output) { const struct krb5_keytypes *ktp; - krb5_key key; krb5_error_code ret; assert(input && output); assert(output->data); - ktp = find_enctype(keyblock->enctype); + ktp = find_enctype(key->keyblock.enctype); if (ktp == NULL) return KRB5_BAD_ENCTYPE; if (ktp->prf == NULL) @@ -69,10 +68,21 @@ krb5_c_prf(krb5_context context, const krb5_keyblock *keyblock, output->magic = KV5M_DATA; if (ktp->prf_length != output->length) return KRB5_CRYPTO_INTERNAL; + ret = (*ktp->prf)(ktp->enc, ktp->hash, key, input, output); + return ret; +} + +krb5_error_code KRB5_CALLCONV +krb5_c_prf(krb5_context context, const krb5_keyblock *keyblock, + krb5_data *input, krb5_data *output) +{ + krb5_key key; + krb5_error_code ret; + ret = krb5_k_create_key(context, keyblock, &key); if (ret != 0) return ret; - ret = (*ktp->prf)(ktp->enc, ktp->hash, key, input, output); + ret = krb5_k_prf(context, key, input, output); krb5_k_free_key(context, key); return ret; } diff --git a/src/lib/crypto/libk5crypto.exports b/src/lib/crypto/libk5crypto.exports index 291c2f0..f014dd6 100644 --- a/src/lib/crypto/libk5crypto.exports +++ b/src/lib/crypto/libk5crypto.exports @@ -80,6 +80,7 @@ krb5_k_key_enctype krb5_k_key_keyblock krb5_k_make_checksum krb5_k_make_checksum_iov +krb5_k_prf krb5_k_verify_checksum krb5_k_verify_checksum_iov krb5int_keyhash_md4des |