mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (C) 1996, 1997, 1998, 1999, 2012 Free Software Foundation, Inc.
 | 
						|
   This file is part of the GNU C Library.
 | 
						|
 | 
						|
   The GNU C Library is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the GNU Lesser General Public
 | 
						|
   License as published by the Free Software Foundation; either
 | 
						|
   version 2.1 of the License, or (at your option) any later version.
 | 
						|
 | 
						|
   The GNU C Library is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   Lesser General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU Lesser General Public
 | 
						|
   License along with the GNU C Library; if not, see
 | 
						|
   <http://www.gnu.org/licenses/>.  */
 | 
						|
 | 
						|
#ifndef _RPC_AUTH_DES_H
 | 
						|
#define _RPC_AUTH_DES_H	1
 | 
						|
 | 
						|
#include <sys/cdefs.h>
 | 
						|
#include <rpc/auth.h>
 | 
						|
 | 
						|
__BEGIN_DECLS
 | 
						|
 | 
						|
/* There are two kinds of "names": fullnames and nicknames */
 | 
						|
enum authdes_namekind
 | 
						|
  {
 | 
						|
    ADN_FULLNAME,
 | 
						|
    ADN_NICKNAME
 | 
						|
  };
 | 
						|
 | 
						|
/* A fullname contains the network name of the client,
 | 
						|
   a conversation key and the window */
 | 
						|
struct authdes_fullname
 | 
						|
  {
 | 
						|
    char *name;		/* network name of client, up to MAXNETNAMELEN */
 | 
						|
    des_block key;	/* conversation key */
 | 
						|
    uint32_t window;	/* associated window */
 | 
						|
  };
 | 
						|
 | 
						|
/* A credential */
 | 
						|
struct authdes_cred
 | 
						|
  {
 | 
						|
    enum authdes_namekind adc_namekind;
 | 
						|
    struct authdes_fullname adc_fullname;
 | 
						|
    uint32_t adc_nickname;
 | 
						|
  };
 | 
						|
 | 
						|
/* A timeval replacement for !32bit platforms */
 | 
						|
struct rpc_timeval
 | 
						|
  {
 | 
						|
    uint32_t tv_sec;            /* Seconds.  */
 | 
						|
    uint32_t tv_usec;           /* Microseconds.  */
 | 
						|
  };
 | 
						|
 | 
						|
/* A des authentication verifier */
 | 
						|
struct authdes_verf
 | 
						|
  {
 | 
						|
    union
 | 
						|
      {
 | 
						|
	struct rpc_timeval adv_ctime;	/* clear time */
 | 
						|
	des_block adv_xtime;		/* crypt time */
 | 
						|
      }
 | 
						|
    adv_time_u;
 | 
						|
    uint32_t adv_int_u;
 | 
						|
  };
 | 
						|
 | 
						|
/* des authentication verifier: client variety
 | 
						|
 | 
						|
   adv_timestamp is the current time.
 | 
						|
   adv_winverf is the credential window + 1.
 | 
						|
   Both are encrypted using the conversation key. */
 | 
						|
#define adv_timestamp  adv_time_u.adv_ctime
 | 
						|
#define adv_xtimestamp adv_time_u.adv_xtime
 | 
						|
#define adv_winverf    adv_int_u
 | 
						|
 | 
						|
/* des authentication verifier: server variety
 | 
						|
 | 
						|
   adv_timeverf is the client's timestamp + client's window
 | 
						|
   adv_nickname is the server's nickname for the client.
 | 
						|
   adv_timeverf is encrypted using the conversation key. */
 | 
						|
#define adv_timeverf   adv_time_u.adv_ctime
 | 
						|
#define adv_xtimeverf  adv_time_u.adv_xtime
 | 
						|
#define adv_nickname   adv_int_u
 | 
						|
 | 
						|
/* Map a des credential into a unix cred. */
 | 
						|
extern int authdes_getucred (const struct authdes_cred * __adc,
 | 
						|
			     uid_t * __uid, gid_t * __gid,
 | 
						|
			     short *__grouplen, gid_t * __groups) __THROW;
 | 
						|
 | 
						|
/* Get the public key for NAME and place it in KEY.  NAME can only be
 | 
						|
   up to MAXNETNAMELEN bytes long and the destination buffer KEY should
 | 
						|
   have HEXKEYBYTES + 1 bytes long to fit all characters from the key.  */
 | 
						|
extern int getpublickey (const char *__name, char *__key) __THROW;
 | 
						|
 | 
						|
/* Get the secret key for NAME and place it in KEY.  PASSWD is used to
 | 
						|
   decrypt the encrypted key stored in the database.  NAME can only be
 | 
						|
   up to MAXNETNAMELEN bytes long and the destination buffer KEY
 | 
						|
   should have HEXKEYBYTES + 1 bytes long to fit all characters from
 | 
						|
   the key.  */
 | 
						|
extern int getsecretkey (const char *__name, char *__key,
 | 
						|
			 const char *__passwd) __THROW;
 | 
						|
 | 
						|
extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep,
 | 
						|
		  struct rpc_timeval *__timeout) __THROW;
 | 
						|
 | 
						|
__END_DECLS
 | 
						|
 | 
						|
 | 
						|
#endif /* rpc/auth_des.h */
 |