From 2e42bc8df8785a68db35edefe02437d92f74d541 Mon Sep 17 00:00:00 2001 From: John Kohl Date: Wed, 7 Feb 1990 13:29:19 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@296 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/kdb/decrypt_key.c | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/lib/kdb/decrypt_key.c diff --git a/src/lib/kdb/decrypt_key.c b/src/lib/kdb/decrypt_key.c new file mode 100644 index 000000000..53ffa8015 --- /dev/null +++ b/src/lib/kdb/decrypt_key.c @@ -0,0 +1,62 @@ +/* + * $Source$ + * $Author$ + * + * Copyright 1990 by the Massachusetts Institute of Technology. + * + * For copying and distribution information, please see the file + * . + * + * krb5_kdb_encrypt_key(), krb5_kdb_decrypt_key functions + */ + +#if !defined(lint) && !defined(SABER) +static char rcsid_decrypt_key_c [] = +"$Id$"; +#endif /* !lint & !SABER */ + +#include +#include +#include +#include +#include + + +krb5_error_code +krb5_kdb_decrypt_key(in, out, eblock) +krb5_keyblock *in; +krb5_keyblock *out; +krb5_encrypt_block *eblock; +{ + krb5_error_code retval; + + *out = *in; + out->length = krb5_encrypt_size(in->length, eblock->crypto_entry); + out->contents = (krb5_octet *)malloc(out->length); + if (!out->contents) { + out->contents = 0; + out->length = 0; + return ENOMEM; + } + if (retval = (*eblock->crypto_entry-> + decrypt_func)((krb5_pointer) in->contents, + (krb5_pointer) out->contents, + in->length, eblock)) { + free((char *)out->contents); + out->contents = 0; + out->length = 0; + return retval; + } + out->length -= sizeof(out->length); + if (out->length < 0) { + free((char *)out->contents); + out->contents = 0; + out->length = 0; + return KRB5_KDB_INVALIDKEYSIZE; + } + /* shift key down to beginning of contents, and ignore extra wasted + space */ + bcopy(out->contents, ((krb5_pointer) out->contents ) + sizeof(out->length), + out->length); + return retval; +} -- 2.26.2