tzsetup: Fix VERBOSE reporting when removing _PATH_LOCALTIME for UTC.
[dragonfly.git] / include / rpcsvc / key_prot.x
CommitLineData
984263bc
MD
1%/*
2% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3% * unrestricted use provided that this legend is included on all tape
4% * media and as a part of the software program in whole or part. Users
5% * may copy or modify Sun RPC without charge, but are not authorized
6% * to license or distribute it to anyone else except as part of a product or
7% * program developed by the user.
8% *
9% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12% *
13% * Sun RPC is provided with no support and without any obligation on the
14% * part of Sun Microsystems, Inc. to assist in its use, correction,
15% * modification or enhancement.
16% *
17% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19% * OR ANY PART THEREOF.
20% *
21% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22% * or profits or other special, indirect and consequential damages, even if
23% * Sun has been advised of the possibility of such damages.
24% *
25% * Sun Microsystems, Inc.
26% * 2550 Garcia Avenue
27% * Mountain View, California 94043
1de703da
MD
28% *
29% * @(#)key_prot.x 1.7 94/04/29 SMI
30% * $DragonFly: src/include/rpcsvc/key_prot.x,v 1.2 2003/06/17 04:25:58 dillon Exp $
984263bc
MD
31% */
32/*
33 * Key server protocol definition
34 * Copyright (C) 1990, 1991 Sun Microsystems, Inc.
35 *
36 * The keyserver is a public key storage/encryption/decryption service
37 * The encryption method used is based on the Diffie-Hellman exponential
38 * key exchange technology.
39 *
40 * The key server is local to each machine, akin to the portmapper.
41 * Under TI-RPC, communication with the keyserver is through the
42 * loopback transport.
43 *
44 * NOTE: This .x file generates the USER level headers for the keyserver.
45 * the KERNEL level headers are created by hand as they kernel has special
46 * requirements.
47 */
48
984263bc
MD
49%
50%/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
51%
52%/*
53% * Compiled from key_prot.x using rpcgen.
54% * DO NOT EDIT THIS FILE!
55% * This is NOT source code!
56% */
57
58/*
59 * PROOT and MODULUS define the way the Diffie-Hellman key is generated.
60 *
61 * MODULUS should be chosen as a prime of the form: MODULUS == 2*p + 1,
62 * where p is also prime.
63 *
64 * PROOT satisfies the following two conditions:
65 * (1) (PROOT ** 2) % MODULUS != 1
66 * (2) (PROOT ** p) % MODULUS != 1
67 *
68 */
69
70const PROOT = 3;
71const HEXMODULUS = "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b";
72
73const HEXKEYBYTES = 48; /* HEXKEYBYTES == strlen(HEXMODULUS) */
74const KEYSIZE = 192; /* KEYSIZE == bit length of key */
75const KEYBYTES = 24; /* byte length of key */
76
77/*
78 * The first 16 hex digits of the encrypted secret key are used as
79 * a checksum in the database.
80 */
81const KEYCHECKSUMSIZE = 16;
82
83/*
84 * status of operation
85 */
86enum keystatus {
87 KEY_SUCCESS, /* no problems */
88 KEY_NOSECRET, /* no secret key stored */
89 KEY_UNKNOWN, /* unknown netname */
90 KEY_SYSTEMERR /* system error (out of memory, encryption failure) */
91};
92
93typedef opaque keybuf[HEXKEYBYTES]; /* store key in hex */
94
95typedef string netnamestr<MAXNETNAMELEN>;
96
97/*
98 * Argument to ENCRYPT or DECRYPT
99 */
100struct cryptkeyarg {
101 netnamestr remotename;
102 des_block deskey;
103};
104
105/*
106 * Argument to ENCRYPT_PK or DECRYPT_PK
107 */
108struct cryptkeyarg2 {
109 netnamestr remotename;
110 netobj remotekey; /* Contains a length up to 1024 bytes */
111 des_block deskey;
112};
113
114
115/*
116 * Result of ENCRYPT, DECRYPT, ENCRYPT_PK, and DECRYPT_PK
117 */
118union cryptkeyres switch (keystatus status) {
119case KEY_SUCCESS:
120 des_block deskey;
121default:
122 void;
123};
124
125const MAXGIDS = 16; /* max number of gids in gid list */
126
127/*
128 * Unix credential
129 */
130struct unixcred {
131 u_int uid;
132 u_int gid;
133 u_int gids<MAXGIDS>;
134};
135
136/*
137 * Result returned from GETCRED
138 */
139union getcredres switch (keystatus status) {
140case KEY_SUCCESS:
141 unixcred cred;
142default:
143 void;
144};
145/*
146 * key_netstarg;
147 */
148
149struct key_netstarg {
150 keybuf st_priv_key;
151 keybuf st_pub_key;
152 netnamestr st_netname;
153};
154
155union key_netstres switch (keystatus status){
156case KEY_SUCCESS:
157 key_netstarg knet;
158default:
159 void;
160};
161
162#ifdef RPC_HDR
163%
164%#ifndef opaque
165%#define opaque char
166%#endif
167%
168#endif
169program KEY_PROG {
170 version KEY_VERS {
171
172 /*
173 * This is my secret key.
174 * Store it for me.
175 */
176 keystatus
177 KEY_SET(keybuf) = 1;
178
179 /*
180 * I want to talk to X.
181 * Encrypt a conversation key for me.
182 */
183 cryptkeyres
184 KEY_ENCRYPT(cryptkeyarg) = 2;
185
186 /*
187 * X just sent me a message.
188 * Decrypt the conversation key for me.
189 */
190 cryptkeyres
191 KEY_DECRYPT(cryptkeyarg) = 3;
192
193 /*
194 * Generate a secure conversation key for me
195 */
196 des_block
197 KEY_GEN(void) = 4;
198
199 /*
200 * Get me the uid, gid and group-access-list associated
201 * with this netname (for kernel which cannot use NIS)
202 */
203 getcredres
204 KEY_GETCRED(netnamestr) = 5;
205 } = 1;
206 version KEY_VERS2 {
207
208 /*
209 * #######
210 * Procedures 1-5 are identical to version 1
211 * #######
212 */
213
214 /*
215 * This is my secret key.
216 * Store it for me.
217 */
218 keystatus
219 KEY_SET(keybuf) = 1;
220
221 /*
222 * I want to talk to X.
223 * Encrypt a conversation key for me.
224 */
225 cryptkeyres
226 KEY_ENCRYPT(cryptkeyarg) = 2;
227
228 /*
229 * X just sent me a message.
230 * Decrypt the conversation key for me.
231 */
232 cryptkeyres
233 KEY_DECRYPT(cryptkeyarg) = 3;
234
235 /*
236 * Generate a secure conversation key for me
237 */
238 des_block
239 KEY_GEN(void) = 4;
240
241 /*
242 * Get me the uid, gid and group-access-list associated
243 * with this netname (for kernel which cannot use NIS)
244 */
245 getcredres
246 KEY_GETCRED(netnamestr) = 5;
247
248 /*
249 * I want to talk to X. and I know X's public key
250 * Encrypt a conversation key for me.
251 */
252 cryptkeyres
253 KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
254
255 /*
256 * X just sent me a message. and I know X's public key
257 * Decrypt the conversation key for me.
258 */
259 cryptkeyres
260 KEY_DECRYPT_PK(cryptkeyarg2) = 7;
261
262 /*
263 * Store my public key, netname and private key.
264 */
265 keystatus
266 KEY_NET_PUT(key_netstarg) = 8;
267
268 /*
269 * Retrieve my public key, netname and private key.
270 */
271 key_netstres
272 KEY_NET_GET(void) = 9;
273
274 /*
275 * Return me the conversation key that is constructed
276 * from my secret key and this publickey.
277 */
278
279 cryptkeyres
280 KEY_GET_CONV(keybuf) = 10;
281
282
283 } = 2;
284} = 100029;
285
286