diff options
Diffstat (limited to 'crypto/heimdal/lib/krb5/auth_context.c')
-rw-r--r-- | crypto/heimdal/lib/krb5/auth_context.c | 99 |
1 files changed, 63 insertions, 36 deletions
diff --git a/crypto/heimdal/lib/krb5/auth_context.c b/crypto/heimdal/lib/krb5/auth_context.c index 2e7a8f4..323f17a 100644 --- a/crypto/heimdal/lib/krb5/auth_context.c +++ b/crypto/heimdal/lib/krb5/auth_context.c @@ -33,9 +33,9 @@ #include "krb5_locl.h" -RCSID("$Id: auth_context.c,v 1.59 2002/09/02 17:11:02 joda Exp $"); +RCSID("$Id: auth_context.c 21745 2007-07-31 16:11:25Z lha $"); -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_init(krb5_context context, krb5_auth_context *auth_context) { @@ -66,7 +66,7 @@ krb5_auth_con_init(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_free(krb5_context context, krb5_auth_context auth_context) { @@ -88,7 +88,7 @@ krb5_auth_con_free(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setflags(krb5_context context, krb5_auth_context auth_context, int32_t flags) @@ -98,7 +98,7 @@ krb5_auth_con_setflags(krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getflags(krb5_context context, krb5_auth_context auth_context, int32_t *flags) @@ -107,8 +107,31 @@ krb5_auth_con_getflags(krb5_context context, return 0; } +krb5_error_code KRB5_LIB_FUNCTION +krb5_auth_con_addflags(krb5_context context, + krb5_auth_context auth_context, + int32_t addflags, + int32_t *flags) +{ + if (flags) + *flags = auth_context->flags; + auth_context->flags |= addflags; + return 0; +} + +krb5_error_code KRB5_LIB_FUNCTION +krb5_auth_con_removeflags(krb5_context context, + krb5_auth_context auth_context, + int32_t removeflags, + int32_t *flags) +{ + if (flags) + *flags = auth_context->flags; + auth_context->flags &= ~removeflags; + return 0; +} -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setaddrs(krb5_context context, krb5_auth_context auth_context, krb5_address *local_addr, @@ -118,20 +141,22 @@ krb5_auth_con_setaddrs(krb5_context context, if (auth_context->local_address) krb5_free_address (context, auth_context->local_address); else - auth_context->local_address = malloc(sizeof(krb5_address)); + if ((auth_context->local_address = malloc(sizeof(krb5_address))) == NULL) + return ENOMEM; krb5_copy_address(context, local_addr, auth_context->local_address); } if (remote_addr) { if (auth_context->remote_address) krb5_free_address (context, auth_context->remote_address); else - auth_context->remote_address = malloc(sizeof(krb5_address)); + if ((auth_context->remote_address = malloc(sizeof(krb5_address))) == NULL) + return ENOMEM; krb5_copy_address(context, remote_addr, auth_context->remote_address); } return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_genaddrs(krb5_context context, krb5_auth_context auth_context, int fd, int flags) @@ -190,7 +215,7 @@ krb5_auth_con_genaddrs(krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setaddrs_from_fd (krb5_context context, krb5_auth_context auth_context, void *p_fd) @@ -204,7 +229,7 @@ krb5_auth_con_setaddrs_from_fd (krb5_context context, return krb5_auth_con_genaddrs(context, auth_context, fd, flags); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getaddrs(krb5_context context, krb5_auth_context auth_context, krb5_address **local_addr, @@ -247,7 +272,7 @@ copy_key(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock **keyblock) @@ -255,7 +280,7 @@ krb5_auth_con_getkey(krb5_context context, return copy_key(context, auth_context->keyblock, keyblock); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getlocalsubkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock **keyblock) @@ -263,7 +288,7 @@ krb5_auth_con_getlocalsubkey(krb5_context context, return copy_key(context, auth_context->local_subkey, keyblock); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getremotesubkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock **keyblock) @@ -271,7 +296,7 @@ krb5_auth_con_getremotesubkey(krb5_context context, return copy_key(context, auth_context->remote_subkey, keyblock); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock) @@ -281,7 +306,7 @@ krb5_auth_con_setkey(krb5_context context, return copy_key(context, keyblock, &auth_context->keyblock); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setlocalsubkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock) @@ -291,7 +316,7 @@ krb5_auth_con_setlocalsubkey(krb5_context context, return copy_key(context, keyblock, &auth_context->local_subkey); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_generatelocalsubkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *key) @@ -299,7 +324,9 @@ krb5_auth_con_generatelocalsubkey(krb5_context context, krb5_error_code ret; krb5_keyblock *subkey; - ret = krb5_generate_subkey (context, key, &subkey); + ret = krb5_generate_subkey_extended (context, key, + auth_context->keytype, + &subkey); if(ret) return ret; if(auth_context->local_subkey) @@ -309,7 +336,7 @@ krb5_auth_con_generatelocalsubkey(krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setremotesubkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock) @@ -319,7 +346,7 @@ krb5_auth_con_setremotesubkey(krb5_context context, return copy_key(context, keyblock, &auth_context->remote_subkey); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setcksumtype(krb5_context context, krb5_auth_context auth_context, krb5_cksumtype cksumtype) @@ -328,7 +355,7 @@ krb5_auth_con_setcksumtype(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getcksumtype(krb5_context context, krb5_auth_context auth_context, krb5_cksumtype *cksumtype) @@ -337,7 +364,7 @@ krb5_auth_con_getcksumtype(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setkeytype (krb5_context context, krb5_auth_context auth_context, krb5_keytype keytype) @@ -346,7 +373,7 @@ krb5_auth_con_setkeytype (krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getkeytype (krb5_context context, krb5_auth_context auth_context, krb5_keytype *keytype) @@ -356,7 +383,7 @@ krb5_auth_con_getkeytype (krb5_context context, } #if 0 -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setenctype(krb5_context context, krb5_auth_context auth_context, krb5_enctype etype) @@ -370,7 +397,7 @@ krb5_auth_con_setenctype(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getenctype(krb5_context context, krb5_auth_context auth_context, krb5_enctype *etype) @@ -379,7 +406,7 @@ krb5_auth_con_getenctype(krb5_context context, } #endif -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getlocalseqnumber(krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber) @@ -388,7 +415,7 @@ krb5_auth_con_getlocalseqnumber(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setlocalseqnumber (krb5_context context, krb5_auth_context auth_context, int32_t seqnumber) @@ -397,7 +424,7 @@ krb5_auth_con_setlocalseqnumber (krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_getremoteseqnumber(krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber) @@ -406,7 +433,7 @@ krb5_auth_getremoteseqnumber(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setremoteseqnumber (krb5_context context, krb5_auth_context auth_context, int32_t seqnumber) @@ -416,7 +443,7 @@ krb5_auth_con_setremoteseqnumber (krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getauthenticator(krb5_context context, krb5_auth_context auth_context, krb5_authenticator *authenticator) @@ -433,7 +460,7 @@ krb5_auth_con_getauthenticator(krb5_context context, } -void +void KRB5_LIB_FUNCTION krb5_free_authenticator(krb5_context context, krb5_authenticator *authenticator) { @@ -443,7 +470,7 @@ krb5_free_authenticator(krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setuserkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock) @@ -453,7 +480,7 @@ krb5_auth_con_setuserkey(krb5_context context, return krb5_copy_keyblock(context, keyblock, &auth_context->keyblock); } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_getrcache(krb5_context context, krb5_auth_context auth_context, krb5_rcache *rcache) @@ -462,7 +489,7 @@ krb5_auth_con_getrcache(krb5_context context, return 0; } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setrcache(krb5_context context, krb5_auth_context auth_context, krb5_rcache rcache) @@ -473,7 +500,7 @@ krb5_auth_con_setrcache(krb5_context context, #if 0 /* not implemented */ -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_initivector(krb5_context context, krb5_auth_context auth_context) { @@ -481,7 +508,7 @@ krb5_auth_con_initivector(krb5_context context, } -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_auth_con_setivector(krb5_context context, krb5_auth_context auth_context, krb5_pointer ivector) |