Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Library General Public License as
6
   published by the Free Software Foundation; either version 2 of the
7
   License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Library General Public License for more details.
13
 
14
   You should have received a copy of the GNU Library General Public
15
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
16
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
   Boston, MA 02111-1307, USA.  */
18
 
19
#ifndef _RPC_AUTH_DES_H
20
#define _RPC_AUTH_DES_H	1
21
 
22
#include 
23
#include 
24
 
25
__BEGIN_DECLS
26
 
27
/* There are two kinds of "names": fullnames and nicknames */
28
enum authdes_namekind
29
  {
30
    ADN_FULLNAME,
31
    ADN_NICKNAME
32
  };
33
 
34
/* A fullname contains the network name of the client,
35
   a conversation key and the window */
36
struct authdes_fullname
37
  {
38
    char *name;		/* network name of client, up to MAXNETNAMELEN */
39
    des_block key;	/* conversation key */
40
    uint32_t window;	/* associated window */
41
  };
42
 
43
/* A credential */
44
struct authdes_cred
45
  {
46
    enum authdes_namekind adc_namekind;
47
    struct authdes_fullname adc_fullname;
48
    uint32_t adc_nickname;
49
  };
50
 
51
/* A timeval replacement for !32bit platforms */
52
struct rpc_timeval
53
  {
54
    uint32_t tv_sec;            /* Seconds.  */
55
    uint32_t tv_usec;           /* Microseconds.  */
56
  };
57
 
58
/* A des authentication verifier */
59
struct authdes_verf
60
  {
61
    union
62
      {
63
	struct rpc_timeval adv_ctime;	/* clear time */
64
	des_block adv_xtime;		/* crypt time */
65
      }
66
    adv_time_u;
67
    uint32_t adv_int_u;
68
  };
69
 
70
/* des authentication verifier: client variety
71
 
72
   adv_timestamp is the current time.
73
   adv_winverf is the credential window + 1.
74
   Both are encrypted using the conversation key. */
75
#define adv_timestamp  adv_time_u.adv_ctime
76
#define adv_xtimestamp adv_time_u.adv_xtime
77
#define adv_winverf    adv_int_u
78
 
79
/* des authentication verifier: server variety
80
 
81
   adv_timeverf is the client's timestamp + client's window
82
   adv_nickname is the server's nickname for the client.
83
   adv_timeverf is encrypted using the conversation key. */
84
#define adv_timeverf   adv_time_u.adv_ctime
85
#define adv_xtimeverf  adv_time_u.adv_xtime
86
#define adv_nickname   adv_int_u
87
 
88
/* Map a des credential into a unix cred. */
89
extern int authdes_getucred (const struct authdes_cred * __adc,
90
			     uid_t * __uid, gid_t * __gid,
91
			     short *__grouplen, gid_t * __groups) __THROW;
92
 
93
/* Get the public key for NAME and place it in KEY.  NAME can only be
94
   up to MAXNETNAMELEN bytes long and the destination buffer KEY should
95
   have HEXKEYBYTES + 1 bytes long to fit all characters from the key.  */
96
extern int getpublickey (const char *__name, char *__key) __THROW;
97
 
98
/* Get the secret key for NAME and place it in KEY.  PASSWD is used to
99
   decrypt the encrypted key stored in the database.  NAME can only be
100
   up to MAXNETNAMELEN bytes long and the destination buffer KEY
101
   should have HEXKEYBYTES + 1 bytes long to fit all characters from
102
   the key.  */
103
extern int getsecretkey (const char *__name, char *__key,
104
			 const char *__passwd) __THROW;
105
 
106
extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep,
107
		  struct rpc_timeval *__timeout) __THROW;
108
 
109
__END_DECLS
110
 
111
 
112
#endif /* rpc/auth_des.h */