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 */ |