1 /* @(#)auth_none.c 2.1 88/07/29 4.0 RPCSRC */ 2 /* 3 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 4 * unrestricted use provided that this legend is included on all tape 5 * media and as a part of the software program in whole or part. Users 6 * may copy or modify Sun RPC without charge, but are not authorized 7 * to license or distribute it to anyone else except as part of a product or 8 * program developed by the user. 9 * 10 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 11 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 12 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 13 * 14 * Sun RPC is provided with no support and without any obligation on the 15 * part of Sun Microsystems, Inc. to assist in its use, correction, 16 * modification or enhancement. 17 * 18 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 19 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 20 * OR ANY PART THEREOF. 21 * 22 * In no event will Sun Microsystems, Inc. be liable for any lost revenue 23 * or profits or other special, indirect and consequential damages, even if 24 * Sun has been advised of the possibility of such damages. 25 * 26 * Sun Microsystems, Inc. 27 * 2550 Garcia Avenue 28 * Mountain View, California 94043 29 */ 30 #if !defined(lint) && defined(SCCSIDS) 31 static char sccsid[] = "@(#)auth_none.c 1.19 87/08/11 Copyr 1984 Sun Micro"; 32 #endif 33 34 /* 35 * auth_none.c 36 * Creates a client authentication handle for passing "null" 37 * credentials and verifiers to remote systems. 38 * 39 * Copyright (C) 1984, Sun Microsystems, Inc. 40 */ 41 42 #include <rpc/types.h> 43 #include <rpc/xdr.h> 44 #include <rpc/auth.h> 45 #define MAX_MARSHEL_SIZE 20 46 47 /* 48 * Authenticator operations routines 49 */ 50 static void authnone_verf(); 51 static void authnone_destroy(); 52 static bool_t authnone_marshal(); 53 static bool_t authnone_validate(); 54 static bool_t authnone_refresh(); 55 56 static struct auth_ops ops = { 57 authnone_verf, 58 authnone_marshal, 59 authnone_validate, 60 authnone_refresh, 61 authnone_destroy 62 }; 63 64 static struct authnone_private { 65 AUTH no_client; 66 char marshalled_client[MAX_MARSHEL_SIZE]; 67 u_int mcnt; 68 } *authnone_private; 69 70 AUTH * 71 authnone_create() 72 { 73 register struct authnone_private *ap = authnone_private; 74 XDR xdr_stream; 75 register XDR *xdrs; 76 77 if (ap == 0) { 78 ap = (struct authnone_private *)calloc(1, sizeof (*ap)); 79 if (ap == 0) 80 return (0); 81 authnone_private = ap; 82 } 83 if (!ap->mcnt) { 84 ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth; 85 ap->no_client.ah_ops = &ops; 86 xdrs = &xdr_stream; 87 xdrmem_create(xdrs, ap->marshalled_client, (u_int)MAX_MARSHEL_SIZE, 88 XDR_ENCODE); 89 (void)xdr_opaque_auth(xdrs, &ap->no_client.ah_cred); 90 (void)xdr_opaque_auth(xdrs, &ap->no_client.ah_verf); 91 ap->mcnt = XDR_GETPOS(xdrs); 92 XDR_DESTROY(xdrs); 93 } 94 return (&ap->no_client); 95 } 96 97 /*ARGSUSED*/ 98 static bool_t 99 authnone_marshal(client, xdrs) 100 AUTH *client; 101 XDR *xdrs; 102 { 103 register struct authnone_private *ap = authnone_private; 104 105 if (ap == 0) 106 return (0); 107 return ((*xdrs->x_ops->x_putbytes)(xdrs, 108 ap->marshalled_client, ap->mcnt)); 109 } 110 111 static void 112 authnone_verf() 113 { 114 } 115 116 static bool_t 117 authnone_validate() 118 { 119 120 return (TRUE); 121 } 122 123 static bool_t 124 authnone_refresh() 125 { 126 127 return (FALSE); 128 } 129 130 static void 131 authnone_destroy() 132 { 133 } 134