xref: /freebsd/crypto/heimdal/lib/krb5/auth_context.c (revision 8373020d34ceb1ac55d8f43333c1ca3680185b39)
1b528cefcSMark Murray /*
2adb0ddaeSAssar Westerlund  * Copyright (c) 1997 - 2001 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 
368373020dSJacques Vidrine RCSID("$Id: auth_context.c,v 1.58 2002/08/15 08:23:07 joda 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);
45adb0ddaeSAssar Westerlund     if(!p) {
46adb0ddaeSAssar Westerlund 	krb5_set_error_string(context, "malloc: out of memory");
47b528cefcSMark Murray 	return ENOMEM;
48adb0ddaeSAssar Westerlund     }
49b528cefcSMark Murray     memset(p, 0, sizeof(*p));
50b528cefcSMark Murray     ALLOC(p->authenticator, 1);
51b528cefcSMark Murray     if (!p->authenticator) {
52adb0ddaeSAssar Westerlund 	krb5_set_error_string(context, "malloc: out of memory");
53b528cefcSMark Murray 	free(p);
54b528cefcSMark Murray 	return ENOMEM;
55b528cefcSMark Murray     }
56b528cefcSMark Murray     memset (p->authenticator, 0, sizeof(*p->authenticator));
57b528cefcSMark Murray     p->flags = KRB5_AUTH_CONTEXT_DO_TIME;
58b528cefcSMark Murray 
59b528cefcSMark Murray     p->local_address  = NULL;
60b528cefcSMark Murray     p->remote_address = NULL;
61b528cefcSMark Murray     p->local_port     = 0;
62b528cefcSMark Murray     p->remote_port    = 0;
63b528cefcSMark Murray     p->keytype        = KEYTYPE_NULL;
64b528cefcSMark Murray     p->cksumtype      = CKSUMTYPE_NONE;
65b528cefcSMark Murray     *auth_context     = p;
66b528cefcSMark Murray     return 0;
67b528cefcSMark Murray }
68b528cefcSMark Murray 
69b528cefcSMark Murray krb5_error_code
70b528cefcSMark Murray krb5_auth_con_free(krb5_context context,
71b528cefcSMark Murray 		   krb5_auth_context auth_context)
72b528cefcSMark Murray {
735e9cd1aeSAssar Westerlund     if (auth_context != NULL) {
74b528cefcSMark Murray 	krb5_free_authenticator(context, &auth_context->authenticator);
75b528cefcSMark Murray 	if(auth_context->local_address){
76b528cefcSMark Murray 	    free_HostAddress(auth_context->local_address);
77b528cefcSMark Murray 	    free(auth_context->local_address);
78b528cefcSMark Murray 	}
79b528cefcSMark Murray 	if(auth_context->remote_address){
80b528cefcSMark Murray 	    free_HostAddress(auth_context->remote_address);
81b528cefcSMark Murray 	    free(auth_context->remote_address);
82b528cefcSMark Murray 	}
83b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->keyblock);
84b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->remote_subkey);
85b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->local_subkey);
86b528cefcSMark Murray 	free (auth_context);
875e9cd1aeSAssar Westerlund     }
88b528cefcSMark Murray     return 0;
89b528cefcSMark Murray }
90b528cefcSMark Murray 
91b528cefcSMark Murray krb5_error_code
92b528cefcSMark Murray krb5_auth_con_setflags(krb5_context context,
93b528cefcSMark Murray 		       krb5_auth_context auth_context,
94b528cefcSMark Murray 		       int32_t flags)
95b528cefcSMark Murray {
96b528cefcSMark Murray     auth_context->flags = flags;
97b528cefcSMark Murray     return 0;
98b528cefcSMark Murray }
99b528cefcSMark Murray 
100b528cefcSMark Murray 
101b528cefcSMark Murray krb5_error_code
102b528cefcSMark Murray krb5_auth_con_getflags(krb5_context context,
103b528cefcSMark Murray 		       krb5_auth_context auth_context,
104b528cefcSMark Murray 		       int32_t *flags)
105b528cefcSMark Murray {
106b528cefcSMark Murray     *flags = auth_context->flags;
107b528cefcSMark Murray     return 0;
108b528cefcSMark Murray }
109b528cefcSMark Murray 
110b528cefcSMark Murray 
111b528cefcSMark Murray krb5_error_code
112b528cefcSMark Murray krb5_auth_con_setaddrs(krb5_context context,
113b528cefcSMark Murray 		       krb5_auth_context auth_context,
114b528cefcSMark Murray 		       krb5_address *local_addr,
115b528cefcSMark Murray 		       krb5_address *remote_addr)
116b528cefcSMark Murray {
117b528cefcSMark Murray     if (local_addr) {
118b528cefcSMark Murray 	if (auth_context->local_address)
119b528cefcSMark Murray 	    krb5_free_address (context, auth_context->local_address);
120b528cefcSMark Murray 	else
121b528cefcSMark Murray 	    auth_context->local_address = malloc(sizeof(krb5_address));
122b528cefcSMark Murray 	krb5_copy_address(context, local_addr, auth_context->local_address);
123b528cefcSMark Murray     }
124b528cefcSMark Murray     if (remote_addr) {
125b528cefcSMark Murray 	if (auth_context->remote_address)
126b528cefcSMark Murray 	    krb5_free_address (context, auth_context->remote_address);
127b528cefcSMark Murray 	else
128b528cefcSMark Murray 	    auth_context->remote_address = malloc(sizeof(krb5_address));
129b528cefcSMark Murray 	krb5_copy_address(context, remote_addr, auth_context->remote_address);
130b528cefcSMark Murray     }
131b528cefcSMark Murray     return 0;
132b528cefcSMark Murray }
133b528cefcSMark Murray 
134b528cefcSMark Murray krb5_error_code
1355e9cd1aeSAssar Westerlund krb5_auth_con_genaddrs(krb5_context context,
136b528cefcSMark Murray 		       krb5_auth_context auth_context,
1375e9cd1aeSAssar Westerlund 		       int fd, int flags)
138b528cefcSMark Murray {
139b528cefcSMark Murray     krb5_error_code ret;
140b528cefcSMark Murray     krb5_address local_k_address, remote_k_address;
141b528cefcSMark Murray     krb5_address *lptr = NULL, *rptr = NULL;
142b528cefcSMark Murray     struct sockaddr_storage ss_local, ss_remote;
143b528cefcSMark Murray     struct sockaddr *local  = (struct sockaddr *)&ss_local;
144b528cefcSMark Murray     struct sockaddr *remote = (struct sockaddr *)&ss_remote;
1455e9cd1aeSAssar Westerlund     socklen_t len;
146b528cefcSMark Murray 
1475e9cd1aeSAssar Westerlund     if(flags & KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR) {
148b528cefcSMark Murray 	if (auth_context->local_address == NULL) {
149b528cefcSMark Murray 	    len = sizeof(ss_local);
150b528cefcSMark Murray 	    if(getsockname(fd, local, &len) < 0) {
151b528cefcSMark Murray 		ret = errno;
152adb0ddaeSAssar Westerlund 		krb5_set_error_string (context, "getsockname: %s",
153adb0ddaeSAssar Westerlund 				       strerror(ret));
154b528cefcSMark Murray 		goto out;
155b528cefcSMark Murray 	    }
1568373020dSJacques Vidrine 	    ret = krb5_sockaddr2address (context, local, &local_k_address);
1578373020dSJacques Vidrine 	    if(ret) goto out;
1585e9cd1aeSAssar Westerlund 	    if(flags & KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR) {
159adb0ddaeSAssar Westerlund 		krb5_sockaddr2port (context, local, &auth_context->local_port);
1605e9cd1aeSAssar Westerlund 	    } else
1615e9cd1aeSAssar Westerlund 		auth_context->local_port = 0;
162b528cefcSMark Murray 	    lptr = &local_k_address;
163b528cefcSMark Murray 	}
1645e9cd1aeSAssar Westerlund     }
1655e9cd1aeSAssar Westerlund     if(flags & KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR) {
166b528cefcSMark Murray 	len = sizeof(ss_remote);
167b528cefcSMark Murray 	if(getpeername(fd, remote, &len) < 0) {
168b528cefcSMark Murray 	    ret = errno;
169adb0ddaeSAssar Westerlund 	    krb5_set_error_string (context, "getpeername: %s", strerror(ret));
170b528cefcSMark Murray 	    goto out;
171b528cefcSMark Murray 	}
1728373020dSJacques Vidrine 	ret = krb5_sockaddr2address (context, remote, &remote_k_address);
1738373020dSJacques Vidrine 	if(ret) goto out;
1745e9cd1aeSAssar Westerlund 	if(flags & KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR) {
175adb0ddaeSAssar Westerlund 	    krb5_sockaddr2port (context, remote, &auth_context->remote_port);
1765e9cd1aeSAssar Westerlund 	} else
1775e9cd1aeSAssar Westerlund 	    auth_context->remote_port = 0;
178b528cefcSMark Murray 	rptr = &remote_k_address;
179b528cefcSMark Murray     }
180b528cefcSMark Murray     ret = krb5_auth_con_setaddrs (context,
181b528cefcSMark Murray 				  auth_context,
182b528cefcSMark Murray 				  lptr,
183b528cefcSMark Murray 				  rptr);
184b528cefcSMark Murray   out:
185b528cefcSMark Murray     if (lptr)
186b528cefcSMark Murray 	krb5_free_address (context, lptr);
187b528cefcSMark Murray     if (rptr)
188b528cefcSMark Murray 	krb5_free_address (context, rptr);
189b528cefcSMark Murray     return ret;
1905e9cd1aeSAssar Westerlund 
1915e9cd1aeSAssar Westerlund }
1925e9cd1aeSAssar Westerlund 
1935e9cd1aeSAssar Westerlund krb5_error_code
1945e9cd1aeSAssar Westerlund krb5_auth_con_setaddrs_from_fd (krb5_context context,
1955e9cd1aeSAssar Westerlund 				krb5_auth_context auth_context,
1965e9cd1aeSAssar Westerlund 				void *p_fd)
1975e9cd1aeSAssar Westerlund {
1985e9cd1aeSAssar Westerlund     int fd = *(int*)p_fd;
1995e9cd1aeSAssar Westerlund     int flags = 0;
2005e9cd1aeSAssar Westerlund     if(auth_context->local_address == NULL)
2015e9cd1aeSAssar Westerlund 	flags |= KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR;
2025e9cd1aeSAssar Westerlund     if(auth_context->remote_address == NULL)
2035e9cd1aeSAssar Westerlund 	flags |= KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR;
2045e9cd1aeSAssar Westerlund     return krb5_auth_con_genaddrs(context, auth_context, fd, flags);
205b528cefcSMark Murray }
206b528cefcSMark Murray 
207b528cefcSMark Murray krb5_error_code
208b528cefcSMark Murray krb5_auth_con_getaddrs(krb5_context context,
209b528cefcSMark Murray 		       krb5_auth_context auth_context,
210b528cefcSMark Murray 		       krb5_address **local_addr,
211b528cefcSMark Murray 		       krb5_address **remote_addr)
212b528cefcSMark Murray {
213b528cefcSMark Murray     if(*local_addr)
214b528cefcSMark Murray 	krb5_free_address (context, *local_addr);
215b528cefcSMark Murray     *local_addr = malloc (sizeof(**local_addr));
216adb0ddaeSAssar Westerlund     if (*local_addr == NULL) {
217adb0ddaeSAssar Westerlund 	krb5_set_error_string(context, "malloc: out of memory");
218b528cefcSMark Murray 	return ENOMEM;
219adb0ddaeSAssar Westerlund     }
220b528cefcSMark Murray     krb5_copy_address(context,
221b528cefcSMark Murray 		      auth_context->local_address,
222b528cefcSMark Murray 		      *local_addr);
223b528cefcSMark Murray 
224b528cefcSMark Murray     if(*remote_addr)
225b528cefcSMark Murray 	krb5_free_address (context, *remote_addr);
226b528cefcSMark Murray     *remote_addr = malloc (sizeof(**remote_addr));
227adb0ddaeSAssar Westerlund     if (*remote_addr == NULL) {
228adb0ddaeSAssar Westerlund 	krb5_set_error_string(context, "malloc: out of memory");
229adb0ddaeSAssar Westerlund 	krb5_free_address (context, *local_addr);
230adb0ddaeSAssar Westerlund 	*local_addr = NULL;
231b528cefcSMark Murray 	return ENOMEM;
232adb0ddaeSAssar Westerlund     }
233b528cefcSMark Murray     krb5_copy_address(context,
234b528cefcSMark Murray 		      auth_context->remote_address,
235b528cefcSMark Murray 		      *remote_addr);
236b528cefcSMark Murray     return 0;
237b528cefcSMark Murray }
238b528cefcSMark Murray 
239b528cefcSMark Murray static krb5_error_code
240b528cefcSMark Murray copy_key(krb5_context context,
241b528cefcSMark Murray 	 krb5_keyblock *in,
242b528cefcSMark Murray 	 krb5_keyblock **out)
243b528cefcSMark Murray {
244b528cefcSMark Murray     if(in)
245b528cefcSMark Murray 	return krb5_copy_keyblock(context, in, out);
246b528cefcSMark Murray     *out = NULL; /* is this right? */
247b528cefcSMark Murray     return 0;
248b528cefcSMark Murray }
249b528cefcSMark Murray 
250b528cefcSMark Murray krb5_error_code
251b528cefcSMark Murray krb5_auth_con_getkey(krb5_context context,
252b528cefcSMark Murray 		     krb5_auth_context auth_context,
253b528cefcSMark Murray 		     krb5_keyblock **keyblock)
254b528cefcSMark Murray {
255b528cefcSMark Murray     return copy_key(context, auth_context->keyblock, keyblock);
256b528cefcSMark Murray }
257b528cefcSMark Murray 
258b528cefcSMark Murray krb5_error_code
259b528cefcSMark Murray krb5_auth_con_getlocalsubkey(krb5_context context,
260b528cefcSMark Murray 			     krb5_auth_context auth_context,
261b528cefcSMark Murray 			     krb5_keyblock **keyblock)
262b528cefcSMark Murray {
263b528cefcSMark Murray     return copy_key(context, auth_context->local_subkey, keyblock);
264b528cefcSMark Murray }
265b528cefcSMark Murray 
266b528cefcSMark Murray krb5_error_code
267b528cefcSMark Murray krb5_auth_con_getremotesubkey(krb5_context context,
268b528cefcSMark Murray 			      krb5_auth_context auth_context,
269b528cefcSMark Murray 			      krb5_keyblock **keyblock)
270b528cefcSMark Murray {
271b528cefcSMark Murray     return copy_key(context, auth_context->remote_subkey, keyblock);
272b528cefcSMark Murray }
273b528cefcSMark Murray 
274b528cefcSMark Murray krb5_error_code
275b528cefcSMark Murray krb5_auth_con_setkey(krb5_context context,
276b528cefcSMark Murray 		     krb5_auth_context auth_context,
277b528cefcSMark Murray 		     krb5_keyblock *keyblock)
278b528cefcSMark Murray {
279b528cefcSMark Murray     if(auth_context->keyblock)
280b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->keyblock);
281b528cefcSMark Murray     return copy_key(context, keyblock, &auth_context->keyblock);
282b528cefcSMark Murray }
283b528cefcSMark Murray 
284b528cefcSMark Murray krb5_error_code
285b528cefcSMark Murray krb5_auth_con_setlocalsubkey(krb5_context context,
286b528cefcSMark Murray 			     krb5_auth_context auth_context,
287b528cefcSMark Murray 			     krb5_keyblock *keyblock)
288b528cefcSMark Murray {
289b528cefcSMark Murray     if(auth_context->local_subkey)
290b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->local_subkey);
291b528cefcSMark Murray     return copy_key(context, keyblock, &auth_context->local_subkey);
292b528cefcSMark Murray }
293b528cefcSMark Murray 
294b528cefcSMark Murray krb5_error_code
295b528cefcSMark Murray krb5_auth_con_setremotesubkey(krb5_context context,
296b528cefcSMark Murray 			      krb5_auth_context auth_context,
297b528cefcSMark Murray 			      krb5_keyblock *keyblock)
298b528cefcSMark Murray {
299b528cefcSMark Murray     if(auth_context->remote_subkey)
300b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->remote_subkey);
301b528cefcSMark Murray     return copy_key(context, keyblock, &auth_context->remote_subkey);
302b528cefcSMark Murray }
303b528cefcSMark Murray 
304b528cefcSMark Murray krb5_error_code
3054137ff4cSJacques Vidrine krb5_auth_con_setcksumtype(krb5_context context,
306b528cefcSMark Murray 			   krb5_auth_context auth_context,
307b528cefcSMark Murray 			   krb5_cksumtype cksumtype)
308b528cefcSMark Murray {
309b528cefcSMark Murray     auth_context->cksumtype = cksumtype;
310b528cefcSMark Murray     return 0;
311b528cefcSMark Murray }
312b528cefcSMark Murray 
313b528cefcSMark Murray krb5_error_code
3144137ff4cSJacques Vidrine krb5_auth_con_getcksumtype(krb5_context context,
315b528cefcSMark Murray 			   krb5_auth_context auth_context,
316b528cefcSMark Murray 			   krb5_cksumtype *cksumtype)
317b528cefcSMark Murray {
318b528cefcSMark Murray     *cksumtype = auth_context->cksumtype;
319b528cefcSMark Murray     return 0;
320b528cefcSMark Murray }
321b528cefcSMark Murray 
322b528cefcSMark Murray krb5_error_code
3234137ff4cSJacques Vidrine krb5_auth_con_setkeytype (krb5_context context,
324b528cefcSMark Murray 			  krb5_auth_context auth_context,
325b528cefcSMark Murray 			  krb5_keytype keytype)
326b528cefcSMark Murray {
327b528cefcSMark Murray     auth_context->keytype = keytype;
328b528cefcSMark Murray     return 0;
329b528cefcSMark Murray }
330b528cefcSMark Murray 
331b528cefcSMark Murray krb5_error_code
3324137ff4cSJacques Vidrine krb5_auth_con_getkeytype (krb5_context context,
333b528cefcSMark Murray 			  krb5_auth_context auth_context,
334b528cefcSMark Murray 			  krb5_keytype *keytype)
335b528cefcSMark Murray {
336b528cefcSMark Murray     *keytype = auth_context->keytype;
337b528cefcSMark Murray     return 0;
338b528cefcSMark Murray }
339b528cefcSMark Murray 
340b528cefcSMark Murray #if 0
341b528cefcSMark Murray krb5_error_code
3424137ff4cSJacques Vidrine krb5_auth_con_setenctype(krb5_context context,
343b528cefcSMark Murray 			 krb5_auth_context auth_context,
344b528cefcSMark Murray 			 krb5_enctype etype)
345b528cefcSMark Murray {
346b528cefcSMark Murray     if(auth_context->keyblock)
347b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->keyblock);
348b528cefcSMark Murray     ALLOC(auth_context->keyblock, 1);
349b528cefcSMark Murray     if(auth_context->keyblock == NULL)
350b528cefcSMark Murray 	return ENOMEM;
351b528cefcSMark Murray     auth_context->keyblock->keytype = etype;
352b528cefcSMark Murray     return 0;
353b528cefcSMark Murray }
354b528cefcSMark Murray 
355b528cefcSMark Murray krb5_error_code
3564137ff4cSJacques Vidrine krb5_auth_con_getenctype(krb5_context context,
357b528cefcSMark Murray 			 krb5_auth_context auth_context,
358b528cefcSMark Murray 			 krb5_enctype *etype)
359b528cefcSMark Murray {
360b528cefcSMark Murray     krb5_abortx(context, "unimplemented krb5_auth_getenctype called");
361b528cefcSMark Murray }
362b528cefcSMark Murray #endif
363b528cefcSMark Murray 
364b528cefcSMark Murray krb5_error_code
3654137ff4cSJacques Vidrine krb5_auth_con_getlocalseqnumber(krb5_context context,
366b528cefcSMark Murray 			    krb5_auth_context auth_context,
367b528cefcSMark Murray 			    int32_t *seqnumber)
368b528cefcSMark Murray {
369b528cefcSMark Murray   *seqnumber = auth_context->local_seqnumber;
370b528cefcSMark Murray   return 0;
371b528cefcSMark Murray }
372b528cefcSMark Murray 
373b528cefcSMark Murray krb5_error_code
3744137ff4cSJacques Vidrine krb5_auth_con_setlocalseqnumber (krb5_context context,
375b528cefcSMark Murray 			     krb5_auth_context auth_context,
376b528cefcSMark Murray 			     int32_t seqnumber)
377b528cefcSMark Murray {
378b528cefcSMark Murray   auth_context->local_seqnumber = seqnumber;
379b528cefcSMark Murray   return 0;
380b528cefcSMark Murray }
381b528cefcSMark Murray 
382b528cefcSMark Murray krb5_error_code
383b528cefcSMark Murray krb5_auth_getremoteseqnumber(krb5_context context,
384b528cefcSMark Murray 			     krb5_auth_context auth_context,
385b528cefcSMark Murray 			     int32_t *seqnumber)
386b528cefcSMark Murray {
387b528cefcSMark Murray   *seqnumber = auth_context->remote_seqnumber;
388b528cefcSMark Murray   return 0;
389b528cefcSMark Murray }
390b528cefcSMark Murray 
391b528cefcSMark Murray krb5_error_code
3924137ff4cSJacques Vidrine krb5_auth_con_setremoteseqnumber (krb5_context context,
393b528cefcSMark Murray 			      krb5_auth_context auth_context,
394b528cefcSMark Murray 			      int32_t seqnumber)
395b528cefcSMark Murray {
396b528cefcSMark Murray   auth_context->remote_seqnumber = seqnumber;
397b528cefcSMark Murray   return 0;
398b528cefcSMark Murray }
399b528cefcSMark Murray 
400b528cefcSMark Murray 
401b528cefcSMark Murray krb5_error_code
4024137ff4cSJacques Vidrine krb5_auth_con_getauthenticator(krb5_context context,
403b528cefcSMark Murray 			   krb5_auth_context auth_context,
404b528cefcSMark Murray 			   krb5_authenticator *authenticator)
405b528cefcSMark Murray {
406b528cefcSMark Murray     *authenticator = malloc(sizeof(**authenticator));
407adb0ddaeSAssar Westerlund     if (*authenticator == NULL) {
408adb0ddaeSAssar Westerlund 	krb5_set_error_string(context, "malloc: out of memory");
409b528cefcSMark Murray 	return ENOMEM;
410adb0ddaeSAssar Westerlund     }
411b528cefcSMark Murray 
412b528cefcSMark Murray     copy_Authenticator(auth_context->authenticator,
413b528cefcSMark Murray 		       *authenticator);
414b528cefcSMark Murray     return 0;
415b528cefcSMark Murray }
416b528cefcSMark Murray 
417b528cefcSMark Murray 
418b528cefcSMark Murray void
419b528cefcSMark Murray krb5_free_authenticator(krb5_context context,
420b528cefcSMark Murray 			krb5_authenticator *authenticator)
421b528cefcSMark Murray {
422b528cefcSMark Murray     free_Authenticator (*authenticator);
423b528cefcSMark Murray     free (*authenticator);
424b528cefcSMark Murray     *authenticator = NULL;
425b528cefcSMark Murray }
426b528cefcSMark Murray 
427b528cefcSMark Murray 
428b528cefcSMark Murray krb5_error_code
429b528cefcSMark Murray krb5_auth_con_setuserkey(krb5_context context,
430b528cefcSMark Murray 			 krb5_auth_context auth_context,
431b528cefcSMark Murray 			 krb5_keyblock *keyblock)
432b528cefcSMark Murray {
433b528cefcSMark Murray     if(auth_context->keyblock)
434b528cefcSMark Murray 	krb5_free_keyblock(context, auth_context->keyblock);
435b528cefcSMark Murray     return krb5_copy_keyblock(context, keyblock, &auth_context->keyblock);
436b528cefcSMark Murray }
437b528cefcSMark Murray 
4385e9cd1aeSAssar Westerlund krb5_error_code
4395e9cd1aeSAssar Westerlund krb5_auth_con_getrcache(krb5_context context,
4405e9cd1aeSAssar Westerlund 			krb5_auth_context auth_context,
4415e9cd1aeSAssar Westerlund 			krb5_rcache *rcache)
4425e9cd1aeSAssar Westerlund {
4435e9cd1aeSAssar Westerlund     *rcache = auth_context->rcache;
4445e9cd1aeSAssar Westerlund     return 0;
4455e9cd1aeSAssar Westerlund }
4465e9cd1aeSAssar Westerlund 
4475e9cd1aeSAssar Westerlund krb5_error_code
4485e9cd1aeSAssar Westerlund krb5_auth_con_setrcache(krb5_context context,
4495e9cd1aeSAssar Westerlund 			krb5_auth_context auth_context,
4505e9cd1aeSAssar Westerlund 			krb5_rcache rcache)
4515e9cd1aeSAssar Westerlund {
4525e9cd1aeSAssar Westerlund     auth_context->rcache = rcache;
4535e9cd1aeSAssar Westerlund     return 0;
4545e9cd1aeSAssar Westerlund }
4555e9cd1aeSAssar Westerlund 
456b528cefcSMark Murray #if 0 /* not implemented */
457b528cefcSMark Murray 
458b528cefcSMark Murray krb5_error_code
459b528cefcSMark Murray krb5_auth_con_initivector(krb5_context context,
460b528cefcSMark Murray 			  krb5_auth_context auth_context)
461b528cefcSMark Murray {
462b528cefcSMark Murray     krb5_abortx(context, "unimplemented krb5_auth_con_initivector called");
463b528cefcSMark Murray }
464b528cefcSMark Murray 
465b528cefcSMark Murray 
466b528cefcSMark Murray krb5_error_code
467b528cefcSMark Murray krb5_auth_con_setivector(krb5_context context,
468b528cefcSMark Murray 			 krb5_auth_context auth_context,
469b528cefcSMark Murray 			 krb5_pointer ivector)
470b528cefcSMark Murray {
471b528cefcSMark Murray     krb5_abortx(context, "unimplemented krb5_auth_con_setivector called");
472b528cefcSMark Murray }
473b528cefcSMark Murray 
474b528cefcSMark Murray #endif /* not implemented */
475