diff options
Diffstat (limited to 'include/rpc/auth.h')
-rw-r--r-- | include/rpc/auth.h | 110 |
1 files changed, 79 insertions, 31 deletions
diff --git a/include/rpc/auth.h b/include/rpc/auth.h index 33cb42951..35f30e4a3 100644 --- a/include/rpc/auth.h +++ b/include/rpc/auth.h @@ -6,23 +6,23 @@ * 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 @@ -38,6 +38,13 @@ * "sessions". */ +#ifndef _RPC_AUTH_H + +#define _RPC_AUTH_H 1 +#include <features.h> +#include <rpc/xdr.h> + +__BEGIN_DECLS #define MAX_AUTH_BYTES 400 #define MAXNETNAMELEN 255 /* maximum length of network user's name */ @@ -62,19 +69,15 @@ enum auth_stat { AUTH_FAILED=7 /* some unknown reason */ }; -#if (mc68000 || sparc || vax || i386) -typedef u_long u_int32; /* 32-bit unsigned integers */ -#endif - union des_block { struct { - u_int32 high; - u_int32 low; + u_int32_t high; + u_int32_t low; } key; char c[8]; }; typedef union des_block des_block; -extern bool_t xdr_des_block(); +extern bool_t xdr_des_block __P ((XDR *__xdrs, des_block *__blkp)); /* * Authentication info. Opaque to client. @@ -85,23 +88,24 @@ struct opaque_auth { 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; +typedef struct AUTH AUTH; +struct AUTH { + struct opaque_auth ah_cred; + struct opaque_auth ah_verf; + union des_block ah_key; + struct auth_ops { + void (*ah_nextverf) __P ((AUTH *)); + int (*ah_marshal) __P ((AUTH *, XDR *)); /* nextverf & serialize */ + int (*ah_validate) __P ((AUTH *, struct opaque_auth *)); + /* validate verifier */ + int (*ah_refresh) __P ((AUTH *)); /* refresh credentials */ + void (*ah_destroy) __P ((AUTH *)); /* destroy this structure */ + } *ah_ops; + caddr_t ah_private; +}; /* @@ -154,13 +158,57 @@ extern struct opaque_auth _null_auth; * 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(); +extern AUTH *authunix_create __P ((char *__machname, __uid_t __uid, + __gid_t __gid, int __len, + __gid_t *__aup_gids)); +extern AUTH *authunix_create_default __P ((void)); +extern AUTH *authnone_create __P ((void)); +extern AUTH *authdes_create __P ((const char *__servername, u_int __window, + struct sockaddr *__syncaddr, + des_block *__ckey)); +extern AUTH *authdes_pk_create __P ((const char *, netobj *, u_int, + struct sockaddr *, des_block *)); + #define AUTH_NONE 0 /* no authentication */ #define AUTH_NULL 0 /* backward compatibility */ -#define AUTH_UNIX 1 /* unix style (uid, gids) */ +#define AUTH_SYS 1 /* unix style (uid, gids) */ +#define AUTH_UNIX AUTH_SYS #define AUTH_SHORT 2 /* short hand unix style */ #define AUTH_DES 3 /* des style (encrypted timestamps) */ +#define AUTH_DH AUTH_DES /* Diffie-Hellman (this is DES) */ +#define AUTH_KERB 4 /* kerberos style */ + +/* + * Netname manipulating functions + * + */ +extern int getnetname __P ((char *)); +extern int host2netname __P ((char *, __const char *, __const char *)); +extern int user2netname __P ((char *, __const uid_t, __const char *)); +extern int netname2user __P ((__const char *, uid_t *, gid_t *, int *, + gid_t *)); +extern int netname2host __P ((__const char *, char *, __const int)); + +/* + * + * These routines interface to the keyserv daemon + * + */ +extern int key_decryptsession __P ((char *, des_block *)); +extern int key_decryptsession_pk __P ((char *, netobj *, des_block *)); +extern int key_encryptsession __P ((char *, des_block *)); +extern int key_encryptsession_pk __P ((char *, netobj *, des_block *)); +extern int key_gendes __P ((des_block *)); +extern int key_setsecret __P ((char *)); +extern int key_secretkey_is_set __P ((void)); +extern int key_get_conv __P ((char *, des_block *)); + +/* + * XDR an opaque authentication struct. + */ +extern bool_t xdr_opaque_auth __P ((XDR *, struct opaque_auth *)); + +__END_DECLS + +#endif /* rpc/auth.h */ |