1b528cefcSMark Murray /* 25e9cd1aeSAssar Westerlund * Copyright (c) 1997 - 2000 Kungliga Tekniska H�gskolan 3b528cefcSMark Murray * (Royal Institute of Technology, Stockholm, Sweden). 4b528cefcSMark Murray * All rights reserved. 5b528cefcSMark Murray * 6b528cefcSMark Murray * Redistribution and use in source and binary forms, with or without 7b528cefcSMark Murray * modification, are permitted provided that the following conditions 8b528cefcSMark Murray * are met: 9b528cefcSMark Murray * 10b528cefcSMark Murray * 1. Redistributions of source code must retain the above copyright 11b528cefcSMark Murray * notice, this list of conditions and the following disclaimer. 12b528cefcSMark Murray * 13b528cefcSMark Murray * 2. Redistributions in binary form must reproduce the above copyright 14b528cefcSMark Murray * notice, this list of conditions and the following disclaimer in the 15b528cefcSMark Murray * documentation and/or other materials provided with the distribution. 16b528cefcSMark Murray * 17b528cefcSMark Murray * 3. Neither the name of the Institute nor the names of its contributors 18b528cefcSMark Murray * may be used to endorse or promote products derived from this software 19b528cefcSMark Murray * without specific prior written permission. 20b528cefcSMark Murray * 21b528cefcSMark Murray * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22b528cefcSMark Murray * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23b528cefcSMark Murray * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24b528cefcSMark Murray * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25b528cefcSMark Murray * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26b528cefcSMark Murray * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27b528cefcSMark Murray * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28b528cefcSMark Murray * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29b528cefcSMark Murray * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30b528cefcSMark Murray * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31b528cefcSMark Murray * SUCH DAMAGE. 32b528cefcSMark Murray */ 33b528cefcSMark Murray 34b528cefcSMark Murray #include "krb5_locl.h" 35b528cefcSMark Murray 365e9cd1aeSAssar Westerlund RCSID("$Id: auth_context.c,v 1.55 2000/12/10 20:01:05 assar Exp $"); 37b528cefcSMark Murray 38b528cefcSMark Murray krb5_error_code 39b528cefcSMark Murray krb5_auth_con_init(krb5_context context, 40b528cefcSMark Murray krb5_auth_context *auth_context) 41b528cefcSMark Murray { 42b528cefcSMark Murray krb5_auth_context p; 43b528cefcSMark Murray 44b528cefcSMark Murray ALLOC(p, 1); 45b528cefcSMark Murray if(!p) 46b528cefcSMark Murray return ENOMEM; 47b528cefcSMark Murray memset(p, 0, sizeof(*p)); 48b528cefcSMark Murray ALLOC(p->authenticator, 1); 49b528cefcSMark Murray if (!p->authenticator) { 50b528cefcSMark Murray free(p); 51b528cefcSMark Murray return ENOMEM; 52b528cefcSMark Murray } 53b528cefcSMark Murray memset (p->authenticator, 0, sizeof(*p->authenticator)); 54b528cefcSMark Murray p->flags = KRB5_AUTH_CONTEXT_DO_TIME; 55b528cefcSMark Murray 56b528cefcSMark Murray p->local_address = NULL; 57b528cefcSMark Murray p->remote_address = NULL; 58b528cefcSMark Murray p->local_port = 0; 59b528cefcSMark Murray p->remote_port = 0; 60b528cefcSMark Murray p->keytype = KEYTYPE_NULL; 61b528cefcSMark Murray p->cksumtype = CKSUMTYPE_NONE; 62b528cefcSMark Murray *auth_context = p; 63b528cefcSMark Murray return 0; 64b528cefcSMark Murray } 65b528cefcSMark Murray 66b528cefcSMark Murray krb5_error_code 67b528cefcSMark Murray krb5_auth_con_free(krb5_context context, 68b528cefcSMark Murray krb5_auth_context auth_context) 69b528cefcSMark Murray { 705e9cd1aeSAssar Westerlund if (auth_context != NULL) { 71b528cefcSMark Murray krb5_free_authenticator(context, &auth_context->authenticator); 72b528cefcSMark Murray if(auth_context->local_address){ 73b528cefcSMark Murray free_HostAddress(auth_context->local_address); 74b528cefcSMark Murray free(auth_context->local_address); 75b528cefcSMark Murray } 76b528cefcSMark Murray if(auth_context->remote_address){ 77b528cefcSMark Murray free_HostAddress(auth_context->remote_address); 78b528cefcSMark Murray free(auth_context->remote_address); 79b528cefcSMark Murray } 80b528cefcSMark Murray krb5_free_keyblock(context, auth_context->keyblock); 81b528cefcSMark Murray krb5_free_keyblock(context, auth_context->remote_subkey); 82b528cefcSMark Murray krb5_free_keyblock(context, auth_context->local_subkey); 83b528cefcSMark Murray free (auth_context); 845e9cd1aeSAssar Westerlund } 85b528cefcSMark Murray return 0; 86b528cefcSMark Murray } 87b528cefcSMark Murray 88b528cefcSMark Murray krb5_error_code 89b528cefcSMark Murray krb5_auth_con_setflags(krb5_context context, 90b528cefcSMark Murray krb5_auth_context auth_context, 91b528cefcSMark Murray int32_t flags) 92b528cefcSMark Murray { 93b528cefcSMark Murray auth_context->flags = flags; 94b528cefcSMark Murray return 0; 95b528cefcSMark Murray } 96b528cefcSMark Murray 97b528cefcSMark Murray 98b528cefcSMark Murray krb5_error_code 99b528cefcSMark Murray krb5_auth_con_getflags(krb5_context context, 100b528cefcSMark Murray krb5_auth_context auth_context, 101b528cefcSMark Murray int32_t *flags) 102b528cefcSMark Murray { 103b528cefcSMark Murray *flags = auth_context->flags; 104b528cefcSMark Murray return 0; 105b528cefcSMark Murray } 106b528cefcSMark Murray 107b528cefcSMark Murray 108b528cefcSMark Murray krb5_error_code 109b528cefcSMark Murray krb5_auth_con_setaddrs(krb5_context context, 110b528cefcSMark Murray krb5_auth_context auth_context, 111b528cefcSMark Murray krb5_address *local_addr, 112b528cefcSMark Murray krb5_address *remote_addr) 113b528cefcSMark Murray { 114b528cefcSMark Murray if (local_addr) { 115b528cefcSMark Murray if (auth_context->local_address) 116b528cefcSMark Murray krb5_free_address (context, auth_context->local_address); 117b528cefcSMark Murray else 118b528cefcSMark Murray auth_context->local_address = malloc(sizeof(krb5_address)); 119b528cefcSMark Murray krb5_copy_address(context, local_addr, auth_context->local_address); 120b528cefcSMark Murray } 121b528cefcSMark Murray if (remote_addr) { 122b528cefcSMark Murray if (auth_context->remote_address) 123b528cefcSMark Murray krb5_free_address (context, auth_context->remote_address); 124b528cefcSMark Murray else 125b528cefcSMark Murray auth_context->remote_address = malloc(sizeof(krb5_address)); 126b528cefcSMark Murray krb5_copy_address(context, remote_addr, auth_context->remote_address); 127b528cefcSMark Murray } 128b528cefcSMark Murray return 0; 129b528cefcSMark Murray } 130b528cefcSMark Murray 131b528cefcSMark Murray krb5_error_code 1325e9cd1aeSAssar Westerlund krb5_auth_con_genaddrs(krb5_context context, 133b528cefcSMark Murray krb5_auth_context auth_context, 1345e9cd1aeSAssar Westerlund int fd, int flags) 135b528cefcSMark Murray { 136b528cefcSMark Murray krb5_error_code ret; 137b528cefcSMark Murray krb5_address local_k_address, remote_k_address; 138b528cefcSMark Murray krb5_address *lptr = NULL, *rptr = NULL; 139b528cefcSMark Murray struct sockaddr_storage ss_local, ss_remote; 140b528cefcSMark Murray struct sockaddr *local = (struct sockaddr *)&ss_local; 141b528cefcSMark Murray struct sockaddr *remote = (struct sockaddr *)&ss_remote; 1425e9cd1aeSAssar Westerlund socklen_t len; 143b528cefcSMark Murray 1445e9cd1aeSAssar Westerlund if(flags & KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR) { 145b528cefcSMark Murray if (auth_context->local_address == NULL) { 146b528cefcSMark Murray len = sizeof(ss_local); 147b528cefcSMark Murray if(getsockname(fd, local, &len) < 0) { 148b528cefcSMark Murray ret = errno; 149b528cefcSMark Murray goto out; 150b528cefcSMark Murray } 151b528cefcSMark Murray krb5_sockaddr2address (local, &local_k_address); 1525e9cd1aeSAssar Westerlund if(flags & KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR) { 153b528cefcSMark Murray krb5_sockaddr2port (local, &auth_context->local_port); 1545e9cd1aeSAssar Westerlund } else 1555e9cd1aeSAssar Westerlund auth_context->local_port = 0; 156b528cefcSMark Murray lptr = &local_k_address; 157b528cefcSMark Murray } 1585e9cd1aeSAssar Westerlund } 1595e9cd1aeSAssar Westerlund if(flags & KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR) { 160b528cefcSMark Murray len = sizeof(ss_remote); 161b528cefcSMark Murray if(getpeername(fd, remote, &len) < 0) { 162b528cefcSMark Murray ret = errno; 163b528cefcSMark Murray goto out; 164b528cefcSMark Murray } 165b528cefcSMark Murray krb5_sockaddr2address (remote, &remote_k_address); 1665e9cd1aeSAssar Westerlund if(flags & KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR) { 167b528cefcSMark Murray krb5_sockaddr2port (remote, &auth_context->remote_port); 1685e9cd1aeSAssar Westerlund } else 1695e9cd1aeSAssar Westerlund auth_context->remote_port = 0; 170b528cefcSMark Murray rptr = &remote_k_address; 171b528cefcSMark Murray } 172b528cefcSMark Murray ret = krb5_auth_con_setaddrs (context, 173b528cefcSMark Murray auth_context, 174b528cefcSMark Murray lptr, 175b528cefcSMark Murray rptr); 176b528cefcSMark Murray out: 177b528cefcSMark Murray if (lptr) 178b528cefcSMark Murray krb5_free_address (context, lptr); 179b528cefcSMark Murray if (rptr) 180b528cefcSMark Murray krb5_free_address (context, rptr); 181b528cefcSMark Murray return ret; 1825e9cd1aeSAssar Westerlund 1835e9cd1aeSAssar Westerlund } 1845e9cd1aeSAssar Westerlund 1855e9cd1aeSAssar Westerlund krb5_error_code 1865e9cd1aeSAssar Westerlund krb5_auth_con_setaddrs_from_fd (krb5_context context, 1875e9cd1aeSAssar Westerlund krb5_auth_context auth_context, 1885e9cd1aeSAssar Westerlund void *p_fd) 1895e9cd1aeSAssar Westerlund { 1905e9cd1aeSAssar Westerlund int fd = *(int*)p_fd; 1915e9cd1aeSAssar Westerlund int flags = 0; 1925e9cd1aeSAssar Westerlund if(auth_context->local_address == NULL) 1935e9cd1aeSAssar Westerlund flags |= KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR; 1945e9cd1aeSAssar Westerlund if(auth_context->remote_address == NULL) 1955e9cd1aeSAssar Westerlund flags |= KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR; 1965e9cd1aeSAssar Westerlund return krb5_auth_con_genaddrs(context, auth_context, fd, flags); 197b528cefcSMark Murray } 198b528cefcSMark Murray 199b528cefcSMark Murray krb5_error_code 200b528cefcSMark Murray krb5_auth_con_getaddrs(krb5_context context, 201b528cefcSMark Murray krb5_auth_context auth_context, 202b528cefcSMark Murray krb5_address **local_addr, 203b528cefcSMark Murray krb5_address **remote_addr) 204b528cefcSMark Murray { 205b528cefcSMark Murray if(*local_addr) 206b528cefcSMark Murray krb5_free_address (context, *local_addr); 207b528cefcSMark Murray *local_addr = malloc (sizeof(**local_addr)); 208b528cefcSMark Murray if (*local_addr == NULL) 209b528cefcSMark Murray return ENOMEM; 210b528cefcSMark Murray krb5_copy_address(context, 211b528cefcSMark Murray auth_context->local_address, 212b528cefcSMark Murray *local_addr); 213b528cefcSMark Murray 214b528cefcSMark Murray if(*remote_addr) 215b528cefcSMark Murray krb5_free_address (context, *remote_addr); 216b528cefcSMark Murray *remote_addr = malloc (sizeof(**remote_addr)); 217b528cefcSMark Murray if (*remote_addr == NULL) 218b528cefcSMark Murray return ENOMEM; 219b528cefcSMark Murray krb5_copy_address(context, 220b528cefcSMark Murray auth_context->remote_address, 221b528cefcSMark Murray *remote_addr); 222b528cefcSMark Murray return 0; 223b528cefcSMark Murray } 224b528cefcSMark Murray 225b528cefcSMark Murray static krb5_error_code 226b528cefcSMark Murray copy_key(krb5_context context, 227b528cefcSMark Murray krb5_keyblock *in, 228b528cefcSMark Murray krb5_keyblock **out) 229b528cefcSMark Murray { 230b528cefcSMark Murray if(in) 231b528cefcSMark Murray return krb5_copy_keyblock(context, in, out); 232b528cefcSMark Murray *out = NULL; /* is this right? */ 233b528cefcSMark Murray return 0; 234b528cefcSMark Murray } 235b528cefcSMark Murray 236b528cefcSMark Murray krb5_error_code 237b528cefcSMark Murray krb5_auth_con_getkey(krb5_context context, 238b528cefcSMark Murray krb5_auth_context auth_context, 239b528cefcSMark Murray krb5_keyblock **keyblock) 240b528cefcSMark Murray { 241b528cefcSMark Murray return copy_key(context, auth_context->keyblock, keyblock); 242b528cefcSMark Murray } 243b528cefcSMark Murray 244b528cefcSMark Murray krb5_error_code 245b528cefcSMark Murray krb5_auth_con_getlocalsubkey(krb5_context context, 246b528cefcSMark Murray krb5_auth_context auth_context, 247b528cefcSMark Murray krb5_keyblock **keyblock) 248b528cefcSMark Murray { 249b528cefcSMark Murray return copy_key(context, auth_context->local_subkey, keyblock); 250b528cefcSMark Murray } 251b528cefcSMark Murray 252b528cefcSMark Murray krb5_error_code 253b528cefcSMark Murray krb5_auth_con_getremotesubkey(krb5_context context, 254b528cefcSMark Murray krb5_auth_context auth_context, 255b528cefcSMark Murray krb5_keyblock **keyblock) 256b528cefcSMark Murray { 257b528cefcSMark Murray return copy_key(context, auth_context->remote_subkey, keyblock); 258b528cefcSMark Murray } 259b528cefcSMark Murray 260b528cefcSMark Murray krb5_error_code 261b528cefcSMark Murray krb5_auth_con_setkey(krb5_context context, 262b528cefcSMark Murray krb5_auth_context auth_context, 263b528cefcSMark Murray krb5_keyblock *keyblock) 264b528cefcSMark Murray { 265b528cefcSMark Murray if(auth_context->keyblock) 266b528cefcSMark Murray krb5_free_keyblock(context, auth_context->keyblock); 267b528cefcSMark Murray return copy_key(context, keyblock, &auth_context->keyblock); 268b528cefcSMark Murray } 269b528cefcSMark Murray 270b528cefcSMark Murray krb5_error_code 271b528cefcSMark Murray krb5_auth_con_setlocalsubkey(krb5_context context, 272b528cefcSMark Murray krb5_auth_context auth_context, 273b528cefcSMark Murray krb5_keyblock *keyblock) 274b528cefcSMark Murray { 275b528cefcSMark Murray if(auth_context->local_subkey) 276b528cefcSMark Murray krb5_free_keyblock(context, auth_context->local_subkey); 277b528cefcSMark Murray return copy_key(context, keyblock, &auth_context->local_subkey); 278b528cefcSMark Murray } 279b528cefcSMark Murray 280b528cefcSMark Murray krb5_error_code 281b528cefcSMark Murray krb5_auth_con_setremotesubkey(krb5_context context, 282b528cefcSMark Murray krb5_auth_context auth_context, 283b528cefcSMark Murray krb5_keyblock *keyblock) 284b528cefcSMark Murray { 285b528cefcSMark Murray if(auth_context->remote_subkey) 286b528cefcSMark Murray krb5_free_keyblock(context, auth_context->remote_subkey); 287b528cefcSMark Murray return copy_key(context, keyblock, &auth_context->remote_subkey); 288b528cefcSMark Murray } 289b528cefcSMark Murray 290b528cefcSMark Murray krb5_error_code 291b528cefcSMark Murray krb5_auth_setcksumtype(krb5_context context, 292b528cefcSMark Murray krb5_auth_context auth_context, 293b528cefcSMark Murray krb5_cksumtype cksumtype) 294b528cefcSMark Murray { 295b528cefcSMark Murray auth_context->cksumtype = cksumtype; 296b528cefcSMark Murray return 0; 297b528cefcSMark Murray } 298b528cefcSMark Murray 299b528cefcSMark Murray krb5_error_code 300b528cefcSMark Murray krb5_auth_getcksumtype(krb5_context context, 301b528cefcSMark Murray krb5_auth_context auth_context, 302b528cefcSMark Murray krb5_cksumtype *cksumtype) 303b528cefcSMark Murray { 304b528cefcSMark Murray *cksumtype = auth_context->cksumtype; 305b528cefcSMark Murray return 0; 306b528cefcSMark Murray } 307b528cefcSMark Murray 308b528cefcSMark Murray krb5_error_code 309b528cefcSMark Murray krb5_auth_setkeytype (krb5_context context, 310b528cefcSMark Murray krb5_auth_context auth_context, 311b528cefcSMark Murray krb5_keytype keytype) 312b528cefcSMark Murray { 313b528cefcSMark Murray auth_context->keytype = keytype; 314b528cefcSMark Murray return 0; 315b528cefcSMark Murray } 316b528cefcSMark Murray 317b528cefcSMark Murray krb5_error_code 318b528cefcSMark Murray krb5_auth_getkeytype (krb5_context context, 319b528cefcSMark Murray krb5_auth_context auth_context, 320b528cefcSMark Murray krb5_keytype *keytype) 321b528cefcSMark Murray { 322b528cefcSMark Murray *keytype = auth_context->keytype; 323b528cefcSMark Murray return 0; 324b528cefcSMark Murray } 325b528cefcSMark Murray 326b528cefcSMark Murray #if 0 327b528cefcSMark Murray krb5_error_code 328b528cefcSMark Murray krb5_auth_setenctype(krb5_context context, 329b528cefcSMark Murray krb5_auth_context auth_context, 330b528cefcSMark Murray krb5_enctype etype) 331b528cefcSMark Murray { 332b528cefcSMark Murray if(auth_context->keyblock) 333b528cefcSMark Murray krb5_free_keyblock(context, auth_context->keyblock); 334b528cefcSMark Murray ALLOC(auth_context->keyblock, 1); 335b528cefcSMark Murray if(auth_context->keyblock == NULL) 336b528cefcSMark Murray return ENOMEM; 337b528cefcSMark Murray auth_context->keyblock->keytype = etype; 338b528cefcSMark Murray return 0; 339b528cefcSMark Murray } 340b528cefcSMark Murray 341b528cefcSMark Murray krb5_error_code 342b528cefcSMark Murray krb5_auth_getenctype(krb5_context context, 343b528cefcSMark Murray krb5_auth_context auth_context, 344b528cefcSMark Murray krb5_enctype *etype) 345b528cefcSMark Murray { 346b528cefcSMark Murray krb5_abortx(context, "unimplemented krb5_auth_getenctype called"); 347b528cefcSMark Murray } 348b528cefcSMark Murray #endif 349b528cefcSMark Murray 350b528cefcSMark Murray krb5_error_code 351b528cefcSMark Murray krb5_auth_getlocalseqnumber(krb5_context context, 352b528cefcSMark Murray krb5_auth_context auth_context, 353b528cefcSMark Murray int32_t *seqnumber) 354b528cefcSMark Murray { 355b528cefcSMark Murray *seqnumber = auth_context->local_seqnumber; 356b528cefcSMark Murray return 0; 357b528cefcSMark Murray } 358b528cefcSMark Murray 359b528cefcSMark Murray krb5_error_code 360b528cefcSMark Murray krb5_auth_setlocalseqnumber (krb5_context context, 361b528cefcSMark Murray krb5_auth_context auth_context, 362b528cefcSMark Murray int32_t seqnumber) 363b528cefcSMark Murray { 364b528cefcSMark Murray auth_context->local_seqnumber = seqnumber; 365b528cefcSMark Murray return 0; 366b528cefcSMark Murray } 367b528cefcSMark Murray 368b528cefcSMark Murray krb5_error_code 369b528cefcSMark Murray krb5_auth_getremoteseqnumber(krb5_context context, 370b528cefcSMark Murray krb5_auth_context auth_context, 371b528cefcSMark Murray int32_t *seqnumber) 372b528cefcSMark Murray { 373b528cefcSMark Murray *seqnumber = auth_context->remote_seqnumber; 374b528cefcSMark Murray return 0; 375b528cefcSMark Murray } 376b528cefcSMark Murray 377b528cefcSMark Murray krb5_error_code 378b528cefcSMark Murray krb5_auth_setremoteseqnumber (krb5_context context, 379b528cefcSMark Murray krb5_auth_context auth_context, 380b528cefcSMark Murray int32_t seqnumber) 381b528cefcSMark Murray { 382b528cefcSMark Murray auth_context->remote_seqnumber = seqnumber; 383b528cefcSMark Murray return 0; 384b528cefcSMark Murray } 385b528cefcSMark Murray 386b528cefcSMark Murray 387b528cefcSMark Murray krb5_error_code 388b528cefcSMark Murray krb5_auth_getauthenticator(krb5_context context, 389b528cefcSMark Murray krb5_auth_context auth_context, 390b528cefcSMark Murray krb5_authenticator *authenticator) 391b528cefcSMark Murray { 392b528cefcSMark Murray *authenticator = malloc(sizeof(**authenticator)); 393b528cefcSMark Murray if (*authenticator == NULL) 394b528cefcSMark Murray return ENOMEM; 395b528cefcSMark Murray 396b528cefcSMark Murray copy_Authenticator(auth_context->authenticator, 397b528cefcSMark Murray *authenticator); 398b528cefcSMark Murray return 0; 399b528cefcSMark Murray } 400b528cefcSMark Murray 401b528cefcSMark Murray 402b528cefcSMark Murray void 403b528cefcSMark Murray krb5_free_authenticator(krb5_context context, 404b528cefcSMark Murray krb5_authenticator *authenticator) 405b528cefcSMark Murray { 406b528cefcSMark Murray free_Authenticator (*authenticator); 407b528cefcSMark Murray free (*authenticator); 408b528cefcSMark Murray *authenticator = NULL; 409b528cefcSMark Murray } 410b528cefcSMark Murray 411b528cefcSMark Murray 412b528cefcSMark Murray krb5_error_code 413b528cefcSMark Murray krb5_auth_con_setuserkey(krb5_context context, 414b528cefcSMark Murray krb5_auth_context auth_context, 415b528cefcSMark Murray krb5_keyblock *keyblock) 416b528cefcSMark Murray { 417b528cefcSMark Murray if(auth_context->keyblock) 418b528cefcSMark Murray krb5_free_keyblock(context, auth_context->keyblock); 419b528cefcSMark Murray return krb5_copy_keyblock(context, keyblock, &auth_context->keyblock); 420b528cefcSMark Murray } 421b528cefcSMark Murray 4225e9cd1aeSAssar Westerlund krb5_error_code 4235e9cd1aeSAssar Westerlund krb5_auth_con_getrcache(krb5_context context, 4245e9cd1aeSAssar Westerlund krb5_auth_context auth_context, 4255e9cd1aeSAssar Westerlund krb5_rcache *rcache) 4265e9cd1aeSAssar Westerlund { 4275e9cd1aeSAssar Westerlund *rcache = auth_context->rcache; 4285e9cd1aeSAssar Westerlund return 0; 4295e9cd1aeSAssar Westerlund } 4305e9cd1aeSAssar Westerlund 4315e9cd1aeSAssar Westerlund krb5_error_code 4325e9cd1aeSAssar Westerlund krb5_auth_con_setrcache(krb5_context context, 4335e9cd1aeSAssar Westerlund krb5_auth_context auth_context, 4345e9cd1aeSAssar Westerlund krb5_rcache rcache) 4355e9cd1aeSAssar Westerlund { 4365e9cd1aeSAssar Westerlund auth_context->rcache = rcache; 4375e9cd1aeSAssar Westerlund return 0; 4385e9cd1aeSAssar Westerlund } 4395e9cd1aeSAssar Westerlund 440b528cefcSMark Murray #if 0 /* not implemented */ 441b528cefcSMark Murray 442b528cefcSMark Murray krb5_error_code 443b528cefcSMark Murray krb5_auth_con_initivector(krb5_context context, 444b528cefcSMark Murray krb5_auth_context auth_context) 445b528cefcSMark Murray { 446b528cefcSMark Murray krb5_abortx(context, "unimplemented krb5_auth_con_initivector called"); 447b528cefcSMark Murray } 448b528cefcSMark Murray 449b528cefcSMark Murray 450b528cefcSMark Murray krb5_error_code 451b528cefcSMark Murray krb5_auth_con_setivector(krb5_context context, 452b528cefcSMark Murray krb5_auth_context auth_context, 453b528cefcSMark Murray krb5_pointer ivector) 454b528cefcSMark Murray { 455b528cefcSMark Murray krb5_abortx(context, "unimplemented krb5_auth_con_setivector called"); 456b528cefcSMark Murray } 457b528cefcSMark Murray 458b528cefcSMark Murray #endif /* not implemented */ 459