aboutsummaryrefslogtreecommitdiff
path: root/src/lib/krb5/krb/decode_kdc.c
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-02-07 17:49:23 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-02-07 17:49:23 +0000
commit6628a5fd5f603491b9cf7a64cbcd5e1e2e3df20f (patch)
tree22db5d666f0020a96ecf2b2c453fdcd04761f5c8 /src/lib/krb5/krb/decode_kdc.c
parent8f0206b2e8e6ffdda454288ec3469b78c4bf011e (diff)
downloadkrb5-6628a5fd5f603491b9cf7a64cbcd5e1e2e3df20f.zip
krb5-6628a5fd5f603491b9cf7a64cbcd5e1e2e3df20f.tar.gz
krb5-6628a5fd5f603491b9cf7a64cbcd5e1e2e3df20f.tar.bz2
move decrypt out to separate function
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@314 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/krb/decode_kdc.c')
-rw-r--r--src/lib/krb5/krb/decode_kdc.c47
1 files changed, 4 insertions, 43 deletions
diff --git a/src/lib/krb5/krb/decode_kdc.c b/src/lib/krb5/krb/decode_kdc.c
index 6281e86..8c26e4c 100644
--- a/src/lib/krb5/krb/decode_kdc.c
+++ b/src/lib/krb5/krb/decode_kdc.c
@@ -48,9 +48,6 @@ krb5_kdc_rep **dec_rep;
{
krb5_error_code retval;
krb5_kdc_rep *local_dec_rep;
- krb5_encrypt_block eblock;
- krb5_data scratch;
- krb5_enc_kdc_rep_part *local_encpart;
/* XXX maybe caller should specify type expected? */
@@ -69,50 +66,14 @@ krb5_kdc_rep **dec_rep;
default:
return (retval);
}
- scratch.length = local_dec_rep->enc_part.length;
- if (!(scratch.data = malloc(local_dec_rep->enc_part.length))) {
- krb5_free_kdc_rep(local_dec_rep);
- return(ENOMEM);
- }
-
- if (!valid_etype(etype))
- return KRB5KDC_ERR_ETYPE_NOSUPP;
-
- /* put together an eblock for this encryption */
-
- eblock.crypto_entry = krb5_csarray[etype]->system;
-
- /* do any necessary key pre-processing */
- if (retval = (*eblock.crypto_entry->process_key)(&eblock, key)) {
- krb5_free_kdc_rep(local_dec_rep);
- free(scratch.data);
- return(retval);
- }
- /* call the encryption routine */
- if (retval =
- (*eblock.crypto_entry->decrypt_func)((krb5_pointer) local_dec_rep->enc_part.data,
- (krb5_pointer) scratch.data,
- scratch.length, &eblock)) {
- (void) (*eblock.crypto_entry->finish_key)(&eblock);
- krb5_free_kdc_rep(local_dec_rep);
- free(scratch.data);
- return retval;
+ if (local_dec_rep->etype != etype) {
+ return KRB5KDC_ERR_ETYPE_NOSUPP; /* XXX */
}
-#define clean_scratch() {bzero(scratch.data, scratch.length); free(scratch.data);}
- if (retval = (*eblock.crypto_entry->finish_key)(&eblock)) {
+ if (retval = krb5_kdc_rep_decrypt_proc(local_dec_rep, key, 0)) {
krb5_free_kdc_rep(local_dec_rep);
- clean_scratch();
- return retval;
- }
- if (retval = decode_krb5_enc_kdc_rep_part(&scratch, &local_encpart)) {
- krb5_free_kdc_rep(local_dec_rep);
- clean_scratch();
- return retval;
+ return(retval);
}
- clean_scratch();
-
- local_dec_rep->enc_part2 = local_encpart;
*dec_rep = local_dec_rep;
return 0;
}