home *** CD-ROM | disk | FTP | other *** search
/ Serving the Web / ServingTheWeb1995.disc1of1.iso / linux / slacksrce / d / libc / libc-4.6 / libc-4 / libc-linux / rpc / auth_none.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-02  |  3.3 KB  |  139 lines

  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.  
  46. #ifdef __STDC__
  47. #include <stdlib.h>
  48. #endif
  49.  
  50. #define MAX_MARSHEL_SIZE 20
  51.  
  52. /*
  53.  * Authenticator operations routines
  54.  */
  55. static void    authnone_verf();
  56. static void    authnone_destroy();
  57. static bool_t    authnone_marshal();
  58. static bool_t    authnone_validate();
  59. static bool_t    authnone_refresh();
  60.  
  61. static struct auth_ops ops = {
  62.     authnone_verf,
  63.     authnone_marshal,
  64.     authnone_validate,
  65.     authnone_refresh,
  66.     authnone_destroy
  67. };
  68.  
  69. static struct authnone_private {
  70.     AUTH    no_client;
  71.     char    marshalled_client[MAX_MARSHEL_SIZE];
  72.     u_int    mcnt;
  73. } *authnone_private;
  74.  
  75. AUTH *
  76. authnone_create()
  77. {
  78.     register struct authnone_private *ap = authnone_private;
  79.     XDR xdr_stream;
  80.     register XDR *xdrs;
  81.  
  82.     if (ap == 0) {
  83.         ap = (struct authnone_private *)calloc(1, sizeof (*ap));
  84.         if (ap == 0)
  85.             return (0);
  86.         authnone_private = ap;
  87.     }
  88.     if (!ap->mcnt) {
  89.         ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
  90.         ap->no_client.ah_ops = &ops;
  91.         xdrs = &xdr_stream;
  92.         xdrmem_create(xdrs, ap->marshalled_client, (u_int)MAX_MARSHEL_SIZE,
  93.             XDR_ENCODE);
  94.         (void)xdr_opaque_auth(xdrs, &ap->no_client.ah_cred);
  95.         (void)xdr_opaque_auth(xdrs, &ap->no_client.ah_verf);
  96.         ap->mcnt = XDR_GETPOS(xdrs);
  97.         XDR_DESTROY(xdrs);
  98.     }
  99.     return (&ap->no_client);
  100. }
  101.  
  102. /*ARGSUSED*/
  103. static bool_t
  104. authnone_marshal(client, xdrs)
  105.     AUTH *client;
  106.     XDR *xdrs;
  107. {
  108.     register struct authnone_private *ap = authnone_private;
  109.  
  110.     if (ap == 0)
  111.         return (0);
  112.     return ((*xdrs->x_ops->x_putbytes)(xdrs,
  113.         ap->marshalled_client, ap->mcnt));
  114. }
  115.  
  116. static void 
  117. authnone_verf()
  118. {
  119. }
  120.  
  121. static bool_t
  122. authnone_validate()
  123. {
  124.  
  125.     return (TRUE);
  126. }
  127.  
  128. static bool_t
  129. authnone_refresh()
  130. {
  131.  
  132.     return (FALSE);
  133. }
  134.  
  135. static void
  136. authnone_destroy()
  137. {
  138. }
  139.