Rev 4394 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/********************************************************************** RPC for the Windows NT Operating System* 1993 by Martin F. Gergeleit* Users may use, copy or modify Sun RPC for the Windows NT Operating* System according to the Sun copyright below.** RPC for the Windows NT Operating System COMES WITH ABSOLUTELY NO* WARRANTY, NOR WILL I BE LIABLE FOR ANY DAMAGES INCURRED FROM THE* USE OF. USE ENTIRELY AT YOUR OWN RISK!!!*********************************************************************//* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI *//** Sun RPC is a product of Sun Microsystems, Inc. and is provided for* unrestricted use provided that this legend is included on all tape* media and as a part of the software program in whole or part. Users* may copy or modify Sun RPC without charge, but are not authorized* to license or distribute it to anyone else except as part of a product or* program developed by the user.** SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.** Sun RPC is provided with no support and without any obligation on the* part of Sun Microsystems, Inc. to assist in its use, correction,* modification or enhancement.** SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC* OR ANY PART THEREOF.** In no event will Sun Microsystems, Inc. be liable for any lost revenue* or profits or other special, indirect and consequential damages, even if* Sun has been advised of the possibility of such damages.** Sun Microsystems, Inc.* 2550 Garcia Avenue* Mountain View, California 94043*//** auth.h, Authentication interface.** Copyright (C) 1984, Sun Microsystems, Inc.** The data structures are completely opaque to the client. The client* is required to pass a AUTH * to routines that create rpc* "sessions".*/#ifndef __AUTH_HEADER__#define __AUTH_HEADER__#define MAX_AUTH_BYTES 400#define MAXNETNAMELEN 255 /* maximum length of network user's name *//** Status returned from authentication check*/enum auth_stat {AUTH_OK=0,/** failed at remote end*/AUTH_BADCRED=1, /* bogus credentials (seal broken) */AUTH_REJECTEDCRED=2, /* client should begin new session */AUTH_BADVERF=3, /* bogus verifier (seal broken) */AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */AUTH_TOOWEAK=5, /* rejected due to security reasons *//** failed locally*/AUTH_INVALIDRESP=6, /* bogus response verifier */AUTH_FAILED=7 /* some unknown reason */};#if (mc68000 || sparc || vax || i386)typedef u_long u_int32; /* 32-bit unsigned integers */union des_block {struct {u_int32 high;u_int32 low;} key;char c[8];};#elseunion des_block {struct {u_long high;u_long low;} key;char c[8];};#endiftypedef union des_block des_block;extern bool_t xdr_des_block();/** Authentication info. Opaque to client.*/struct opaque_auth {enum_t oa_flavor; /* flavor of auth */caddr_t oa_base; /* address of more auth stuff */u_int oa_length; /* not to exceed MAX_AUTH_BYTES */};/** Auth handle, interface to client side authenticators.*/typedef struct {struct opaque_auth ah_cred;struct opaque_auth ah_verf;union des_block ah_key;struct auth_ops {void (*ah_nextverf)();int (*ah_marshal)(); /* nextverf & serialize */int (*ah_validate)(); /* validate varifier */int (*ah_refresh)(); /* refresh credentials */void (*ah_destroy)(); /* destroy this structure */} *ah_ops;caddr_t ah_private;} AUTH;/** Authentication ops.* The ops and the auth handle provide the interface to the authenticators.** AUTH *auth;* XDR *xdrs;* struct opaque_auth verf;*/#define AUTH_NEXTVERF(auth) \((*((auth)->ah_ops->ah_nextverf))(auth))#define auth_nextverf(auth) \((*((auth)->ah_ops->ah_nextverf))(auth))#define AUTH_MARSHALL(auth, xdrs) \((*((auth)->ah_ops->ah_marshal))(auth, xdrs))#define auth_marshall(auth, xdrs) \((*((auth)->ah_ops->ah_marshal))(auth, xdrs))#define AUTH_VALIDATE(auth, verfp) \((*((auth)->ah_ops->ah_validate))((auth), verfp))#define auth_validate(auth, verfp) \((*((auth)->ah_ops->ah_validate))((auth), verfp))#define AUTH_REFRESH(auth) \((*((auth)->ah_ops->ah_refresh))(auth))#define auth_refresh(auth) \((*((auth)->ah_ops->ah_refresh))(auth))#define AUTH_DESTROY(auth) \((*((auth)->ah_ops->ah_destroy))(auth))#define auth_destroy(auth) \((*((auth)->ah_ops->ah_destroy))(auth))extern struct opaque_auth _null_auth;/** These are the various implementations of client side authenticators.*//** Unix style authentication* AUTH *authunix_create(machname, uid, gid, len, aup_gids)* char *machname;* int uid;* int gid;* int len;* int *aup_gids;*/extern AUTH *authunix_create();extern AUTH *authunix_create_default(); /* takes no parameters */extern AUTH *authnone_create(); /* takes no parameters */extern AUTH *authdes_create();#define AUTH_NONE 0 /* no authentication */#define AUTH_NULL 0 /* backward compatibility */#define AUTH_UNIX 1 /* unix style (uid, gids) */#define AUTH_SHORT 2 /* short hand unix style */#define AUTH_DES 3 /* des style (encrypted timestamps) */#endif /* __AUTH_HEADER__ */