summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1991-02-28 17:23:03 +0000
committerJohn Kohl <jtkohl@mit.edu>1991-02-28 17:23:03 +0000
commit4aaf34b1618e04b360c1d45e6b8daa677b04ad78 (patch)
tree59b095f896d71b915a69fb7dc284b8f03fbe1534 /src
parentfb96bde9f4426d7474d0ff968f1b31a3d4ce3631 (diff)
allow it to generate the random key as needed
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1820 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/mk_req_ext.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c
index 6a5ce9c38..9bf9f8b9d 100644
--- a/src/lib/krb5/krb/mk_req_ext.c
+++ b/src/lib/krb5/krb/mk_req_ext.c
@@ -70,7 +70,7 @@ const krb5_checksum *checksum;
const krb5_ticket_times *times;
const krb5_flags kdc_options;
krb5_int32 sequence;
-krb5_keyblock *newkey;
+krb5_keyblock **newkey;
krb5_ccache ccache;
krb5_creds *creds;
krb5_authenticator *authentp;
@@ -111,8 +111,16 @@ krb5_data *outbuf;
return(retval);
#define cleanup_ticket() krb5_free_ticket(request.ticket)
- if (retval = generate_authenticator(&authent, creds, checksum, newkey,
+ if (newkey) {
+ if (retval = krb5_generate_subkey(&creds->keyblock, newkey)) {
+ cleanup_ticket();
+ return retval;
+ }
+ }
+#define cleanup_key() {if (newkey) krb5_free_keyblock(*newkey);}
+ if (retval = generate_authenticator(&authent, creds, checksum, *newkey,
sequence)) {
+ cleanup_key();
cleanup_ticket();
return retval;
}
@@ -128,6 +136,7 @@ krb5_data *outbuf;
/* encode it before encrypting */
retval = encode_krb5_authenticator(&authent, &scratch);
if (retval) {
+ cleanup_key();
cleanup_ticket();
return(retval);
}
@@ -202,6 +211,7 @@ request.authenticator.ciphertext.data = 0;}
clean_scratch:
cleanup_scratch();
clean_ticket:
+ cleanup_key();
cleanup_ticket();
return retval;