1dfdcada3SDoug Rabson /* $NetBSD: auth.h,v 1.15 2000/06/02 22:57:55 fvdl Exp $ */ 2dfdcada3SDoug Rabson 3dfdcada3SDoug Rabson /* 4dfdcada3SDoug Rabson * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 5dfdcada3SDoug Rabson * unrestricted use provided that this legend is included on all tape 6dfdcada3SDoug Rabson * media and as a part of the software program in whole or part. Users 7dfdcada3SDoug Rabson * may copy or modify Sun RPC without charge, but are not authorized 8dfdcada3SDoug Rabson * to license or distribute it to anyone else except as part of a product or 9dfdcada3SDoug Rabson * program developed by the user. 10dfdcada3SDoug Rabson * 11dfdcada3SDoug Rabson * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 12dfdcada3SDoug Rabson * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 13dfdcada3SDoug Rabson * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 14dfdcada3SDoug Rabson * 15dfdcada3SDoug Rabson * Sun RPC is provided with no support and without any obligation on the 16dfdcada3SDoug Rabson * part of Sun Microsystems, Inc. to assist in its use, correction, 17dfdcada3SDoug Rabson * modification or enhancement. 18dfdcada3SDoug Rabson * 19dfdcada3SDoug Rabson * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 20dfdcada3SDoug Rabson * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 21dfdcada3SDoug Rabson * OR ANY PART THEREOF. 22dfdcada3SDoug Rabson * 23dfdcada3SDoug Rabson * In no event will Sun Microsystems, Inc. be liable for any lost revenue 24dfdcada3SDoug Rabson * or profits or other special, indirect and consequential damages, even if 25dfdcada3SDoug Rabson * Sun has been advised of the possibility of such damages. 26dfdcada3SDoug Rabson * 27dfdcada3SDoug Rabson * Sun Microsystems, Inc. 28dfdcada3SDoug Rabson * 2550 Garcia Avenue 29dfdcada3SDoug Rabson * Mountain View, California 94043 30dfdcada3SDoug Rabson * 31dfdcada3SDoug Rabson * from: @(#)auth.h 1.17 88/02/08 SMI 32dfdcada3SDoug Rabson * from: @(#)auth.h 2.3 88/08/07 4.0 RPCSRC 33dfdcada3SDoug Rabson * from: @(#)auth.h 1.43 98/02/02 SMI 34dfdcada3SDoug Rabson * $FreeBSD$ 35dfdcada3SDoug Rabson */ 36dfdcada3SDoug Rabson 37dfdcada3SDoug Rabson /* 38dfdcada3SDoug Rabson * auth.h, Authentication interface. 39dfdcada3SDoug Rabson * 40dfdcada3SDoug Rabson * Copyright (C) 1984, Sun Microsystems, Inc. 41dfdcada3SDoug Rabson * 42dfdcada3SDoug Rabson * The data structures are completely opaque to the client. The client 43dfdcada3SDoug Rabson * is required to pass an AUTH * to routines that create rpc 44dfdcada3SDoug Rabson * "sessions". 45dfdcada3SDoug Rabson */ 46dfdcada3SDoug Rabson 47dfdcada3SDoug Rabson #ifndef _RPC_AUTH_H 48dfdcada3SDoug Rabson #define _RPC_AUTH_H 49dfdcada3SDoug Rabson #include <rpc/xdr.h> 50dfdcada3SDoug Rabson #include <rpc/clnt_stat.h> 51dfdcada3SDoug Rabson #include <sys/cdefs.h> 52dfdcada3SDoug Rabson #include <sys/socket.h> 53dfdcada3SDoug Rabson 54dfdcada3SDoug Rabson #define MAX_AUTH_BYTES 400 55dfdcada3SDoug Rabson #define MAXNETNAMELEN 255 /* maximum length of network user's name */ 56dfdcada3SDoug Rabson 57dfdcada3SDoug Rabson /* 58dfdcada3SDoug Rabson * Client side authentication/security data 59dfdcada3SDoug Rabson */ 60dfdcada3SDoug Rabson 61dfdcada3SDoug Rabson typedef struct sec_data { 62dfdcada3SDoug Rabson u_int secmod; /* security mode number e.g. in nfssec.conf */ 63dfdcada3SDoug Rabson u_int rpcflavor; /* rpc flavors:AUTH_UNIX,AUTH_DES,RPCSEC_GSS */ 64dfdcada3SDoug Rabson int flags; /* AUTH_F_xxx flags */ 65dfdcada3SDoug Rabson caddr_t data; /* opaque data per flavor */ 66dfdcada3SDoug Rabson } sec_data_t; 67dfdcada3SDoug Rabson 68dfdcada3SDoug Rabson #ifdef _SYSCALL32_IMPL 69dfdcada3SDoug Rabson struct sec_data32 { 70dfdcada3SDoug Rabson uint32_t secmod; /* security mode number e.g. in nfssec.conf */ 71dfdcada3SDoug Rabson uint32_t rpcflavor; /* rpc flavors:AUTH_UNIX,AUTH_DES,RPCSEC_GSS */ 72dfdcada3SDoug Rabson int32_t flags; /* AUTH_F_xxx flags */ 73dfdcada3SDoug Rabson caddr32_t data; /* opaque data per flavor */ 74dfdcada3SDoug Rabson }; 75dfdcada3SDoug Rabson #endif /* _SYSCALL32_IMPL */ 76dfdcada3SDoug Rabson 77dfdcada3SDoug Rabson /* 78dfdcada3SDoug Rabson * AUTH_DES flavor specific data from sec_data opaque data field. 79dfdcada3SDoug Rabson * AUTH_KERB has the same structure. 80dfdcada3SDoug Rabson */ 81dfdcada3SDoug Rabson typedef struct des_clnt_data { 82dfdcada3SDoug Rabson struct netbuf syncaddr; /* time sync addr */ 83dfdcada3SDoug Rabson struct knetconfig *knconf; /* knetconfig info that associated */ 84dfdcada3SDoug Rabson /* with the syncaddr. */ 85dfdcada3SDoug Rabson char *netname; /* server's netname */ 86dfdcada3SDoug Rabson int netnamelen; /* server's netname len */ 87dfdcada3SDoug Rabson } dh_k4_clntdata_t; 88dfdcada3SDoug Rabson 89dfdcada3SDoug Rabson #ifdef _SYSCALL32_IMPL 90dfdcada3SDoug Rabson struct des_clnt_data32 { 91dfdcada3SDoug Rabson struct netbuf32 syncaddr; /* time sync addr */ 92dfdcada3SDoug Rabson caddr32_t knconf; /* knetconfig info that associated */ 93dfdcada3SDoug Rabson /* with the syncaddr. */ 94dfdcada3SDoug Rabson caddr32_t netname; /* server's netname */ 95dfdcada3SDoug Rabson int32_t netnamelen; /* server's netname len */ 96dfdcada3SDoug Rabson }; 97dfdcada3SDoug Rabson #endif /* _SYSCALL32_IMPL */ 98dfdcada3SDoug Rabson 99dfdcada3SDoug Rabson #ifdef KERBEROS 100dfdcada3SDoug Rabson /* 101dfdcada3SDoug Rabson * flavor specific data to hold the data for AUTH_DES/AUTH_KERB(v4) 102dfdcada3SDoug Rabson * in sec_data->data opaque field. 103dfdcada3SDoug Rabson */ 104dfdcada3SDoug Rabson typedef struct krb4_svc_data { 105dfdcada3SDoug Rabson int window; /* window option value */ 106dfdcada3SDoug Rabson } krb4_svcdata_t; 107dfdcada3SDoug Rabson 108dfdcada3SDoug Rabson typedef struct krb4_svc_data des_svcdata_t; 109dfdcada3SDoug Rabson #endif /* KERBEROS */ 110dfdcada3SDoug Rabson 111dfdcada3SDoug Rabson /* 112dfdcada3SDoug Rabson * authentication/security specific flags 113dfdcada3SDoug Rabson */ 114dfdcada3SDoug Rabson #define AUTH_F_RPCTIMESYNC 0x001 /* use RPC to do time sync */ 115dfdcada3SDoug Rabson #define AUTH_F_TRYNONE 0x002 /* allow fall back to AUTH_NONE */ 116dfdcada3SDoug Rabson 117dfdcada3SDoug Rabson 118dfdcada3SDoug Rabson /* 119dfdcada3SDoug Rabson * Status returned from authentication check 120dfdcada3SDoug Rabson */ 121dfdcada3SDoug Rabson enum auth_stat { 122dfdcada3SDoug Rabson AUTH_OK=0, 123dfdcada3SDoug Rabson /* 124dfdcada3SDoug Rabson * failed at remote end 125dfdcada3SDoug Rabson */ 126dfdcada3SDoug Rabson AUTH_BADCRED=1, /* bogus credentials (seal broken) */ 127dfdcada3SDoug Rabson AUTH_REJECTEDCRED=2, /* client should begin new session */ 128dfdcada3SDoug Rabson AUTH_BADVERF=3, /* bogus verifier (seal broken) */ 129dfdcada3SDoug Rabson AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */ 130dfdcada3SDoug Rabson AUTH_TOOWEAK=5, /* rejected due to security reasons */ 131dfdcada3SDoug Rabson /* 132dfdcada3SDoug Rabson * failed locally 133dfdcada3SDoug Rabson */ 134dfdcada3SDoug Rabson AUTH_INVALIDRESP=6, /* bogus response verifier */ 135dfdcada3SDoug Rabson AUTH_FAILED=7 /* some unknown reason */ 136dfdcada3SDoug Rabson #ifdef KERBEROS 137dfdcada3SDoug Rabson /* 138dfdcada3SDoug Rabson * kerberos errors 139dfdcada3SDoug Rabson */ 140dfdcada3SDoug Rabson , 141dfdcada3SDoug Rabson AUTH_KERB_GENERIC = 8, /* kerberos generic error */ 142dfdcada3SDoug Rabson AUTH_TIMEEXPIRE = 9, /* time of credential expired */ 143dfdcada3SDoug Rabson AUTH_TKT_FILE = 10, /* something wrong with ticket file */ 144dfdcada3SDoug Rabson AUTH_DECODE = 11, /* can't decode authenticator */ 145dfdcada3SDoug Rabson AUTH_NET_ADDR = 12 /* wrong net address in ticket */ 146dfdcada3SDoug Rabson #endif /* KERBEROS */ 147dfdcada3SDoug Rabson }; 148dfdcada3SDoug Rabson 149dfdcada3SDoug Rabson union des_block { 150dfdcada3SDoug Rabson struct { 151dfdcada3SDoug Rabson uint32_t high; 152dfdcada3SDoug Rabson uint32_t low; 153dfdcada3SDoug Rabson } key; 154dfdcada3SDoug Rabson char c[8]; 155dfdcada3SDoug Rabson }; 156dfdcada3SDoug Rabson typedef union des_block des_block; 157dfdcada3SDoug Rabson __BEGIN_DECLS 158dfdcada3SDoug Rabson extern bool_t xdr_des_block(XDR *, des_block *); 159dfdcada3SDoug Rabson __END_DECLS 160dfdcada3SDoug Rabson 161dfdcada3SDoug Rabson /* 162dfdcada3SDoug Rabson * Authentication info. Opaque to client. 163dfdcada3SDoug Rabson */ 164dfdcada3SDoug Rabson struct opaque_auth { 165dfdcada3SDoug Rabson enum_t oa_flavor; /* flavor of auth */ 166dfdcada3SDoug Rabson caddr_t oa_base; /* address of more auth stuff */ 167dfdcada3SDoug Rabson u_int oa_length; /* not to exceed MAX_AUTH_BYTES */ 168dfdcada3SDoug Rabson }; 169dfdcada3SDoug Rabson 170dfdcada3SDoug Rabson 171dfdcada3SDoug Rabson /* 172dfdcada3SDoug Rabson * Auth handle, interface to client side authenticators. 173dfdcada3SDoug Rabson */ 174dfdcada3SDoug Rabson typedef struct __auth { 175dfdcada3SDoug Rabson struct opaque_auth ah_cred; 176dfdcada3SDoug Rabson struct opaque_auth ah_verf; 177dfdcada3SDoug Rabson union des_block ah_key; 178dfdcada3SDoug Rabson struct auth_ops { 179dfdcada3SDoug Rabson void (*ah_nextverf) (struct __auth *); 180dfdcada3SDoug Rabson /* nextverf & serialize */ 181dfdcada3SDoug Rabson int (*ah_marshal) (struct __auth *, XDR *); 182dfdcada3SDoug Rabson /* validate verifier */ 183dfdcada3SDoug Rabson int (*ah_validate) (struct __auth *, 184dfdcada3SDoug Rabson struct opaque_auth *); 185dfdcada3SDoug Rabson /* refresh credentials */ 186dfdcada3SDoug Rabson int (*ah_refresh) (struct __auth *, void *); 187dfdcada3SDoug Rabson /* destroy this structure */ 188dfdcada3SDoug Rabson void (*ah_destroy) (struct __auth *); 189dfdcada3SDoug Rabson } *ah_ops; 190dfdcada3SDoug Rabson void *ah_private; 191dfdcada3SDoug Rabson } AUTH; 192dfdcada3SDoug Rabson 193dfdcada3SDoug Rabson 194dfdcada3SDoug Rabson /* 195dfdcada3SDoug Rabson * Authentication ops. 196dfdcada3SDoug Rabson * The ops and the auth handle provide the interface to the authenticators. 197dfdcada3SDoug Rabson * 198dfdcada3SDoug Rabson * AUTH *auth; 199dfdcada3SDoug Rabson * XDR *xdrs; 200dfdcada3SDoug Rabson * struct opaque_auth verf; 201dfdcada3SDoug Rabson */ 202dfdcada3SDoug Rabson #define AUTH_NEXTVERF(auth) \ 203dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_nextverf))(auth)) 204dfdcada3SDoug Rabson #define auth_nextverf(auth) \ 205dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_nextverf))(auth)) 206dfdcada3SDoug Rabson 207dfdcada3SDoug Rabson #define AUTH_MARSHALL(auth, xdrs) \ 208dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_marshal))(auth, xdrs)) 209dfdcada3SDoug Rabson #define auth_marshall(auth, xdrs) \ 210dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_marshal))(auth, xdrs)) 211dfdcada3SDoug Rabson 212dfdcada3SDoug Rabson #define AUTH_VALIDATE(auth, verfp) \ 213dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_validate))((auth), verfp)) 214dfdcada3SDoug Rabson #define auth_validate(auth, verfp) \ 215dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_validate))((auth), verfp)) 216dfdcada3SDoug Rabson 217dfdcada3SDoug Rabson #define AUTH_REFRESH(auth, msg) \ 218dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_refresh))(auth, msg)) 219dfdcada3SDoug Rabson #define auth_refresh(auth, msg) \ 220dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_refresh))(auth, msg)) 221dfdcada3SDoug Rabson 222dfdcada3SDoug Rabson #define AUTH_DESTROY(auth) \ 223dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_destroy))(auth)) 224dfdcada3SDoug Rabson #define auth_destroy(auth) \ 225dfdcada3SDoug Rabson ((*((auth)->ah_ops->ah_destroy))(auth)) 226dfdcada3SDoug Rabson 227dfdcada3SDoug Rabson 228dfdcada3SDoug Rabson __BEGIN_DECLS 229dfdcada3SDoug Rabson extern struct opaque_auth _null_auth; 230dfdcada3SDoug Rabson __END_DECLS 231dfdcada3SDoug Rabson 232dfdcada3SDoug Rabson /* 233dfdcada3SDoug Rabson * These are the various implementations of client side authenticators. 234dfdcada3SDoug Rabson */ 235dfdcada3SDoug Rabson 236dfdcada3SDoug Rabson /* 237dfdcada3SDoug Rabson * System style authentication 238dfdcada3SDoug Rabson * AUTH *authunix_create(machname, uid, gid, len, aup_gids) 239dfdcada3SDoug Rabson * char *machname; 240dfdcada3SDoug Rabson * int uid; 241dfdcada3SDoug Rabson * int gid; 242dfdcada3SDoug Rabson * int len; 243dfdcada3SDoug Rabson * int *aup_gids; 244dfdcada3SDoug Rabson */ 245dfdcada3SDoug Rabson __BEGIN_DECLS 246dfdcada3SDoug Rabson #ifdef _KERNEL 247dfdcada3SDoug Rabson struct ucred; 248dfdcada3SDoug Rabson extern AUTH *authunix_create(struct ucred *); 249dfdcada3SDoug Rabson #else 250dfdcada3SDoug Rabson extern AUTH *authunix_create(char *, int, int, int, 251dfdcada3SDoug Rabson int *); 252dfdcada3SDoug Rabson extern AUTH *authunix_create_default(void); /* takes no parameters */ 253dfdcada3SDoug Rabson #endif 254dfdcada3SDoug Rabson extern AUTH *authnone_create(void); /* takes no parameters */ 255dfdcada3SDoug Rabson __END_DECLS 256dfdcada3SDoug Rabson /* 257dfdcada3SDoug Rabson * DES style authentication 258dfdcada3SDoug Rabson * AUTH *authsecdes_create(servername, window, timehost, ckey) 259dfdcada3SDoug Rabson * char *servername; - network name of server 260dfdcada3SDoug Rabson * u_int window; - time to live 261dfdcada3SDoug Rabson * const char *timehost; - optional hostname to sync with 262dfdcada3SDoug Rabson * des_block *ckey; - optional conversation key to use 263dfdcada3SDoug Rabson */ 264dfdcada3SDoug Rabson __BEGIN_DECLS 265dfdcada3SDoug Rabson extern AUTH *authdes_create (char *, u_int, struct sockaddr *, des_block *); 266dfdcada3SDoug Rabson extern AUTH *authdes_seccreate (const char *, const u_int, const char *, 267dfdcada3SDoug Rabson const des_block *); 268dfdcada3SDoug Rabson __END_DECLS 269dfdcada3SDoug Rabson 270dfdcada3SDoug Rabson __BEGIN_DECLS 271dfdcada3SDoug Rabson extern bool_t xdr_opaque_auth (XDR *, struct opaque_auth *); 272dfdcada3SDoug Rabson __END_DECLS 273dfdcada3SDoug Rabson 274dfdcada3SDoug Rabson #define authsys_create(c,i1,i2,i3,ip) authunix_create((c),(i1),(i2),(i3),(ip)) 275dfdcada3SDoug Rabson #define authsys_create_default() authunix_create_default() 276dfdcada3SDoug Rabson 277dfdcada3SDoug Rabson /* 278dfdcada3SDoug Rabson * Netname manipulation routines. 279dfdcada3SDoug Rabson */ 280dfdcada3SDoug Rabson __BEGIN_DECLS 281dfdcada3SDoug Rabson extern int getnetname(char *); 282dfdcada3SDoug Rabson extern int host2netname(char *, const char *, const char *); 283dfdcada3SDoug Rabson extern int user2netname(char *, const uid_t, const char *); 284dfdcada3SDoug Rabson extern int netname2user(char *, uid_t *, gid_t *, int *, gid_t *); 285dfdcada3SDoug Rabson extern int netname2host(char *, char *, const int); 286dfdcada3SDoug Rabson extern void passwd2des ( char *, char * ); 287dfdcada3SDoug Rabson __END_DECLS 288dfdcada3SDoug Rabson 289dfdcada3SDoug Rabson /* 290dfdcada3SDoug Rabson * 291dfdcada3SDoug Rabson * These routines interface to the keyserv daemon 292dfdcada3SDoug Rabson * 293dfdcada3SDoug Rabson */ 294dfdcada3SDoug Rabson __BEGIN_DECLS 295dfdcada3SDoug Rabson extern int key_decryptsession(const char *, des_block *); 296dfdcada3SDoug Rabson extern int key_encryptsession(const char *, des_block *); 297dfdcada3SDoug Rabson extern int key_gendes(des_block *); 298dfdcada3SDoug Rabson extern int key_setsecret(const char *); 299dfdcada3SDoug Rabson extern int key_secretkey_is_set(void); 300dfdcada3SDoug Rabson __END_DECLS 301dfdcada3SDoug Rabson 302dfdcada3SDoug Rabson /* 303dfdcada3SDoug Rabson * Publickey routines. 304dfdcada3SDoug Rabson */ 305dfdcada3SDoug Rabson __BEGIN_DECLS 306dfdcada3SDoug Rabson extern int getpublickey (const char *, char *); 307dfdcada3SDoug Rabson extern int getpublicandprivatekey (const char *, char *); 308dfdcada3SDoug Rabson extern int getsecretkey (char *, char *, char *); 309dfdcada3SDoug Rabson __END_DECLS 310dfdcada3SDoug Rabson 311dfdcada3SDoug Rabson #ifdef KERBEROS 312dfdcada3SDoug Rabson /* 313dfdcada3SDoug Rabson * Kerberos style authentication 314dfdcada3SDoug Rabson * AUTH *authkerb_seccreate(service, srv_inst, realm, window, timehost, status) 315dfdcada3SDoug Rabson * const char *service; - service name 316dfdcada3SDoug Rabson * const char *srv_inst; - server instance 317dfdcada3SDoug Rabson * const char *realm; - server realm 318dfdcada3SDoug Rabson * const u_int window; - time to live 319dfdcada3SDoug Rabson * const char *timehost; - optional hostname to sync with 320dfdcada3SDoug Rabson * int *status; - kerberos status returned 321dfdcada3SDoug Rabson */ 322dfdcada3SDoug Rabson __BEGIN_DECLS 323dfdcada3SDoug Rabson extern AUTH *authkerb_seccreate(const char *, const char *, const char *, 324dfdcada3SDoug Rabson const u_int, const char *, int *); 325dfdcada3SDoug Rabson __END_DECLS 326dfdcada3SDoug Rabson 327dfdcada3SDoug Rabson /* 328dfdcada3SDoug Rabson * Map a kerberos credential into a unix cred. 329dfdcada3SDoug Rabson * 330dfdcada3SDoug Rabson * authkerb_getucred(rqst, uid, gid, grouplen, groups) 331dfdcada3SDoug Rabson * const struct svc_req *rqst; - request pointer 332dfdcada3SDoug Rabson * uid_t *uid; 333dfdcada3SDoug Rabson * gid_t *gid; 334dfdcada3SDoug Rabson * short *grouplen; 335dfdcada3SDoug Rabson * int *groups; 336dfdcada3SDoug Rabson * 337dfdcada3SDoug Rabson */ 338dfdcada3SDoug Rabson __BEGIN_DECLS 339dfdcada3SDoug Rabson extern int authkerb_getucred(/* struct svc_req *, uid_t *, gid_t *, 340dfdcada3SDoug Rabson short *, int * */); 341dfdcada3SDoug Rabson __END_DECLS 342dfdcada3SDoug Rabson #endif /* KERBEROS */ 343dfdcada3SDoug Rabson 344dfdcada3SDoug Rabson __BEGIN_DECLS 345dfdcada3SDoug Rabson struct svc_req; 346dfdcada3SDoug Rabson struct rpc_msg; 347dfdcada3SDoug Rabson enum auth_stat _svcauth_null (struct svc_req *, struct rpc_msg *); 348dfdcada3SDoug Rabson enum auth_stat _svcauth_short (struct svc_req *, struct rpc_msg *); 349dfdcada3SDoug Rabson enum auth_stat _svcauth_unix (struct svc_req *, struct rpc_msg *); 350dfdcada3SDoug Rabson __END_DECLS 351dfdcada3SDoug Rabson 352dfdcada3SDoug Rabson #define AUTH_NONE 0 /* no authentication */ 353dfdcada3SDoug Rabson #define AUTH_NULL 0 /* backward compatibility */ 354dfdcada3SDoug Rabson #define AUTH_SYS 1 /* unix style (uid, gids) */ 355dfdcada3SDoug Rabson #define AUTH_UNIX AUTH_SYS 356dfdcada3SDoug Rabson #define AUTH_SHORT 2 /* short hand unix style */ 357dfdcada3SDoug Rabson #define AUTH_DH 3 /* for Diffie-Hellman mechanism */ 358dfdcada3SDoug Rabson #define AUTH_DES AUTH_DH /* for backward compatibility */ 359dfdcada3SDoug Rabson #define AUTH_KERB 4 /* kerberos style */ 360dfdcada3SDoug Rabson 361dfdcada3SDoug Rabson #endif /* !_RPC_AUTH_H */ 362