Blame sunrpc/rpc/auth_des.h

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