Annotation of embedaddon/ipsec-tools/src/racoon/isakmp_xauth.h, revision 1.1.1.1
1.1 misho 1: /* $NetBSD: isakmp_xauth.h,v 1.7 2011/03/14 15:50:36 vanhu Exp $ */
2:
3: /* $KAME$ */
4:
5: /*
6: * Copyright (C) 2004 Emmanuel Dreyfus
7: * All rights reserved.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: * 1. Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: * 2. Redistributions in binary form must reproduce the above copyright
15: * notice, this list of conditions and the following disclaimer in the
16: * documentation and/or other materials provided with the distribution.
17: * 3. Neither the name of the project nor the names of its contributors
18: * may be used to endorse or promote products derived from this software
19: * without specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31: * SUCH DAMAGE.
32: */
33:
34: #ifndef _ISAKMP_XAUTH_H
35: #define _ISAKMP_XAUTH_H
36:
37: #include "schedule.h"
38:
39: /* ISAKMP mode config attribute types specific to the Xauth vendor ID */
40: #define XAUTH_TYPE 16520
41: #define XAUTH_USER_NAME 16521
42: #define XAUTH_USER_PASSWORD 16522
43: #define XAUTH_PASSCODE 16523
44: #define XAUTH_MESSAGE 16524
45: #define XAUTH_CHALLENGE 16525
46: #define XAUTH_DOMAIN 16526
47: #define XAUTH_STATUS 16527
48: #define XAUTH_NEXT_PIN 16528
49: #define XAUTH_ANSWER 16529
50:
51: /* Types for XAUTH_TYPE */
52: #define XAUTH_TYPE_GENERIC 0
53: #define XAUTH_TYPE_CHAP 1
54: #define XAUTH_TYPE_OTP 2
55: #define XAUTH_TYPE_SKEY 3
56:
57: /* Values for XAUTH_STATUS */
58: #define XAUTH_STATUS_FAIL 0
59: #define XAUTH_STATUS_OK 1
60:
61: /* For phase 1 Xauth status */
62: struct xauth_state {
63: int status; /* authentication status, used only on server side */
64: int vendorid;
65: int authtype;
66: union {
67: struct authgeneric {
68: char *usr;
69: char *pwd;
70: } generic;
71: } authdata;
72: #ifdef HAVE_LIBLDAP
73: char *udn; /* ldap user dn */
74: #endif
75: };
76:
77: /* What's been sent */
78: #define XAUTH_SENT_USERNAME 1
79: #define XAUTH_SENT_PASSWORD 2
80: #define XAUTH_SENT_EVERYTHING (XAUTH_SENT_USERNAME | XAUTH_SENT_PASSWORD)
81:
82: /* For rmconf Xauth data */
83: struct xauth_rmconf {
84: vchar_t *login; /* xauth login */
85: vchar_t *pass; /* xauth password */
86: int state; /* what's been sent */
87: };
88:
89: /* status */
90: #define XAUTHST_NOTYET 0
91: #define XAUTHST_REQSENT 1
92: #define XAUTHST_OK 2
93:
94: struct xauth_reply_arg {
95: struct sched sc;
96: isakmp_index index;
97: int port;
98: int id;
99: int res;
100: };
101:
102: struct ph1handle;
103: struct isakmp_data;
104: void xauth_sendreq(struct ph1handle *);
105: int xauth_attr_reply(struct ph1handle *, struct isakmp_data *, int);
106: int xauth_login_system(char *, char *);
107: void xauth_sendstatus(struct ph1handle *, int, int);
108: int xauth_check(struct ph1handle *);
109: int group_check(struct ph1handle *, char **, int);
110: vchar_t *isakmp_xauth_req(struct ph1handle *, struct isakmp_data *);
111: vchar_t *isakmp_xauth_set(struct ph1handle *, struct isakmp_data *);
112: void xauth_rmstate(struct xauth_state *);
113: void xauth_reply_stub(struct sched *);
114: int xauth_reply(struct ph1handle *, int, int, int);
115: int xauth_rmconf_used(struct xauth_rmconf **);
116: void xauth_rmconf_delete(struct xauth_rmconf **);
117: struct xauth_rmconf * xauth_rmconf_dup(struct xauth_rmconf *);
118:
119: #ifdef HAVE_LIBPAM
120: int xauth_login_pam(int, struct sockaddr *, char *, char *);
121: #endif
122:
123: #ifdef HAVE_LIBRADIUS
124:
125: #define RADIUS_MAX_SERVERS 5
126:
127: struct rad_serv {
128: vchar_t *host;
129: int port;
130: vchar_t *secret;
131: };
132:
133: struct xauth_rad_config {
134: struct rad_serv auth_server_list[RADIUS_MAX_SERVERS];
135: int auth_server_count;
136: struct rad_serv acct_server_list[RADIUS_MAX_SERVERS];
137: int acct_server_count;
138: int timeout;
139: int retries;
140: };
141:
142: extern struct xauth_rad_config xauth_rad_config;
143:
144: int xauth_radius_init_conf(int free);
145: int xauth_radius_init(void);
146: int xauth_login_radius(struct ph1handle *, char *, char *);
147:
148: #endif
149:
150: #ifdef HAVE_LIBLDAP
151:
152: #define LDAP_DFLT_HOST "localhost"
153: #define LDAP_DFLT_USER "cn"
154: #define LDAP_DFLT_ADDR "racoon-address"
155: #define LDAP_DFLT_MASK "racoon-netmask"
156: #define LDAP_DFLT_GROUP "cn"
157: #define LDAP_DFLT_MEMBER "member"
158:
159: struct xauth_ldap_config {
160: int pver;
161: vchar_t *host;
162: int port;
163: vchar_t *base;
164: int subtree;
165: vchar_t *bind_dn;
166: vchar_t *bind_pw;
167: int auth_type;
168: vchar_t *attr_user;
169: vchar_t *attr_addr;
170: vchar_t *attr_mask;
171: vchar_t *attr_group;
172: vchar_t *attr_member;
173: };
174:
175: extern struct xauth_ldap_config xauth_ldap_config;
176:
177: int xauth_ldap_init_conf(void);
178: int xauth_login_ldap(struct ph1handle *, char *, char *);
179:
180: #endif
181:
182: #endif /* _ISAKMP_XAUTH_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>