summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorChris Provenzano <proven@mit.edu>1995-01-13 21:13:02 +0000
committerChris Provenzano <proven@mit.edu>1995-01-13 21:13:02 +0000
commit76b4a6c8894254b2e1e71442c1a7cd21e56aa7d3 (patch)
tree7b57e2d8e700452d38132518d22a0df1f3b0dbe0 /src/lib/gssapi
parent74c7303ec59ce3a6eff36bb4bbf14719dee2ad84 (diff)
downloadkrb5-76b4a6c8894254b2e1e71442c1a7cd21e56aa7d3.tar.gz
krb5-76b4a6c8894254b2e1e71442c1a7cd21e56aa7d3.tar.xz
krb5-76b4a6c8894254b2e1e71442c1a7cd21e56aa7d3.zip
Removed all references to DECLARG and OLDDECLARG.
Added krb5_context to all krb5_routines git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4808 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/krb5/ChangeLog4
-rw-r--r--src/lib/gssapi/krb5/accept_sec_context.c113
-rw-r--r--src/lib/gssapi/krb5/acquire_cred.c106
-rw-r--r--src/lib/gssapi/krb5/compare_name.c5
-rw-r--r--src/lib/gssapi/krb5/context_time.c5
-rw-r--r--src/lib/gssapi/krb5/delete_sec_context.c15
-rw-r--r--src/lib/gssapi/krb5/display_name.c5
-rw-r--r--src/lib/gssapi/krb5/display_status.c5
-rw-r--r--src/lib/gssapi/krb5/gssapiP_krb5.h62
-rw-r--r--src/lib/gssapi/krb5/gssapi_krb5.c12
-rw-r--r--src/lib/gssapi/krb5/gssapi_krb5.h7
-rw-r--r--src/lib/gssapi/krb5/import_name.c13
-rw-r--r--src/lib/gssapi/krb5/indicate_mechs.c3
-rw-r--r--src/lib/gssapi/krb5/init_sec_context.c76
-rw-r--r--src/lib/gssapi/krb5/inquire_context.c19
-rw-r--r--src/lib/gssapi/krb5/inquire_cred.c11
-rw-r--r--src/lib/gssapi/krb5/k5seal.c7
-rw-r--r--src/lib/gssapi/krb5/k5unseal.c6
-rw-r--r--src/lib/gssapi/krb5/krb5_gss_glue.c338
-rw-r--r--src/lib/gssapi/krb5/process_context_token.c6
-rw-r--r--src/lib/gssapi/krb5/release_cred.c9
-rw-r--r--src/lib/gssapi/krb5/release_name.c5
-rw-r--r--src/lib/gssapi/krb5/seal.c7
-rw-r--r--src/lib/gssapi/krb5/sign.c3
-rw-r--r--src/lib/gssapi/krb5/unseal.c3
-rw-r--r--src/lib/gssapi/krb5/util_cksum.c13
-rw-r--r--src/lib/gssapi/krb5/util_crypt.c15
-rw-r--r--src/lib/gssapi/krb5/util_seed.c10
-rw-r--r--src/lib/gssapi/krb5/util_seqnum.c3
-rw-r--r--src/lib/gssapi/krb5/verify.c3
30 files changed, 474 insertions, 415 deletions
diff --git a/src/lib/gssapi/krb5/ChangeLog b/src/lib/gssapi/krb5/ChangeLog
index f96624871..2f29814c5 100644
--- a/src/lib/gssapi/krb5/ChangeLog
+++ b/src/lib/gssapi/krb5/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
+
+ * Added krb5_context to all krb5_routines
+
Mon Jan 9 19:27:55 1995 Theodore Y. Ts'o (tytso@dcl)
* display_name.c (krb5_gss_display_name): gss_display_name()
diff --git a/src/lib/gssapi/krb5/accept_sec_context.c b/src/lib/gssapi/krb5/accept_sec_context.c
index e76bc1b5a..f703da86d 100644
--- a/src/lib/gssapi/krb5/accept_sec_context.c
+++ b/src/lib/gssapi/krb5/accept_sec_context.c
@@ -25,7 +25,9 @@
#include <memory.h>
#include <krb5/widen.h>
-static krb5_error_code rd_req_keyproc(keyprocarg, server, kvno, keyblock)
+static krb5_error_code
+rd_req_keyproc(context, keyprocarg, server, kvno, keyblock)
+ krb5_context context;
krb5_pointer keyprocarg;
krb5_principal server;
krb5_kvno kvno;
@@ -35,18 +37,20 @@ static krb5_error_code rd_req_keyproc(keyprocarg, server, kvno, keyblock)
krb5_error_code code;
krb5_keytab_entry ktentry;
- if (code = krb5_kt_get_entry((krb5_keytab) keyprocarg, server, kvno,
- &ktentry))
+ if (code = krb5_kt_get_entry(context, (krb5_keytab) keyprocarg, server,
+ kvno, &ktentry))
return(code);
- code = krb5_copy_keyblock(&ktentry.key, keyblock);
+ code = krb5_copy_keyblock(context, &ktentry.key, keyblock);
- (void) krb5_kt_free_entry(&ktentry);
+ (void) krb5_kt_free_entry(context, &ktentry);
return(code);
}
-static krb5_error_code make_ap_rep(authdat, subkey, seq_send, token)
+static krb5_error_code
+make_ap_rep(context, authdat, subkey, seq_send, token)
+ krb5_context context;
krb5_tkt_authent *authdat;
krb5_keyblock *subkey;
krb5_int32 *seq_send;
@@ -64,11 +68,12 @@ static krb5_error_code make_ap_rep(authdat, subkey, seq_send, token)
ap_rep_data.cusec = authdat->authenticator->cusec;
ap_rep_data.subkey = authdat->authenticator->subkey;
- if (code = krb5_generate_seq_number(authdat->ticket->enc_part2->session,
+ if (code = krb5_generate_seq_number(context,
+ authdat->ticket->enc_part2->session,
&ap_rep_data.seq_number))
return(code);
- if (code = krb5_mk_rep(&ap_rep_data, subkey, &ap_rep))
+ if (code = krb5_mk_rep(context, &ap_rep_data, subkey, &ap_rep))
return(code);
/* build up the token */
@@ -104,11 +109,13 @@ static krb5_error_code make_ap_rep(authdat, subkey, seq_send, token)
return(0);
}
-OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
- verifier_cred_handle, input_token,
- input_chan_bindings, src_name, mech_type,
- output_token, ret_flags, time_rec,
- delegated_cred_handle)
+OM_uint32
+krb5_gss_accept_sec_context(context, minor_status, context_handle,
+ verifier_cred_handle, input_token,
+ input_chan_bindings, src_name, mech_type,
+ output_token, ret_flags, time_rec,
+ delegated_cred_handle)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t *context_handle;
gss_cred_id_t verifier_cred_handle;
@@ -212,8 +219,9 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
/* get the rcache pointer */
if (code =
- krb5_get_server_rcache(krb5_princ_component(cred->princ,
- ((krb5_princ_size(cred->princ)>1)?1:0)),
+ krb5_get_server_rcache(context,
+ krb5_princ_component(context, cred->princ,
+ ((krb5_princ_size(context, cred->princ)>1)?1:0)),
&rcache)) {
*minor_status = code;
return(GSS_S_FAILURE);
@@ -221,22 +229,23 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
/* decode the message */
- if (code = krb5_rd_req(&ap_req, cred->princ, paddr, NULL, &rd_req_keyproc,
- (krb5_pointer) cred->keytab, rcache, &authdat)) {
- (void) krb5_rc_close(rcache);
+ if (code = krb5_rd_req(context, &ap_req, cred->princ, paddr, NULL,
+ &rd_req_keyproc, (krb5_pointer) cred->keytab,
+ rcache, &authdat)) {
+ (void) krb5_rc_close(context, rcache);
*minor_status = code;
return(GSS_S_FAILURE);
}
/* close and free the rcache */
- krb5_rc_close(rcache);
+ krb5_rc_close(context, rcache);
/* make sure the necessary parts of the authdat are present */
if ((authdat->authenticator->subkey == NULL) ||
(authdat->ticket->enc_part2 == NULL)) {
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = KG_NO_SUBKEY;
return(GSS_S_FAILURE);
}
@@ -248,7 +257,7 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
can interoperate with an implementation whcih supports negotiation */
if ((authdat->authenticator->checksum->checksum_type != CKSUMTYPE_KG_CB) ||
(authdat->authenticator->checksum->length < 24)) {
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = 0;
return(GSS_S_BAD_BINDINGS);
}
@@ -275,7 +284,7 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
if (tmp != RSA_MD5_CKSUM_LENGTH) {
xfree(md5.contents);
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = KG_BAD_LENGTH;
return(GSS_S_FAILURE);
}
@@ -285,7 +294,7 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
if (code = kg_checksum_channel_bindings(input_chan_bindings, &md5,
bigend)) {
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -293,7 +302,7 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
TREAD_STR(ptr, ptr2, md5.length);
if (memcmp(ptr2, md5.contents, md5.length) != 0) {
xfree(md5.contents);
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = 0;
return(GSS_S_BAD_BINDINGS);
}
@@ -316,43 +325,43 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
ctx->cred = cred;
ctx->big_endian = bigend;
- if (code = krb5_copy_principal(cred->princ, &ctx->here)) {
+ if (code = krb5_copy_principal(context, cred->princ, &ctx->here)) {
xfree(ctx);
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = code;
return(GSS_S_FAILURE);
}
- if (code = krb5_copy_principal(authdat->authenticator->client,
+ if (code = krb5_copy_principal(context, authdat->authenticator->client,
&ctx->there)) {
- krb5_free_principal(ctx->here);
+ krb5_free_principal(context, ctx->here);
xfree(ctx);
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = code;
return(GSS_S_FAILURE);
}
- if (code = krb5_copy_keyblock(authdat->authenticator->subkey,
+ if (code = krb5_copy_keyblock(context, authdat->authenticator->subkey,
&ctx->subkey)) {
- krb5_free_principal(ctx->there);
- krb5_free_principal(ctx->here);
+ krb5_free_principal(context, ctx->there);
+ krb5_free_principal(context, ctx->here);
xfree(ctx);
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = code;
return(GSS_S_FAILURE);
}
/* fill in the encryption descriptors */
- krb5_use_cstype(&ctx->enc.eblock, ETYPE_RAW_DES_CBC);
+ krb5_use_cstype(context, &ctx->enc.eblock, ETYPE_RAW_DES_CBC);
ctx->enc.processed = 0;
- if (code = krb5_copy_keyblock(ctx->subkey, &ctx->enc.key))
+ if (code = krb5_copy_keyblock(context, ctx->subkey, &ctx->enc.key))
return(code);
for (i=0; i<ctx->enc.key->length; i++)
/*SUPPRESS 113*/
ctx->enc.key->contents[i] ^= 0xf0;
- krb5_use_cstype(&ctx->seq.eblock, ETYPE_RAW_DES_CBC);
+ krb5_use_cstype(context, &ctx->seq.eblock, ETYPE_RAW_DES_CBC);
ctx->seq.processed = 0;
ctx->seq.key = ctx->subkey;
@@ -369,9 +378,9 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
if (ctx->mutual) {
if (code = make_ap_rep(authdat, ctx->subkey, &ctx->seq_send, &token)) {
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t *) &ctx,
- NULL);
- krb5_free_tkt_authent(authdat);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t *) &ctx, NULL);
+ krb5_free_tkt_authent(context, authdat);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -382,16 +391,16 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
}
/* done with authdat! */
- krb5_free_tkt_authent(authdat);
+ krb5_free_tkt_authent(context, authdat);
/* set the return arguments */
if (src_name) {
- if (code = krb5_copy_principal(ctx->there, &name)) {
+ if (code = krb5_copy_principal(context, ctx->there, &name)) {
if (token.value)
xfree(token.value);
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t *) &ctx,
- NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t *) &ctx, NULL);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -401,12 +410,12 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
*mech_type = (gss_OID) gss_mech_krb5;
if (time_rec) {
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
if (src_name)
- krb5_free_principal(name);
+ krb5_free_principal(context, name);
xfree(token.value);
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t *) &ctx,
- NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t *) &ctx, NULL);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -422,10 +431,10 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
if (src_name)
if (! kg_save_name((gss_name_t) name)) {
- krb5_free_principal(name);
+ krb5_free_principal(context, name);
if (token.value)
xfree(token.value);
- (void)krb5_gss_delete_sec_context(minor_status,
+ (void)krb5_gss_delete_sec_context(context, minor_status,
(gss_ctx_id_t *) &ctx, NULL);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
@@ -436,12 +445,12 @@ OM_uint32 krb5_gss_accept_sec_context(minor_status, context_handle,
if (! kg_save_ctx_id((gss_ctx_id_t) ctx)) {
if (src_name) {
(void) kg_delete_name((gss_name_t) name);
- krb5_free_principal(name);
+ krb5_free_principal(context, name);
}
if (token.value)
xfree(token.value);
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t *) &ctx,
- NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t *) &ctx, NULL);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c
index e951131fa..0bcf10c6e 100644
--- a/src/lib/gssapi/krb5/acquire_cred.c
+++ b/src/lib/gssapi/krb5/acquire_cred.c
@@ -29,8 +29,9 @@
If successful, set the keytab-specific fields in cred
*/
-static OM_uint32 acquire_accept_cred(minor_status, desired_name, output_princ,
- cred)
+static OM_uint32
+acquire_accept_cred(context, minor_status, desired_name, output_princ, cred)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t desired_name;
krb5_principal *output_princ;
@@ -47,7 +48,7 @@ static OM_uint32 acquire_accept_cred(minor_status, desired_name, output_princ,
/* open the default keytab */
- if (code = krb5_kt_default(&kt)) {
+ if (code = krb5_kt_default(context, &kt)) {
*minor_status = code;
return(GSS_S_CRED_UNAVAIL);
}
@@ -68,33 +69,33 @@ static OM_uint32 acquire_accept_cred(minor_status, desired_name, output_princ,
/* iterate over the keytab searching for the principal */
- if (code = krb5_kt_start_seq_get(kt, &cur)) {
+ if (code = krb5_kt_start_seq_get(context, kt, &cur)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
- while (!(code = krb5_kt_next_entry(kt, &entry, &cur))) {
- if (krb5_principal_compare(entry.principal, princ)) {
+ while (!(code = krb5_kt_next_entry(context, kt, &entry, &cur))) {
+ if (krb5_principal_compare(context, entry.principal, princ)) {
code = 0;
- krb5_kt_free_entry(&entry);
+ krb5_kt_free_entry(context, &entry);
break;
}
- krb5_kt_free_entry(&entry);
+ krb5_kt_free_entry(context, &entry);
}
if (code == KRB5_KT_END) {
/* this means that the principal wasn't in the keytab */
- (void)krb5_kt_end_seq_get(kt, &cur);
+ (void)krb5_kt_end_seq_get(context, kt, &cur);
*minor_status = KG_KEYTAB_NOMATCH;
return(GSS_S_CRED_UNAVAIL);
} else if (code) {
/* this means some error occurred reading the keytab */
- (void)krb5_kt_end_seq_get(kt, &cur);
+ (void)krb5_kt_end_seq_get(context, kt, &cur);
*minor_status = code;
return(GSS_S_FAILURE);
} else {
/* this means that we found a matching entry */
- if (code = krb5_kt_end_seq_get(kt, &cur)) {
+ if (code = krb5_kt_end_seq_get(context, kt, &cur)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -113,8 +114,9 @@ static OM_uint32 acquire_accept_cred(minor_status, desired_name, output_princ,
If successful, set the ccache-specific fields in cred.
*/
-static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
- cred)
+static OM_uint32
+acquire_init_cred(context, minor_status, desired_name, output_princ, cred)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t desired_name;
krb5_principal *output_princ;
@@ -132,7 +134,7 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
/* open the default credential cache */
- if (code = krb5_cc_default(&ccache)) {
+ if (code = krb5_cc_default(context, &ccache)) {
*minor_status = code;
return(GSS_S_CRED_UNAVAIL);
}
@@ -140,27 +142,27 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
/* turn off OPENCLOSE mode while extensive frobbing is going on */
flags = 0; /* turns off OPENCLOSE mode */
- if (code = krb5_cc_set_flags(ccache, flags)) {
+ if (code = krb5_cc_set_flags(context, ccache, flags)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
/* get out the principal name and see if it matches */
- if (code = krb5_cc_get_principal(ccache, &princ)) {
- (void)krb5_cc_close(ccache);
+ if (code = krb5_cc_get_principal(context, ccache, &princ)) {
+ (void)krb5_cc_close(context, ccache);
*minor_status = code;
return(GSS_S_FAILURE);
}
if (desired_name != GSS_C_NO_NAME) {
- if (! krb5_principal_compare(princ, (krb5_principal) desired_name)) {
- (void)krb5_free_principal(princ);
- (void)krb5_cc_close(ccache);
+ if (! krb5_principal_compare(context, princ, (krb5_principal) desired_name)) {
+ (void)krb5_free_principal(context, princ);
+ (void)krb5_cc_close(context, ccache);
*minor_status = KG_CCACHE_NOMATCH;
return(GSS_S_CRED_UNAVAIL);
}
- (void)krb5_free_principal(princ);
+ (void)krb5_free_principal(context, princ);
princ = (krb5_principal) desired_name;
} else {
*output_princ = princ;
@@ -168,8 +170,8 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
/* iterate over the ccache, find the tgt */
- if (code = krb5_cc_start_seq_get(ccache, &cur)) {
- (void)krb5_cc_close(ccache);
+ if (code = krb5_cc_start_seq_get(context, ccache, &cur)) {
+ (void)krb5_cc_close(context, ccache);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -180,7 +182,7 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
got_endtime = 0;
- while (!(code = krb5_cc_next_cred(ccache, &cur, &creds))) {
+ while (!(code = krb5_cc_next_cred(context, ccache, &cur, &creds))) {
if ((creds.server->length == 2) &&
(strcmp(creds.server->realm.data, princ->realm.data) == 0) &&
(strcmp((char *) creds.server->data[0].data, "krbtgt") == 0) &&
@@ -190,7 +192,7 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
got_endtime = 1;
*minor_status = 0;
code = 0;
- krb5_free_cred_contents(&creds);
+ krb5_free_cred_contents(context, &creds);
break;
}
if (got_endtime == 0) {
@@ -198,25 +200,25 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
got_endtime = 1;
*minor_status = KG_TGT_MISSING;
}
- krb5_free_cred_contents(&creds);
+ krb5_free_cred_contents(context, &creds);
}
if (code && code != KRB5_CC_END) {
/* this means some error occurred reading the ccache */
- (void)krb5_cc_end_seq_get(ccache, &cur);
- (void)krb5_cc_close(ccache);
+ (void)krb5_cc_end_seq_get(context, ccache, &cur);
+ (void)krb5_cc_close(context, ccache);
*minor_status = code;
return(GSS_S_FAILURE);
} else {
/* this means that we found an endtime to use. */
- if (code = krb5_cc_end_seq_get(ccache, &cur)) {
- (void)krb5_cc_close(ccache);
+ if (code = krb5_cc_end_seq_get(context, ccache, &cur)) {
+ (void)krb5_cc_close(context, ccache);
*minor_status = code;
return(GSS_S_FAILURE);
}
flags = KRB5_TC_OPENCLOSE; /* turns on OPENCLOSE mode */
- if (code = krb5_cc_set_flags(ccache, flags)) {
- (void)krb5_cc_close(ccache);
+ if (code = krb5_cc_set_flags(context, ccache, flags)) {
+ (void)krb5_cc_close(context, ccache);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -230,9 +232,11 @@ static OM_uint32 acquire_init_cred(minor_status, desired_name, output_princ,
}
/*ARGSUSED*/
-OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
- desired_mechs, cred_usage, output_cred_handle,
- actual_mechs, time_rec)
+OM_uint32
+krb5_gss_acquire_cred(context, minor_status, desired_name, time_req,
+ desired_mechs, cred_usage, output_cred_handle,
+ actual_mechs, time_rec)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t desired_name;
OM_uint32 time_req;
@@ -309,7 +313,7 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
&(cred->princ), cred))
!= GSS_S_COMPLETE) {
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
/* minor_status set by acquire_accept_cred() */
return(ret);
@@ -327,9 +331,9 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
&(cred->princ), cred))
!= GSS_S_COMPLETE) {
if (cred->keytab)
- krb5_kt_close(cred->keytab);
+ krb5_kt_close(context, cred->keytab);
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
/* minor_status set by acquire_init_cred() */
return(ret);
@@ -338,12 +342,12 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
/* if the princ wasn't filled in already, fill it in now */
if (!cred->princ)
- if (code = krb5_copy_principal((krb5_principal) desired_name,
+ if (code = krb5_copy_principal(context, (krb5_principal) desired_name,
&(cred->princ))) {
if (cred->ccache)
- (void)krb5_cc_close(cred->ccache);
+ (void)krb5_cc_close(context, cred->ccache);
if (cred->keytab)
- (void)krb5_kt_close(cred->keytab);
+ (void)krb5_kt_close(context, cred->keytab);
xfree(cred);
*minor_status = code;
return(GSS_S_FAILURE);
@@ -359,13 +363,13 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
} else {
krb5_timestamp now;
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
if (cred->ccache)
- (void)krb5_cc_close(cred->ccache);
+ (void)krb5_cc_close(context, cred->ccache);
if (cred->keytab)
- (void)krb5_kt_close(cred->keytab);
+ (void)krb5_kt_close(context, cred->keytab);
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
*minor_status = code;
return(GSS_S_FAILURE);
@@ -380,11 +384,11 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
if (actual_mechs) {
if (! g_copy_OID_set(gss_mech_set_krb5, &mechs)) {
if (cred->ccache)
- (void)krb5_cc_close(cred->ccache);
+ (void)krb5_cc_close(context, cred->ccache);
if (cred->keytab)
- (void)krb5_kt_close(cred->keytab);
+ (void)krb5_kt_close(context, cred->keytab);
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
*minor_status = ENOMEM;
return(GSS_S_FAILURE);
@@ -397,11 +401,11 @@ OM_uint32 krb5_gss_acquire_cred(minor_status, desired_name, time_req,
free(mechs->elements);
free(mechs);
if (cred->ccache)
- (void)krb5_cc_close(cred->ccache);
+ (void)krb5_cc_close(context, cred->ccache);
if (cred->keytab)
- (void)krb5_kt_close(cred->keytab);
+ (void)krb5_kt_close(context, cred->keytab);
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
diff --git a/src/lib/gssapi/krb5/compare_name.c b/src/lib/gssapi/krb5/compare_name.c
index aac295c5a..932753600 100644
--- a/src/lib/gssapi/krb5/compare_name.c
+++ b/src/lib/gssapi/krb5/compare_name.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_compare_name(minor_status, name1, name2, name_equal)
+krb5_gss_compare_name(context, minor_status, name1, name2, name_equal)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t name1;
gss_name_t name2;
@@ -40,7 +41,7 @@ krb5_gss_compare_name(minor_status, name1, name2, name_equal)
}
*minor_status = 0;
- *name_equal = krb5_principal_compare((krb5_principal) name1,
+ *name_equal = krb5_principal_compare(context, (krb5_principal) name1,
(krb5_principal) name2);
return(GSS_S_COMPLETE);
}
diff --git a/src/lib/gssapi/krb5/context_time.c b/src/lib/gssapi/krb5/context_time.c
index 08cefda6a..02989ee31 100644
--- a/src/lib/gssapi/krb5/context_time.c
+++ b/src/lib/gssapi/krb5/context_time.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_context_time(minor_status, context_handle, time_rec)
+krb5_gss_context_time(context, minor_status, context_handle, time_rec)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
OM_uint32 *time_rec;
@@ -46,7 +47,7 @@ krb5_gss_context_time(minor_status, context_handle, time_rec)
return(GSS_S_NO_CONTEXT);
}
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/delete_sec_context.c b/src/lib/gssapi/krb5/delete_sec_context.c
index 3e8d554e7..73bd9b05a 100644
--- a/src/lib/gssapi/krb5/delete_sec_context.c
+++ b/src/lib/gssapi/krb5/delete_sec_context.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_delete_sec_context(minor_status, context_handle, output_token)
+krb5_gss_delete_sec_context(context, minor_status, context_handle, output_token)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t *context_handle;
gss_buffer_t output_token;
@@ -69,15 +70,15 @@ krb5_gss_delete_sec_context(minor_status, context_handle, output_token)
ctx = (gss_ctx_id_t) *context_handle;
if (ctx->enc.processed)
- krb5_finish_key(&ctx->enc.eblock);
- krb5_free_keyblock(ctx->enc.key);
+ krb5_finish_key(context, &ctx->enc.eblock);
+ krb5_free_keyblock(context, ctx->enc.key);
if (ctx->seq.processed)
- krb5_finish_key(&ctx->seq.eblock);
+ krb5_finish_key(context, &ctx->seq.eblock);
- krb5_free_principal(ctx->here);
- krb5_free_principal(ctx->there);
- krb5_free_keyblock(ctx->subkey);
+ krb5_free_principal(context, ctx->here);
+ krb5_free_principal(context, ctx->there);
+ krb5_free_keyblock(context, ctx->subkey);
xfree(ctx);
diff --git a/src/lib/gssapi/krb5/display_name.c b/src/lib/gssapi/krb5/display_name.c
index c1f6eae36..badb61e18 100644
--- a/src/lib/gssapi/krb5/display_name.c
+++ b/src/lib/gssapi/krb5/display_name.c
@@ -23,8 +23,9 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_display_name(minor_status, input_name, output_name_buffer,
+krb5_gss_display_name(context, minor_status, input_name, output_name_buffer,
output_name_type)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t input_name;
gss_buffer_t output_name_buffer;
@@ -41,7 +42,7 @@ krb5_gss_display_name(minor_status, input_name, output_name_buffer,
return(GSS_S_CALL_BAD_STRUCTURE|GSS_S_BAD_NAME);
}
- if (code = krb5_unparse_name((krb5_principal) input_name, &str)) {
+ if (code = krb5_unparse_name(context, (krb5_principal) input_name, &str)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/display_status.c b/src/lib/gssapi/krb5/display_status.c
index bf3771321..1cedfe5ce 100644
--- a/src/lib/gssapi/krb5/display_status.c
+++ b/src/lib/gssapi/krb5/display_status.c
@@ -32,8 +32,9 @@ static int init_et = 0;
/**/
OM_uint32
-krb5_gss_display_status(minor_status, status_value, status_type,
+krb5_gss_display_status(context, minor_status, status_value, status_type,
mech_type, message_context, status_string)
+ krb5_context context;
OM_uint32 *minor_status;
OM_uint32 status_value;
int status_type;
@@ -55,7 +56,7 @@ krb5_gss_display_status(minor_status, status_value, status_type,
message_context, status_string));
} else if (status_type == GSS_C_MECH_CODE) {
if (!init_et) {
- krb5_init_ets();
+ krb5_init_ets(context);
initialize_k5g_error_table();
init_et = 1;
}
diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h
index 95fb7bc4e..822df1898 100644
--- a/src/lib/gssapi/krb5/gssapiP_krb5.h
+++ b/src/lib/gssapi/krb5/gssapiP_krb5.h
@@ -91,6 +91,7 @@ typedef struct _krb5_gss_ctx_id_rec {
krb5_int32 seq_recv;
int established;
int big_endian;
+ krb5_context context;
} krb5_gss_ctx_id_rec, krb5_gss_ctx_id_t;
extern void *kg_vdb;
@@ -111,7 +112,9 @@ extern void *kg_vdb;
/** helper functions **/
-OM_uint32 kg_get_defcred PROTOTYPE((OM_uint32 *minor_status, gss_cred_id_t *cred));
+OM_uint32 kg_get_defcred
+ PROTOTYPE((OM_uint32 *minor_status,
+ gss_cred_id_t *cred));
OM_uint32 kg_release_defcred PROTOTYPE((OM_uint32 *minor_status));
@@ -157,7 +160,8 @@ OM_uint32 kg_unseal PROTOTYPE((OM_uint32 *minor_status,
/** declarations of internal name mechanism functions **/
OM_uint32 krb5_gss_acquire_cred
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_name_t, /* desired_name */
OM_uint32, /* time_req */
gss_OID_set, /* desired_mechs */
@@ -168,12 +172,14 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_release_cred
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_cred_id_t* /* cred_handle */
));
OM_uint32 krb5_gss_init_sec_context
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_cred_id_t, /* claimant_cred_handle */
gss_ctx_id_t*, /* context_handle */
gss_name_t, /* target_name */
@@ -190,7 +196,8 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_accept_sec_context
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t*, /* context_handle */
gss_cred_id_t, /* verifier_cred_handle */
gss_buffer_t, /* input_token_buffer */
@@ -205,25 +212,29 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_process_context_token
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
gss_buffer_t /* token_buffer */
));
OM_uint32 krb5_gss_delete_sec_context
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t*, /* context_handle */
gss_buffer_t /* output_token */
));
OM_uint32 krb5_gss_context_time
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
OM_uint32* /* time_rec */
));
OM_uint32 krb5_gss_sign
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
int, /* qop_req */
gss_buffer_t, /* message_buffer */
@@ -231,7 +242,8 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_verify
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
gss_buffer_t, /* message_buffer */
gss_buffer_t, /* token_buffer */
@@ -239,7 +251,8 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_seal
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
int, /* conf_req_flag */
int, /* qop_req */
@@ -249,7 +262,8 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_unseal
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
gss_buffer_t, /* input_message_buffer */
gss_buffer_t, /* output_message_buffer */
@@ -258,7 +272,8 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_display_status
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
OM_uint32, /* status_value */
int, /* status_type */
const_gss_OID, /* mech_type */
@@ -267,38 +282,44 @@ PROTOTYPE( (OM_uint32*, /* minor_status */
));
OM_uint32 krb5_gss_indicate_mechs
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_OID_set* /* mech_set */
));
OM_uint32 krb5_gss_compare_name
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_name_t, /* name1 */
gss_name_t, /* name2 */
int* /* name_equal */
));
OM_uint32 krb5_gss_display_name
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_name_t, /* input_name */
gss_buffer_t, /* output_name_buffer */
gss_OID* /* output_name_type */
));
OM_uint32 krb5_gss_import_name
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_buffer_t, /* input_name_buffer */
const_gss_OID, /* input_name_type */
gss_name_t* /* output_name */
));
OM_uint32 krb5_gss_release_name
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_name_t* /* input_name */
));
OM_uint32 krb5_gss_inquire_cred
-PROTOTYPE( (OM_uint32 *, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32 *, /* minor_status */
gss_cred_id_t, /* cred_handle */
gss_name_t *, /* name */
OM_uint32 *, /* lifetime */
@@ -307,7 +328,8 @@ PROTOTYPE( (OM_uint32 *, /* minor_status */
));
OM_uint32 krb5_gss_inquire_context
-PROTOTYPE( (OM_uint32*, /* minor_status */
+PROTOTYPE( (krb5_context,
+ OM_uint32*, /* minor_status */
gss_ctx_id_t, /* context_handle */
gss_name_t*, /* initiator_name */
gss_name_t*, /* acceptor_name */
diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c
index da88b706c..249c12562 100644
--- a/src/lib/gssapi/krb5/gssapi_krb5.c
+++ b/src/lib/gssapi/krb5/gssapi_krb5.c
@@ -61,6 +61,8 @@ static const gss_OID_set_desc oidsets[] = {
const gss_OID_set_desc * const gss_mech_set_krb5 = oidsets+0;
+krb5_context kg_context;
+
void *kg_vdb = NULL;
/** default credential support */
@@ -79,10 +81,10 @@ kg_get_defcred(minor_status, cred)
if (defcred == GSS_C_NO_CREDENTIAL) {
OM_uint32 major;
- if ((major = krb5_gss_acquire_cred(minor_status, GSS_C_NO_NAME,
- GSS_C_INDEFINITE, GSS_C_NULL_OID_SET,
- GSS_C_INITIATE, &defcred, NULL,
- NULL)) &&
+ if ((major = krb5_gss_acquire_cred(kg_context, minor_status,
+ GSS_C_NO_NAME, GSS_C_INDEFINITE,
+ GSS_C_NULL_OID_SET, GSS_C_INITIATE,
+ &defcred, NULL, NULL)) &&
GSS_ERROR(major)) {
defcred = GSS_C_NO_CREDENTIAL;
return(major);
@@ -103,5 +105,5 @@ kg_release_defcred(minor_status)
return(GSS_S_COMPLETE);
}
- return(krb5_gss_release_cred(minor_status, &defcred));
+ return(krb5_gss_release_cred(kg_context, minor_status, &defcred));
}
diff --git a/src/lib/gssapi/krb5/gssapi_krb5.h b/src/lib/gssapi/krb5/gssapi_krb5.h
index 6a8c445d7..53f247583 100644
--- a/src/lib/gssapi/krb5/gssapi_krb5.h
+++ b/src/lib/gssapi/krb5/gssapi_krb5.h
@@ -39,9 +39,10 @@ extern const gss_OID_desc * const gss_nt_krb5_principal;
#define gss_krb5_nt_machine_uid_name gss_nt_machine_uid_name
#define gss_krb5_nt_string_uid_name gss_nt_string_uid_name
-OM_uint32 gss_krb5_get_tkt_flags PROTOTYPE((OM_uint32 *minor_status,
- gss_ctx_id_t context_handle,
- krb5_flags *ticket_flags));
+OM_uint32 gss_krb5_get_tkt_flags
+ PROTOTYPE((OM_uint32 *minor_status,
+ gss_ctx_id_t context_handle,
+ krb5_flags *ticket_flags));
#endif /* _GSSAPI_KRB5_H_ */
diff --git a/src/lib/gssapi/krb5/import_name.c b/src/lib/gssapi/krb5/import_name.c
index 9a839361e..47417bb66 100644
--- a/src/lib/gssapi/krb5/import_name.c
+++ b/src/lib/gssapi/krb5/import_name.c
@@ -36,8 +36,9 @@
*/
OM_uint32
-krb5_gss_import_name(minor_status, input_name_buffer, input_name_type,
- output_name)
+krb5_gss_import_name(context, minor_status, input_name_buffer,
+ input_name_type, output_name)
+ krb5_context context;
OM_uint32 *minor_status;
gss_buffer_t input_name_buffer;
const_gss_OID input_name_type;
@@ -76,7 +77,7 @@ krb5_gss_import_name(minor_status, input_name_buffer, input_name_type,
*host = '\0';
host++;
- code = krb5_sname_to_principal(host, service, KRB5_NT_SRV_HST,
+ code = krb5_sname_to_principal(context, host, service, KRB5_NT_SRV_HST,
&princ);
xfree(tmp);
@@ -91,7 +92,7 @@ krb5_gss_import_name(minor_status, input_name_buffer, input_name_type,
input = *((krb5_principal *) input_name_buffer->value);
- if (code = krb5_copy_principal(input, &princ)) {
+ if (code = krb5_copy_principal(context, input, &princ)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -119,7 +120,7 @@ krb5_gss_import_name(minor_status, input_name_buffer, input_name_type,
/* at this point, stringrep is set, or if not, *minor_status is. */
if (stringrep)
- code = krb5_parse_name((char *) stringrep, &princ);
+ code = krb5_parse_name(context, (char *) stringrep, &princ);
else
return(GSS_S_BAD_NAME);
}
@@ -135,7 +136,7 @@ krb5_gss_import_name(minor_status, input_name_buffer, input_name_type,
/* save the name in the validation database */
if (! kg_save_name((gss_name_t) princ)) {
- krb5_free_principal(princ);
+ krb5_free_principal(context, princ);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/indicate_mechs.c b/src/lib/gssapi/krb5/indicate_mechs.c
index d4dff7cd2..f10087345 100644
--- a/src/lib/gssapi/krb5/indicate_mechs.c
+++ b/src/lib/gssapi/krb5/indicate_mechs.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_indicate_mechs(minor_status, mech_set)
+krb5_gss_indicate_mechs(context, minor_status, mech_set)
+ krb5_context context;
OM_uint32 *minor_status;
gss_OID_set *mech_set;
{
diff --git a/src/lib/gssapi/krb5/init_sec_context.c b/src/lib/gssapi/krb5/init_sec_context.c
index fbdd7486b..63f277716 100644
--- a/src/lib/gssapi/krb5/init_sec_context.c
+++ b/src/lib/gssapi/krb5/init_sec_context.c
@@ -24,8 +24,9 @@
#include <memory.h>
static krb5_error_code
-make_ap_req(cred, server, endtime, chan_bindings, do_mutual, subkey, flags,
- seqnum, token)
+make_ap_req(context, cred, server, endtime, chan_bindings, do_mutual,
+ subkey, flags, seqnum, token)
+ krb5_context context;
krb5_gss_cred_id_t cred;
krb5_principal server;
krb5_timestamp *endtime;
@@ -70,20 +71,20 @@ make_ap_req(cred, server, endtime, chan_bindings, do_mutual, subkey, flags,
/* fill in the necessary fields in creds */
memset((char *) &creds, 0, sizeof(creds));
- if (code = krb5_copy_principal(cred->princ, &creds.client))
+ if (code = krb5_copy_principal(context, cred->princ, &creds.client))
return code;
- if (code = krb5_copy_principal(server, &creds.server)) {
- krb5_free_cred_contents(&creds);
+ if (code = krb5_copy_principal(context, server, &creds.server)) {
+ krb5_free_cred_contents(context, &creds);
return code;
}
creds.times.endtime = *endtime;
/* call mk_req. subkey and ap_req need to be used or destroyed */
- if (code = krb5_mk_req_extended(do_mutual?AP_OPTS_MUTUAL_REQUIRED:0,
+ if (code = krb5_mk_req_extended(context, do_mutual?AP_OPTS_MUTUAL_REQUIRED:0,
&checksum, 0, 0, subkey, cred->ccache,
&creds, &authent, &ap_req)) {
- krb5_free_cred_contents(&creds);
+ krb5_free_cred_contents(context, &creds);
return(code);
}
@@ -94,7 +95,7 @@ make_ap_req(cred, server, endtime, chan_bindings, do_mutual, subkey, flags,
/* free stuff which was created */
- krb5_free_cred_contents(&creds);
+ krb5_free_cred_contents(context, &creds);
/* build up the token */
@@ -103,7 +104,7 @@ make_ap_req(cred, server, endtime, chan_bindings, do_mutual, subkey, flags,
if ((t = (unsigned char *) xmalloc(tlen)) == NULL) {
xfree(ap_req.data);
- krb5_free_keyblock(*subkey);
+ krb5_free_keyblock(context, *subkey);
return(ENOMEM);
}
@@ -129,11 +130,12 @@ make_ap_req(cred, server, endtime, chan_bindings, do_mutual, subkey, flags,
}
OM_uint32
-krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
+krb5_gss_init_sec_context(context, minor_status, claimant_cred_handle,
context_handle, target_name, mech_type,
req_flags, time_req, input_chan_bindings,
input_token, actual_mech_type, output_token,
ret_flags, time_rec)
+ krb5_context context;
OM_uint32 *minor_status;
gss_cred_id_t claimant_cred_handle;
gss_ctx_id_t *context_handle;
@@ -233,7 +235,7 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
if (time_req == 0 || time_req == GSS_C_INDEFINITE) {
ctx->endtime = 0;
} else {
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
free(ctx);
*minor_status = code;
return(GSS_S_FAILURE);
@@ -241,15 +243,15 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
ctx->endtime = now + time_req;
}
- if (code = krb5_copy_principal(cred->princ, &ctx->here)) {
+ if (code = krb5_copy_principal(context, cred->princ, &ctx->here)) {
xfree(ctx);
*minor_status = code;
return(GSS_S_FAILURE);
}
- if (code = krb5_copy_principal((krb5_principal) target_name,
+ if (code = krb5_copy_principal(context, (krb5_principal) target_name,
&ctx->there)) {
- krb5_free_principal(ctx->here);
+ krb5_free_principal(context, ctx->here);
xfree(ctx);
*minor_status = code;
return(GSS_S_FAILURE);
@@ -259,8 +261,8 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
input_chan_bindings, ctx->mutual,
&ctx->subkey, &ctx->flags,
&ctx->seq_send, &token)) {
- krb5_free_principal(ctx->here);
- krb5_free_principal(ctx->there);
+ krb5_free_principal(context, ctx->here);
+ krb5_free_principal(context, ctx->there);
xfree(ctx);
*minor_status = code;
return(GSS_S_FAILURE);
@@ -270,15 +272,15 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
/* the encryption key is the session key XOR 0xf0f0f0f0f0f0f0f0 */
- krb5_use_cstype(&ctx->enc.eblock, ETYPE_RAW_DES_CBC);
+ krb5_use_cstype(context, &ctx->enc.eblock, ETYPE_RAW_DES_CBC);
ctx->enc.processed = 0;
- if (code = krb5_copy_keyblock(ctx->subkey, &ctx->enc.key))
+ if (code = krb5_copy_keyblock(context, ctx->subkey, &ctx->enc.key))
return(code);
for (i=0; i<ctx->enc.key->length; i++)
/*SUPPRESS 113*/
ctx->enc.key->contents[i] ^= 0xf0;
- krb5_use_cstype(&ctx->seq.eblock, ETYPE_RAW_DES_CBC);
+ krb5_use_cstype(context, &ctx->seq.eblock, ETYPE_RAW_DES_CBC);
ctx->seq.processed = 0;
ctx->seq.key = ctx->subkey;
@@ -289,9 +291,9 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
if (! kg_save_ctx_id((gss_ctx_id_t) ctx)) {
xfree(token.value);
- krb5_free_keyblock(ctx->subkey);
- krb5_free_principal(ctx->here);
- krb5_free_principal(ctx->there);
+ krb5_free_keyblock(context, ctx->subkey);
+ krb5_free_principal(context, ctx->here);
+ krb5_free_principal(context, ctx->there);
xfree(ctx);
*minor_status = G_VALIDATE_FAILED;
@@ -301,10 +303,10 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
/* compute time_rec */
if (time_rec) {
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
xfree(token.value);
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t) ctx,
- NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t) ctx, NULL);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -352,13 +354,16 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
if ((ctx->established) ||
(((gss_cred_id_t) ctx->cred) != claimant_cred_handle) ||
((req_flags & GSS_C_MUTUAL_FLAG) == 0)) {
- (void)krb5_gss_delete_sec_context(minor_status, context_handle, NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ context_handle, NULL);
*minor_status = KG_CONTEXT_ESTABLISHED;
return(GSS_S_FAILURE);
}
- if (! krb5_principal_compare(ctx->there, (krb5_principal) target_name)) {
- (void)krb5_gss_delete_sec_context(minor_status, context_handle, NULL);
+ if (! krb5_principal_compare(context, ctx->there,
+ (krb5_principal) target_name)) {
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ context_handle, NULL);
*minor_status = 0;
return(GSS_S_BAD_NAME);
}
@@ -366,7 +371,8 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
/* verify the token and leave the AP_REP message in ap_rep */
if (input_token == GSS_C_NO_BUFFER) {
- (void)krb5_gss_delete_sec_context(minor_status, context_handle, NULL);
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ context_handle, NULL);
*minor_status = 0;
return(GSS_S_DEFECTIVE_TOKEN);
}
@@ -383,8 +389,9 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
TREAD_STR(ptr, ap_rep.data, ap_rep.length);
/* decode the ap_rep */
- if (code = krb5_rd_rep(&ap_rep, ctx->subkey, &ap_rep_data)) {
- (void)krb5_gss_delete_sec_context(minor_status, context_handle, NULL);
+ if (code = krb5_rd_rep(context, &ap_rep, ctx->subkey, &ap_rep_data)) {
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ context_handle, NULL);
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -393,7 +400,7 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
ctx->seq_recv = ap_rep_data->seq_number;
/* free the ap_rep_data */
- krb5_free_ap_rep_enc_part(ap_rep_data);
+ krb5_free_ap_rep_enc_part(context, ap_rep_data);
/* set established */
ctx->established = 1;
@@ -401,8 +408,9 @@ krb5_gss_init_sec_context(minor_status, claimant_cred_handle,
/* set returns */
if (time_rec) {
- if (code = krb5_timeofday(&now)) {
- (void)krb5_gss_delete_sec_context(minor_status, (gss_ctx_id_t) ctx,
+ if (code = krb5_timeofday(context, &now)) {
+ (void)krb5_gss_delete_sec_context(context, minor_status,
+ (gss_ctx_id_t) ctx,
NULL);
*minor_status = code;
return(GSS_S_FAILURE);
diff --git a/src/lib/gssapi/krb5/inquire_context.c b/src/lib/gssapi/krb5/inquire_context.c
index aefea92de..3fd7abefa 100644
--- a/src/lib/gssapi/krb5/inquire_context.c
+++ b/src/lib/gssapi/krb5/inquire_context.c
@@ -23,9 +23,10 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_inquire_context(minor_status, context_handle, initiator_name,
+krb5_gss_inquire_context(context, minor_status, context_handle, initiator_name,
acceptor_name, lifetime_rec, mech_type, ret_flags,
locally_initiated)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_name_t *initiator_name;
@@ -62,7 +63,7 @@ krb5_gss_inquire_context(minor_status, context_handle, initiator_name,
init = NULL;
accept = NULL;
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -71,30 +72,32 @@ krb5_gss_inquire_context(minor_status, context_handle, initiator_name,
lifetime = 0;
if (initiator_name) {
- if (code = krb5_copy_principal(ctx->initiate?ctx->here:ctx->there,
+ if (code = krb5_copy_principal(context,
+ ctx->initiate?ctx->here:ctx->there,
&init)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
if (! kg_save_name((gss_name_t) init)) {
- krb5_free_principal(init);
+ krb5_free_principal(context, init);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
}
}
if (acceptor_name) {
- if (code = krb5_copy_principal(ctx->initiate?ctx->there:ctx->here,
+ if (code = krb5_copy_principal(context,
+ ctx->initiate?ctx->there:ctx->here,
&accept)) {
- if (init) krb5_free_principal(init);
+ if (init) krb5_free_principal(context, init);
*minor_status = code;
return(GSS_S_FAILURE);
}
if (! kg_save_name((gss_name_t) accept)) {
- krb5_free_principal(accept);
+ krb5_free_principal(context, accept);
if (init) {
kg_delete_name((gss_name_t) accept);
- krb5_free_principal(init);
+ krb5_free_principal(context, init);
}
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
diff --git a/src/lib/gssapi/krb5/inquire_cred.c b/src/lib/gssapi/krb5/inquire_cred.c
index ea8ed4b04..1101e14cb 100644
--- a/src/lib/gssapi/krb5/inquire_cred.c
+++ b/src/lib/gssapi/krb5/inquire_cred.c
@@ -23,8 +23,9 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
+krb5_gss_inquire_cred(context, minor_status, cred_handle, name, lifetime_ret,
cred_usage, mechanisms)
+ krb5_context context;
OM_uint32 *minor_status;
gss_cred_id_t cred_handle;
gss_name_t *name;
@@ -60,7 +61,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
cred = (krb5_gss_cred_id_t) cred_handle;
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -69,7 +70,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
lifetime = 0;
if (name) {
- if (code = krb5_copy_principal(cred->princ, &ret_name)) {
+ if (code = krb5_copy_principal(context, cred->princ, &ret_name)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
@@ -77,7 +78,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
if (mechanisms)
if (! g_copy_OID_set(gss_mech_set_krb5, &mechs)) {
- krb5_free_principal(ret_name);
+ krb5_free_principal(context, ret_name);
*minor_status = ENOMEM;
return(GSS_S_FAILURE);
}
@@ -85,7 +86,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
if (name) {
if (! kg_save_name((gss_name_t) ret_name)) {
(void)gss_release_oid_set(minor_status, &mechs);
- krb5_free_principal(ret_name);
+ krb5_free_principal(context, ret_name);
*minor_status = G_VALIDATE_FAILED;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/k5seal.c b/src/lib/gssapi/krb5/k5seal.c
index d7f76bfd7..5cc622dad 100644
--- a/src/lib/gssapi/krb5/k5seal.c
+++ b/src/lib/gssapi/krb5/k5seal.c
@@ -25,8 +25,9 @@
#include <krb5/rsa-md5.h>
static krb5_error_code
-make_seal_token(enc_ed, seq_ed, seqnum, direction, text, token,
+make_seal_token(context, enc_ed, seq_ed, seqnum, direction, text, token,
encrypt, toktype, bigend)
+ krb5_context context;
krb5_gss_enc_desc *enc_ed;
krb5_gss_enc_desc *seq_ed;
krb5_int32 *seqnum;
@@ -145,7 +146,7 @@ make_seal_token(enc_ed, seq_ed, seqnum, direction, text, token,
/* XXX this depends on the key being a single-des key, but that's
all that kerberos supports right now */
- if (code = krb5_calculate_checksum(CKSUMTYPE_DESCBC, md5.digest, 16,
+ if (code = krb5_calculate_checksum(context, CKSUMTYPE_DESCBC, md5.digest, 16,
seq_ed->key->contents,
seq_ed->key->length,
&desmac)) {
@@ -217,7 +218,7 @@ kg_seal(minor_status, context_handle, conf_req_flag, qop_req,
return(GSS_S_NO_CONTEXT);
}
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(ctx->context, &now)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/k5unseal.c b/src/lib/gssapi/krb5/k5unseal.c
index 78d328d5a..ca0eca182 100644
--- a/src/lib/gssapi/krb5/k5unseal.c
+++ b/src/lib/gssapi/krb5/k5unseal.c
@@ -173,8 +173,8 @@ kg_unseal(minor_status, context_handle, input_token_buffer, message_buffer,
/* XXX this depends on the key being a single-des key, but that's
all that kerberos supports right now */
- if (code = krb5_calculate_checksum(CKSUMTYPE_DESCBC, md5.digest, 16,
- ctx->seq.key->contents,
+ if (code = krb5_calculate_checksum(context, CKSUMTYPE_DESCBC, md5.digest,
+ 16, ctx->seq.key->contents,
ctx->seq.key->length,
&desmac)) {
if (toktype == KG_TOK_SEAL_MSG)
@@ -239,7 +239,7 @@ kg_unseal(minor_status, context_handle, input_token_buffer, message_buffer,
if (qop_state)
*qop_state = GSS_C_QOP_DEFAULT;
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(ctx->context, &now)) {
*minor_status = code;
return(GSS_S_FAILURE);
}
diff --git a/src/lib/gssapi/krb5/krb5_gss_glue.c b/src/lib/gssapi/krb5/krb5_gss_glue.c
index ed31c9051..a1c0f7f6a 100644
--- a/src/lib/gssapi/krb5/krb5_gss_glue.c
+++ b/src/lib/gssapi/krb5/krb5_gss_glue.c
@@ -22,18 +22,12 @@
#include "gssapiP_krb5.h"
+extern krb5_context kg_context;
+
OM_uint32
-gss_accept_sec_context(minor_status,
- context_handle,
- verifier_cred_handle,
- input_token,
- input_chan_bindings,
- src_name,
- mech_type,
- output_token,
- ret_flags,
- time_rec,
- delegated_cred_handle)
+gss_accept_sec_context(minor_status, context_handle, verifier_cred_handle,
+ input_token, input_chan_bindings, src_name, mech_type,
+ output_token, ret_flags, time_rec, delegated_cred_handle)
OM_uint32 *minor_status;
gss_ctx_id_t *context_handle;
gss_cred_id_t verifier_cred_handle;
@@ -46,7 +40,17 @@ gss_accept_sec_context(minor_status,
OM_uint32 *time_rec;
gss_cred_id_t *delegated_cred_handle;
{
- return(krb5_gss_accept_sec_context(minor_status,
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_accept_sec_context(ctx->context, minor_status,
context_handle,
verifier_cred_handle,
input_token,
@@ -60,14 +64,8 @@ gss_accept_sec_context(minor_status,
}
OM_uint32
-gss_acquire_cred(minor_status,
- desired_name,
- time_req,
- desired_mechs,
- cred_usage,
- output_cred_handle,
- actual_mechs,
- time_rec)
+gss_acquire_cred(minor_status, desired_name, time_req, desired_mechs,
+ cred_usage, output_cred_handle, actual_mechs, time_rec)
OM_uint32 *minor_status;
gss_name_t desired_name;
OM_uint32 time_req;
@@ -77,7 +75,7 @@ gss_acquire_cred(minor_status,
gss_OID_set *actual_mechs;
OM_uint32 *time_rec;
{
- return(krb5_gss_acquire_cred(minor_status,
+ return(krb5_gss_acquire_cred(kg_context, minor_status,
desired_name,
time_req,
desired_mechs,
@@ -88,70 +86,70 @@ gss_acquire_cred(minor_status,
}
OM_uint32
-gss_compare_name(minor_status,
- name1,
- name2,
- name_equal)
+gss_compare_name(minor_status, name1, name2, name_equal)
OM_uint32 *minor_status;
gss_name_t name1;
gss_name_t name2;
int *name_equal;
{
- return(krb5_gss_compare_name(minor_status,
- name1,
- name2,
- name_equal));
+ return(krb5_gss_compare_name(kg_context, minor_status, name1,
+ name2, name_equal));
}
OM_uint32
-gss_context_time(minor_status,
- context_handle,
- time_rec)
+gss_context_time(minor_status, context_handle, time_rec)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
OM_uint32 *time_rec;
{
- return(krb5_gss_context_time(minor_status,
- context_handle,
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_context_time(ctx->context, minor_status, context_handle,
time_rec));
}
OM_uint32
-gss_delete_sec_context(minor_status,
- context_handle,
- output_token)
+gss_delete_sec_context(minor_status, context_handle, output_token)
OM_uint32 *minor_status;
gss_ctx_id_t *context_handle;
gss_buffer_t output_token;
{
- return(krb5_gss_delete_sec_context(minor_status,
- context_handle,
- output_token));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_delete_sec_context(ctx->context, minor_status,
+ context_handle, output_token));
}
OM_uint32
-gss_display_name(minor_status,
- input_name,
- output_name_buffer,
- output_name_type)
+gss_display_name(minor_status, input_name, output_name_buffer, output_name_type)
OM_uint32 *minor_status;
gss_name_t input_name;
gss_buffer_t output_name_buffer;
gss_OID *output_name_type;
{
- return(krb5_gss_display_name(minor_status,
- input_name,
- output_name_buffer,
- output_name_type));
+ return(krb5_gss_display_name(kg_context, minor_status, input_name,
+ output_name_buffer, output_name_type));
}
OM_uint32
-gss_display_status(minor_status,
- status_value,
- status_type,
- mech_type,
- message_context,
- status_string)
+gss_display_status(minor_status, status_value, status_type,
+ mech_type, message_context, status_string)
OM_uint32 *minor_status;
OM_uint32 status_value;
int status_type;
@@ -159,28 +157,20 @@ gss_display_status(minor_status,
int *message_context;
gss_buffer_t status_string;
{
- return(krb5_gss_display_status(minor_status,
- status_value,
- status_type,
- mech_type,
- message_context,
+ return(krb5_gss_display_status(kg_context, minor_status, status_value,
+ status_type, mech_type, message_context,
status_string));
}
OM_uint32
-gss_import_name(minor_status,
- input_name_buffer,
- input_name_type,
- output_name)
+gss_import_name(minor_status, input_name_buffer, input_name_type, output_name)
OM_uint32 *minor_status;
gss_buffer_t input_name_buffer;
const_gss_OID input_name_type;
gss_name_t *output_name;
{
- return(krb5_gss_import_name(minor_status,
- input_name_buffer,
- input_name_type,
- output_name));
+ return(krb5_gss_import_name(kg_context, minor_status, input_name_buffer,
+ input_name_type, output_name));
}
OM_uint32
@@ -188,24 +178,14 @@ gss_indicate_mechs(minor_status, mech_set)
OM_uint32 *minor_status;
gss_OID_set *mech_set;
{
- return(krb5_gss_indicate_mechs(minor_status,
- mech_set));
+ return(krb5_gss_indicate_mechs(kg_context, minor_status, mech_set));
}
OM_uint32
-gss_init_sec_context(minor_status,
- claimant_cred_handle,
- context_handle,
- target_name,
- mech_type,
- req_flags,
- time_req,
- input_chan_bindings,
- input_token,
- actual_mech_type,
- output_token,
- ret_flags,
- time_rec)
+gss_init_sec_context(minor_status, claimant_cred_handle, context_handle,
+ target_name, mech_type, req_flags, time_req,
+ input_chan_bindings, input_token, actual_mech_type,
+ output_token, ret_flags, time_rec)
OM_uint32 *minor_status;
gss_cred_id_t claimant_cred_handle;
gss_ctx_id_t *context_handle;
@@ -220,29 +200,17 @@ gss_init_sec_context(minor_status,
int *ret_flags;
OM_uint32 *time_rec;
{
- return(krb5_gss_init_sec_context(minor_status,
- claimant_cred_handle,
- context_handle,
- target_name,
- mech_type,
- req_flags,
- time_req,
- input_chan_bindings,
- input_token,
- actual_mech_type,
- output_token,
- ret_flags,
+ return(krb5_gss_init_sec_context(kg_context, minor_status,
+ claimant_cred_handle, context_handle,
+ target_name, mech_type, req_flags,
+ time_req, input_chan_bindings, input_token,
+ actual_mech_type, output_token, ret_flags,
time_rec));
}
OM_uint32
-gss_inquire_context(minor_status,
- context_handle,
- initiator_name,
- acceptor_name,
- lifetime_rec,
- mech_type,
- ret_flags,
+gss_inquire_context(minor_status, context_handle, initiator_name, acceptor_name,
+ lifetime_rec, mech_type, ret_flags,
locally_initiated)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
@@ -253,23 +221,24 @@ gss_inquire_context(minor_status,
int *ret_flags;
int *locally_initiated;
{
- return(krb5_gss_inquire_context(minor_status,
- context_handle,
- initiator_name,
- acceptor_name,
- lifetime_rec,
- mech_type,
- ret_flags,
- locally_initiated));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_inquire_context(ctx->context, minor_status, context_handle,
+ initiator_name, acceptor_name, lifetime_rec,
+ mech_type, ret_flags, locally_initiated));
}
OM_uint32
-gss_inquire_cred(minor_status,
- cred_handle,
- name,
- lifetime_ret,
- cred_usage,
- mechanisms)
+gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
+ cred_usage, mechanisms)
OM_uint32 *minor_status;
gss_cred_id_t cred_handle;
gss_name_t *name;
@@ -277,25 +246,28 @@ gss_inquire_cred(minor_status,
int *cred_usage;
gss_OID_set *mechanisms;
{
- return(krb5_gss_inquire_cred(minor_status,
- cred_handle,
- name,
- lifetime_ret,
- cred_usage,
- mechanisms));
+ return(krb5_gss_inquire_cred(kg_context, minor_status, cred_handle,
+ name, lifetime_ret, cred_usage, mechanisms));
}
OM_uint32
-gss_process_context_token(minor_status,
- context_handle,
- token_buffer)
+gss_process_context_token(minor_status, context_handle, token_buffer)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t token_buffer;
{
- return(krb5_gss_process_context_token(minor_status,
- context_handle,
- token_buffer));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_process_context_token(ctx->context, minor_status,
+ context_handle, token_buffer));
}
OM_uint32
@@ -303,8 +275,7 @@ gss_release_cred(minor_status, cred_handle)
OM_uint32 *minor_status;
gss_cred_id_t *cred_handle;
{
- return(krb5_gss_release_cred(minor_status,
- cred_handle));
+ return(krb5_gss_release_cred(kg_context, minor_status, cred_handle));
}
OM_uint32
@@ -312,8 +283,7 @@ gss_release_name(minor_status, input_name)
OM_uint32 *minor_status;
gss_name_t *input_name;
{
- return(krb5_gss_release_name(minor_status,
- input_name));
+ return(krb5_gss_release_name(kg_context, minor_status, input_name));
}
OM_uint32
@@ -330,18 +300,12 @@ gss_release_oid_set(minor_status, set)
OM_uint32* minor_status;
gss_OID_set *set;
{
- return(generic_gss_release_oid_set(minor_status,
- set));
+ return(generic_gss_release_oid_set(minor_status, set));
}
OM_uint32
-gss_seal(minor_status,
- context_handle,
- conf_req_flag,
- qop_req,
- input_message_buffer,
- conf_state,
- output_message_buffer)
+gss_seal(minor_status, context_handle, conf_req_flag, qop_req,
+ input_message_buffer, conf_state, output_message_buffer)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
int conf_req_flag;
@@ -350,41 +314,46 @@ gss_seal(minor_status,
int *conf_state;
gss_buffer_t output_message_buffer;
{
- return(krb5_gss_seal(minor_status,
- context_handle,
- conf_req_flag,
- qop_req,
- input_message_buffer,
- conf_state,
- output_message_buffer));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_seal(ctx->context, minor_status, context_handle,
+ conf_req_flag, qop_req, input_message_buffer,
+ conf_state, output_message_buffer));
}
OM_uint32
-gss_sign(minor_status,
- context_handle,
- qop_req,
- message_buffer,
- message_token)
+gss_sign(minor_status, context_handle, qop_req, message_buffer, message_token)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
int qop_req;
gss_buffer_t message_buffer;
gss_buffer_t message_token;
{
- return(krb5_gss_sign(minor_status,
- context_handle,
- qop_req,
- message_buffer,
- message_token));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_sign(ctx->context, minor_status, context_handle,
+ qop_req, message_buffer, message_token));
}
OM_uint32
-gss_unseal(minor_status,
- context_handle,
- input_message_buffer,
- output_message_buffer,
- conf_state,
- qop_state)
+gss_unseal(minor_status, context_handle, input_message_buffer,
+ output_message_buffer, conf_state, qop_state)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t input_message_buffer;
@@ -392,29 +361,40 @@ gss_unseal(minor_status,
int *conf_state;
int *qop_state;
{
- return(krb5_gss_unseal(minor_status,
- context_handle,
- input_message_buffer,
- output_message_buffer,
- conf_state,
- qop_state));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_unseal(ctx->context, minor_status, context_handle,
+ input_message_buffer, output_message_buffer,
+ conf_state, qop_state));
}
OM_uint32
-gss_verify(minor_status,
- context_handle,
- message_buffer,
- token_buffer,
- qop_state)
+gss_verify(minor_status, context_handle, message_buffer,
+ token_buffer, qop_state)
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t message_buffer;
gss_buffer_t token_buffer;
int *qop_state;
{
- return(krb5_gss_verify(minor_status,
- context_handle,
- message_buffer,
- token_buffer,
- qop_state));
+ krb5_gss_ctx_id_t * ctx;
+
+ /* validate the context handle */
+ if (! kg_validate_ctx_id(context_handle)) {
+ *minor_status = G_VALIDATE_FAILED;
+ return(GSS_S_NO_CONTEXT);
+ }
+
+ ctx = (krb5_gss_ctx_id_rec *) context_handle;
+
+ return(krb5_gss_verify(ctx->context, minor_status, context_handle,
+ message_buffer, token_buffer, qop_state));
}
diff --git a/src/lib/gssapi/krb5/process_context_token.c b/src/lib/gssapi/krb5/process_context_token.c
index e5d142bc0..5a7a65215 100644
--- a/src/lib/gssapi/krb5/process_context_token.c
+++ b/src/lib/gssapi/krb5/process_context_token.c
@@ -23,7 +23,9 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_process_context_token(minor_status, context_handle, token_buffer)
+krb5_gss_process_context_token(context, minor_status, context_handle,
+ token_buffer)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t token_buffer;
@@ -53,6 +55,6 @@ krb5_gss_process_context_token(minor_status, context_handle, token_buffer)
/* that's it. delete the context */
- return(krb5_gss_delete_sec_context(minor_status, &context_handle,
+ return(krb5_gss_delete_sec_context(context, minor_status, &context_handle,
GSS_C_NO_BUFFER));
}
diff --git a/src/lib/gssapi/krb5/release_cred.c b/src/lib/gssapi/krb5/release_cred.c
index 83ce7f101..21cfc5fba 100644
--- a/src/lib/gssapi/krb5/release_cred.c
+++ b/src/lib/gssapi/krb5/release_cred.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_release_cred(minor_status, cred_handle)
+krb5_gss_release_cred(context, minor_status, cred_handle)
+ krb5_context context;
OM_uint32 *minor_status;
gss_cred_id_t *cred_handle;
{
@@ -41,17 +42,17 @@ krb5_gss_release_cred(minor_status, cred_handle)
cred = *cred_handle;
if (cred->ccache)
- code1 = krb5_cc_close(cred->ccache);
+ code1 = krb5_cc_close(context, cred->ccache);
else
code1 = 0;
if (cred->keytab)
- code2 = krb5_kt_close(cred->keytab);
+ code2 = krb5_kt_close(context, cred->keytab);
else
code2 = 0;
if (cred->princ)
- krb5_free_principal(cred->princ);
+ krb5_free_principal(context, cred->princ);
xfree(cred);
*cred_handle = NULL;
diff --git a/src/lib/gssapi/krb5/release_name.c b/src/lib/gssapi/krb5/release_name.c
index 0371756ad..4756d08bd 100644
--- a/src/lib/gssapi/krb5/release_name.c
+++ b/src/lib/gssapi/krb5/release_name.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_release_name(minor_status, input_name)
+krb5_gss_release_name(context, minor_status, input_name)
+ krb5_context context;
OM_uint32 *minor_status;
gss_name_t *input_name;
{
@@ -34,7 +35,7 @@ krb5_gss_release_name(minor_status, input_name)
(void)kg_delete_name(*input_name);
- krb5_free_principal((krb5_principal) *input_name);
+ krb5_free_principal(context, (krb5_principal) *input_name);
*input_name = GSS_C_NO_NAME;
diff --git a/src/lib/gssapi/krb5/seal.c b/src/lib/gssapi/krb5/seal.c
index 691e9eea6..a0e06ebde 100644
--- a/src/lib/gssapi/krb5/seal.c
+++ b/src/lib/gssapi/krb5/seal.c
@@ -23,9 +23,10 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_seal(minor_status, context_handle, conf_req_flag,
- qop_req, input_message_buffer, conf_state,
- output_message_buffer)
+krb5_gss_seal(context, minor_status, context_handle, conf_req_flag,
+ qop_req, input_message_buffer, conf_state,
+ output_message_buffer)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
int conf_req_flag;
diff --git a/src/lib/gssapi/krb5/sign.c b/src/lib/gssapi/krb5/sign.c
index 7c139f18d..bafc0837d 100644
--- a/src/lib/gssapi/krb5/sign.c
+++ b/src/lib/gssapi/krb5/sign.c
@@ -23,9 +23,10 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_sign(minor_status, context_handle,
+krb5_gss_sign(context, minor_status, context_handle,
qop_req, message_buffer,
message_token)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
int qop_req;
diff --git a/src/lib/gssapi/krb5/unseal.c b/src/lib/gssapi/krb5/unseal.c
index a9c46c695..3449951af 100644
--- a/src/lib/gssapi/krb5/unseal.c
+++ b/src/lib/gssapi/krb5/unseal.c
@@ -23,9 +23,10 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_unseal(minor_status, context_handle,
+krb5_gss_unseal(context, minor_status, context_handle,
input_message_buffer, output_message_buffer,
conf_state, qop_state)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t input_message_buffer;
diff --git a/src/lib/gssapi/krb5/util_cksum.c b/src/lib/gssapi/krb5/util_cksum.c
index fab785ec3..691f6d754 100644
--- a/src/lib/gssapi/krb5/util_cksum.c
+++ b/src/lib/gssapi/krb5/util_cksum.c
@@ -23,7 +23,8 @@
#include "gssapiP_krb5.h"
#include <memory.h>
-krb5_error_code kg_checksum_channel_bindings(cb, cksum, bigend)
+krb5_error_code
+kg_checksum_channel_bindings(cb, cksum, bigend)
gss_channel_bindings_t cb;
krb5_checksum *cksum;
int bigend;
@@ -38,12 +39,12 @@ krb5_error_code kg_checksum_channel_bindings(cb, cksum, bigend)
if (cb == GSS_C_NO_CHANNEL_BINDINGS) {
/* allocate the cksum contents buffer */
if ((cksum->contents = (krb5_octet *)
- xmalloc(krb5_checksum_size(CKSUMTYPE_RSA_MD5))) == NULL)
+ xmalloc(krb5_checksum_size(context, CKSUMTYPE_RSA_MD5))) == NULL)
return(ENOMEM);
cksum->checksum_type = CKSUMTYPE_RSA_MD5;
memset(cksum->contents, '\0',
- (cksum->length = krb5_checksum_size(CKSUMTYPE_RSA_MD5)));
+ (cksum->length = krb5_checksum_size(global_context, CKSUMTYPE_RSA_MD5)));
return(0);
}
@@ -59,7 +60,7 @@ krb5_error_code kg_checksum_channel_bindings(cb, cksum, bigend)
/* allocate the cksum contents buffer */
if ((cksum->contents = (krb5_octet *)
- xmalloc(krb5_checksum_size(CKSUMTYPE_RSA_MD5))) == NULL) {
+ xmalloc(krb5_checksum_size(context, CKSUMTYPE_RSA_MD5))) == NULL) {
free(buf);
return(ENOMEM);
}
@@ -77,8 +78,8 @@ krb5_error_code kg_checksum_channel_bindings(cb, cksum, bigend)
/* checksum the data */
- if (code = krb5_calculate_checksum(CKSUMTYPE_RSA_MD5, buf, len,
- NULL, 0, cksum)) {
+ if (code = krb5_calculate_checksum(global_context, CKSUMTYPE_RSA_MD5,
+ buf, len, NULL, 0, cksum)) {
xfree(cksum->contents);
xfree(buf);
return(code);
diff --git a/src/lib/gssapi/krb5/util_crypt.c b/src/lib/gssapi/krb5/util_crypt.c
index d58c3c56d..bee58ceee 100644
--- a/src/lib/gssapi/krb5/util_crypt.c
+++ b/src/lib/gssapi/krb5/util_crypt.c
@@ -25,6 +25,8 @@
static unsigned char zeros[8] = {0,0,0,0,0,0,0,0};
+extern krb5_context kg_context;
+
int kg_confounder_size(ed)
krb5_gss_enc_desc *ed;
{
@@ -38,7 +40,8 @@ kg_make_confounder(ed, buf)
krb5_gss_enc_desc *ed;
unsigned char *buf;
{
- return(krb5_random_confounder(ed->eblock.crypto_entry->block_length, buf));
+ return(krb5_random_confounder(kg_context,
+ ed->eblock.crypto_entry->block_length, buf));
}
int kg_encrypt_size(ed, n)
@@ -59,12 +62,13 @@ kg_encrypt(ed, iv, in, out, length)
krb5_error_code code;
if (! ed->processed) {
- if (code = krb5_process_key(&ed->eblock, ed->key))
+ if (code = krb5_process_key(kg_context, &ed->eblock, ed->key))
return(code);
ed->processed = 1;
}
- if (code = krb5_encrypt(in, out, length, &ed->eblock, iv?iv:(krb5_pointer)zeros))
+ if (code = krb5_encrypt(kg_context, in, out, length, &ed->eblock,
+ iv?iv:(krb5_pointer)zeros))
return(code);
return(0);
@@ -85,7 +89,7 @@ kg_decrypt(ed, iv, in, out, length)
char *buf;
if (! ed->processed) {
- if (code = krb5_process_key(&ed->eblock, ed->key))
+ if (code = krb5_process_key(kg_context, &ed->eblock, ed->key))
return(code);
ed->processed = 1;
}
@@ -94,7 +98,8 @@ kg_decrypt(ed, iv, in, out, length)
if ((buf = (char *) xmalloc(elen)) == NULL)
return(ENOMEM);
- if (code = krb5_decrypt(in, buf, elen, &ed->eblock, iv?iv:(krb5_pointer)zeros)) {
+ if (code = krb5_decrypt(kg_context, in, buf, elen, &ed->eblock,
+ iv?iv:(krb5_pointer)zeros)) {
xfree(buf);
return(code);
}
diff --git a/src/lib/gssapi/krb5/util_seed.c b/src/lib/gssapi/krb5/util_seed.c
index 9586ff06d..cb7430179 100644
--- a/src/lib/gssapi/krb5/util_seed.c
+++ b/src/lib/gssapi/krb5/util_seed.c
@@ -25,6 +25,8 @@
static unsigned char zeros[16] = {0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
+extern krb5_context kg_context;
+
krb5_error_code
kg_make_seed(key, seed)
krb5_keyblock *key;
@@ -34,7 +36,7 @@ kg_make_seed(key, seed)
krb5_gss_enc_desc ed;
int i;
- if (code = krb5_copy_keyblock(key, &ed.key))
+ if (code = krb5_copy_keyblock(kg_context, key, &ed.key))
return(code);
/* reverse the key bytes, as per spec */
@@ -42,13 +44,13 @@ kg_make_seed(key, seed)
for (i=0; i<ed.key->length; i++)
ed.key->contents[i] = key->contents[key->length - 1 - i];
- krb5_use_cstype(&ed.eblock, ETYPE_RAW_DES_CBC);
+ krb5_use_cstype(kg_context, &ed.eblock, ETYPE_RAW_DES_CBC);
ed.processed = 0;
code = kg_encrypt(&ed, NULL, zeros, seed, 16);
- krb5_finish_key(&ed.eblock);
- krb5_free_keyblock(ed.key);
+ krb5_finish_key(kg_context, &ed.eblock);
+ krb5_free_keyblock(kg_context, ed.key);
return(code);
}
diff --git a/src/lib/gssapi/krb5/util_seqnum.c b/src/lib/gssapi/krb5/util_seqnum.c
index 30877fa4f..47381f682 100644
--- a/src/lib/gssapi/krb5/util_seqnum.c
+++ b/src/lib/gssapi/krb5/util_seqnum.c
@@ -22,7 +22,8 @@
#include "gssapiP_krb5.h"
-krb5_error_code kg_make_seq_num(ed, direction, seqnum, cksum, buf)
+krb5_error_code
+kg_make_seq_num(ed, direction, seqnum, cksum, buf)
krb5_gss_enc_desc *ed;
int direction;
int seqnum;
diff --git a/src/lib/gssapi/krb5/verify.c b/src/lib/gssapi/krb5/verify.c
index c08ea25a2..398b1d771 100644
--- a/src/lib/gssapi/krb5/verify.c
+++ b/src/lib/gssapi/krb5/verify.c
@@ -23,9 +23,10 @@
#include "gssapiP_krb5.h"
OM_uint32
-krb5_gss_verify(minor_status, context_handle,
+krb5_gss_verify(context, minor_status, context_handle,
message_buffer, token_buffer,
qop_state)
+ krb5_context context;
OM_uint32 *minor_status;
gss_ctx_id_t context_handle;
gss_buffer_t message_buffer;