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