OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [librpc/] [include/] [rpcsvc/] [key_prot.x] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
%/*
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
28
% */
29
/*
30
 * Key server protocol definition
31
 * Copyright (C) 1990, 1991 Sun Microsystems, Inc.
32
 *
33
 * The keyserver is a public key storage/encryption/decryption service
34
 * The encryption method used is based on the Diffie-Hellman exponential
35
 * key exchange technology.
36
 *
37
 * The key server is local to each machine, akin to the portmapper.
38
 * Under TI-RPC, communication with the keyserver is through the
39
 * loopback transport.
40
 *
41
 * NOTE: This .x file generates the USER level headers for the keyserver.
42
 * the KERNEL level headers are created by hand as they kernel has special
43
 * requirements.
44
 */
45
 
46
%/* From: #pragma ident "@(#)key_prot.x 1.7     94/04/29 SMI" */
47
%
48
%/* Copyright (c)  1990, 1991 Sun Microsystems, Inc. */
49
%
50
%/*
51
% * Compiled from key_prot.x using rpcgen.
52
% * DO NOT EDIT THIS FILE!
53
% * This is NOT source code!
54
% */
55
 
56
/*
57
 * PROOT and MODULUS define the way the Diffie-Hellman key is generated.
58
 *
59
 * MODULUS should be chosen as a prime of the form: MODULUS == 2*p + 1,
60
 * where p is also prime.
61
 *
62
 * PROOT satisfies the following two conditions:
63
 * (1) (PROOT ** 2) % MODULUS != 1
64
 * (2) (PROOT ** p) % MODULUS != 1
65
 *
66
 */
67
 
68
const PROOT = 3;
69
const HEXMODULUS = "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b";
70
 
71
const HEXKEYBYTES = 48;         /* HEXKEYBYTES == strlen(HEXMODULUS) */
72
const KEYSIZE = 192;            /* KEYSIZE == bit length of key */
73
const KEYBYTES = 24;            /* byte length of key */
74
 
75
/*
76
 * The first 16 hex digits of the encrypted secret key are used as
77
 * a checksum in the database.
78
 */
79
const KEYCHECKSUMSIZE = 16;
80
 
81
/*
82
 * status of operation
83
 */
84
enum keystatus {
85
        KEY_SUCCESS,    /* no problems */
86
        KEY_NOSECRET,   /* no secret key stored */
87
        KEY_UNKNOWN,    /* unknown netname */
88
        KEY_SYSTEMERR   /* system error (out of memory, encryption failure) */
89
};
90
 
91
typedef opaque keybuf[HEXKEYBYTES];     /* store key in hex */
92
 
93
typedef string netnamestr;
94
 
95
/*
96
 * Argument to ENCRYPT or DECRYPT
97
 */
98
struct cryptkeyarg {
99
        netnamestr remotename;
100
        des_block deskey;
101
};
102
 
103
/*
104
 * Argument to ENCRYPT_PK or DECRYPT_PK
105
 */
106
struct cryptkeyarg2 {
107
        netnamestr remotename;
108
        netobj  remotekey;      /* Contains a length up to 1024 bytes */
109
        des_block deskey;
110
};
111
 
112
 
113
/*
114
 * Result of ENCRYPT, DECRYPT, ENCRYPT_PK, and DECRYPT_PK
115
 */
116
union cryptkeyres switch (keystatus status) {
117
case KEY_SUCCESS:
118
        des_block deskey;
119
default:
120
        void;
121
};
122
 
123
const MAXGIDS  = 16;    /* max number of gids in gid list */
124
 
125
/*
126
 * Unix credential
127
 */
128
struct unixcred {
129
        u_int uid;
130
        u_int gid;
131
        u_int gids;
132
};
133
 
134
/*
135
 * Result returned from GETCRED
136
 */
137
union getcredres switch (keystatus status) {
138
case KEY_SUCCESS:
139
        unixcred cred;
140
default:
141
        void;
142
};
143
/*
144
 * key_netstarg;
145
 */
146
 
147
struct key_netstarg {
148
        keybuf st_priv_key;
149
        keybuf st_pub_key;
150
        netnamestr st_netname;
151
};
152
 
153
union key_netstres switch (keystatus status){
154
case KEY_SUCCESS:
155
        key_netstarg knet;
156
default:
157
        void;
158
};
159
 
160
#ifdef RPC_HDR
161
%
162
%#ifndef opaque
163
%#define opaque char
164
%#endif
165
%
166
#endif
167
program KEY_PROG {
168
        version KEY_VERS {
169
 
170
                /*
171
                 * This is my secret key.
172
                 * Store it for me.
173
                 */
174
                keystatus
175
                KEY_SET(keybuf) = 1;
176
 
177
                /*
178
                 * I want to talk to X.
179
                 * Encrypt a conversation key for me.
180
                 */
181
                cryptkeyres
182
                KEY_ENCRYPT(cryptkeyarg) = 2;
183
 
184
                /*
185
                 * X just sent me a message.
186
                 * Decrypt the conversation key for me.
187
                 */
188
                cryptkeyres
189
                KEY_DECRYPT(cryptkeyarg) = 3;
190
 
191
                /*
192
                 * Generate a secure conversation key for me
193
                 */
194
                des_block
195
                KEY_GEN(void) = 4;
196
 
197
                /*
198
                 * Get me the uid, gid and group-access-list associated
199
                 * with this netname (for kernel which cannot use NIS)
200
                 */
201
                getcredres
202
                KEY_GETCRED(netnamestr) = 5;
203
        } = 1;
204
        version KEY_VERS2 {
205
 
206
                /*
207
                 * #######
208
                 * Procedures 1-5 are identical to version 1
209
                 * #######
210
                 */
211
 
212
                /*
213
                 * This is my secret key.
214
                 * Store it for me.
215
                 */
216
                keystatus
217
                KEY_SET(keybuf) = 1;
218
 
219
                /*
220
                 * I want to talk to X.
221
                 * Encrypt a conversation key for me.
222
                 */
223
                cryptkeyres
224
                KEY_ENCRYPT(cryptkeyarg) = 2;
225
 
226
                /*
227
                 * X just sent me a message.
228
                 * Decrypt the conversation key for me.
229
                 */
230
                cryptkeyres
231
                KEY_DECRYPT(cryptkeyarg) = 3;
232
 
233
                /*
234
                 * Generate a secure conversation key for me
235
                 */
236
                des_block
237
                KEY_GEN(void) = 4;
238
 
239
                /*
240
                 * Get me the uid, gid and group-access-list associated
241
                 * with this netname (for kernel which cannot use NIS)
242
                 */
243
                getcredres
244
                KEY_GETCRED(netnamestr) = 5;
245
 
246
                /*
247
                 * I want to talk to X. and I know X's public key
248
                 * Encrypt a conversation key for me.
249
                 */
250
                cryptkeyres
251
                KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
252
 
253
                /*
254
                 * X just sent me a message. and I know X's public key
255
                 * Decrypt the conversation key for me.
256
                 */
257
                cryptkeyres
258
                KEY_DECRYPT_PK(cryptkeyarg2) = 7;
259
 
260
                /*
261
                 * Store my public key, netname and private key.
262
                 */
263
                keystatus
264
                KEY_NET_PUT(key_netstarg) = 8;
265
 
266
                /*
267
                 * Retrieve my public key, netname and private key.
268
                 */
269
                key_netstres
270
                KEY_NET_GET(void) = 9;
271
 
272
                /*
273
                 * Return me the conversation key that is constructed
274
                 * from my secret key and this publickey.
275
                 */
276
 
277
                cryptkeyres
278
                KEY_GET_CONV(keybuf) = 10;
279
 
280
 
281
        } = 2;
282
} = 100029;
283
 
284
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.