key_prot.h
001:
002:
003:
004:
005:
006: #ifndef _KEY_PROT_H_RPCGEN
007: #define _KEY_PROT_H_RPCGEN
008:
009: #include <rpc/rpc.h>
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046: #define PROOT 3
047: #define HEXMODULUS "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b"
048: #define HEXKEYBYTES 48
049: #define KEYSIZE 192
050: #define KEYBYTES 24
051: #define KEYCHECKSUMSIZE 16
052:
053: enum keystatus {
054: KEY_SUCCESS = 0,
055: KEY_NOSECRET = 1,
056: KEY_UNKNOWN = 2,
057: KEY_SYSTEMERR = 3,
058: };
059: typedef enum keystatus keystatus;
060: #ifdef __cplusplus
061: extern "C" bool_t xdr_keystatus(XDR *, keystatus*);
062: #elif __STDC__
063: extern bool_t xdr_keystatus(XDR *, keystatus*);
064: #else
065: bool_t xdr_keystatus();
066: #endif
067:
068:
069: typedef char keybuf[HEXKEYBYTES];
070: #ifdef __cplusplus
071: extern "C" bool_t xdr_keybuf(XDR *, keybuf);
072: #elif __STDC__
073: extern bool_t xdr_keybuf(XDR *, keybuf);
074: #else
075: bool_t xdr_keybuf();
076: #endif
077:
078:
079: typedef char *netnamestr;
080: #ifdef __cplusplus
081: extern "C" bool_t xdr_netnamestr(XDR *, netnamestr*);
082: #elif __STDC__
083: extern bool_t xdr_netnamestr(XDR *, netnamestr*);
084: #else
085: bool_t xdr_netnamestr();
086: #endif
087:
088:
089: struct cryptkeyarg {
090: netnamestr remotename;
091: des_block deskey;
092: };
093: typedef struct cryptkeyarg cryptkeyarg;
094: #ifdef __cplusplus
095: extern "C" bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
096: #elif __STDC__
097: extern bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
098: #else
099: bool_t xdr_cryptkeyarg();
100: #endif
101:
102:
103: struct cryptkeyarg2 {
104: netnamestr remotename;
105: netobj remotekey;
106: des_block deskey;
107: };
108: typedef struct cryptkeyarg2 cryptkeyarg2;
109: #ifdef __cplusplus
110: extern "C" bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
111: #elif __STDC__
112: extern bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
113: #else
114: bool_t xdr_cryptkeyarg2();
115: #endif
116:
117:
118: struct cryptkeyres {
119: keystatus status;
120: union {
121: des_block deskey;
122: } cryptkeyres_u;
123: };
124: typedef struct cryptkeyres cryptkeyres;
125: #ifdef __cplusplus
126: extern "C" bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
127: #elif __STDC__
128: extern bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
129: #else
130: bool_t xdr_cryptkeyres();
131: #endif
132:
133: #define MAXGIDS 16
134:
135: struct unixcred {
136: u_int uid;
137: u_int gid;
138: struct {
139: u_int gids_len;
140: u_int *gids_val;
141: } gids;
142: };
143: typedef struct unixcred unixcred;
144: #ifdef __cplusplus
145: extern "C" bool_t xdr_unixcred(XDR *, unixcred*);
146: #elif __STDC__
147: extern bool_t xdr_unixcred(XDR *, unixcred*);
148: #else
149: bool_t xdr_unixcred();
150: #endif
151:
152:
153: struct getcredres {
154: keystatus status;
155: union {
156: unixcred cred;
157: } getcredres_u;
158: };
159: typedef struct getcredres getcredres;
160: #ifdef __cplusplus
161: extern "C" bool_t xdr_getcredres(XDR *, getcredres*);
162: #elif __STDC__
163: extern bool_t xdr_getcredres(XDR *, getcredres*);
164: #else
165: bool_t xdr_getcredres();
166: #endif
167:
168:
169: struct key_netstarg {
170: keybuf st_priv_key;
171: keybuf st_pub_key;
172: netnamestr st_netname;
173: };
174: typedef struct key_netstarg key_netstarg;
175: #ifdef __cplusplus
176: extern "C" bool_t xdr_key_netstarg(XDR *, key_netstarg*);
177: #elif __STDC__
178: extern bool_t xdr_key_netstarg(XDR *, key_netstarg*);
179: #else
180: bool_t xdr_key_netstarg();
181: #endif
182:
183:
184: struct key_netstres {
185: keystatus status;
186: union {
187: key_netstarg knet;
188: } key_netstres_u;
189: };
190: typedef struct key_netstres key_netstres;
191: #ifdef __cplusplus
192: extern "C" bool_t xdr_key_netstres(XDR *, key_netstres*);
193: #elif __STDC__
194: extern bool_t xdr_key_netstres(XDR *, key_netstres*);
195: #else
196: bool_t xdr_key_netstres();
197: #endif
198:
199:
200: #ifndef opaque
201: #define opaque char
202: #endif
203:
204:
205: #define KEY_PROG ((u_long)100029)
206: #define KEY_VERS ((u_long)1)
207:
208: #ifdef __cplusplus
209: #define KEY_SET ((u_long)1)
210: extern "C" keystatus * key_set_1(opaque *, CLIENT *);
211: extern "C" keystatus * key_set_1_svc(opaque *, struct svc_req *);
212: #define KEY_ENCRYPT ((u_long)2)
213: extern "C" cryptkeyres * key_encrypt_1(cryptkeyarg *, CLIENT *);
214: extern "C" cryptkeyres * key_encrypt_1_svc(cryptkeyarg *, struct svc_req *);
215: #define KEY_DECRYPT ((u_long)3)
216: extern "C" cryptkeyres * key_decrypt_1(cryptkeyarg *, CLIENT *);
217: extern "C" cryptkeyres * key_decrypt_1_svc(cryptkeyarg *, struct svc_req *);
218: #define KEY_GEN ((u_long)4)
219: extern "C" des_block * key_gen_1(void *, CLIENT *);
220: extern "C" des_block * key_gen_1_svc(void *, struct svc_req *);
221: #define KEY_GETCRED ((u_long)5)
222: extern "C" getcredres * key_getcred_1(netnamestr *, CLIENT *);
223: extern "C" getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *);
224:
225: #elif __STDC__
226: #define KEY_SET ((u_long)1)
227: extern keystatus * key_set_1(opaque *, CLIENT *);
228: extern keystatus * key_set_1_svc(opaque *, struct svc_req *);
229: #define KEY_ENCRYPT ((u_long)2)
230: extern cryptkeyres * key_encrypt_1(cryptkeyarg *, CLIENT *);
231: extern cryptkeyres * key_encrypt_1_svc(cryptkeyarg *, struct svc_req *);
232: #define KEY_DECRYPT ((u_long)3)
233: extern cryptkeyres * key_decrypt_1(cryptkeyarg *, CLIENT *);
234: extern cryptkeyres * key_decrypt_1_svc(cryptkeyarg *, struct svc_req *);
235: #define KEY_GEN ((u_long)4)
236: extern des_block * key_gen_1(void *, CLIENT *);
237: extern des_block * key_gen_1_svc(void *, struct svc_req *);
238: #define KEY_GETCRED ((u_long)5)
239: extern getcredres * key_getcred_1(netnamestr *, CLIENT *);
240: extern getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *);
241:
242: #else
243: #define KEY_SET ((u_long)1)
244: extern keystatus * key_set_1();
245: extern keystatus * key_set_1_svc();
246: #define KEY_ENCRYPT ((u_long)2)
247: extern cryptkeyres * key_encrypt_1();
248: extern cryptkeyres * key_encrypt_1_svc();
249: #define KEY_DECRYPT ((u_long)3)
250: extern cryptkeyres * key_decrypt_1();
251: extern cryptkeyres * key_decrypt_1_svc();
252: #define KEY_GEN ((u_long)4)
253: extern des_block * key_gen_1();
254: extern des_block * key_gen_1_svc();
255: #define KEY_GETCRED ((u_long)5)
256: extern getcredres * key_getcred_1();
257: extern getcredres * key_getcred_1_svc();
258: #endif
259: #define KEY_VERS2 ((u_long)2)
260:
261: #ifdef __cplusplus
262: extern "C" keystatus * key_set_2(opaque *, CLIENT *);
263: extern "C" keystatus * key_set_2_svc(opaque *, struct svc_req *);
264: extern "C" cryptkeyres * key_encrypt_2(cryptkeyarg *, CLIENT *);
265: extern "C" cryptkeyres * key_encrypt_2_svc(cryptkeyarg *, struct svc_req *);
266: extern "C" cryptkeyres * key_decrypt_2(cryptkeyarg *, CLIENT *);
267: extern "C" cryptkeyres * key_decrypt_2_svc(cryptkeyarg *, struct svc_req *);
268: extern "C" des_block * key_gen_2(void *, CLIENT *);
269: extern "C" des_block * key_gen_2_svc(void *, struct svc_req *);
270: extern "C" getcredres * key_getcred_2(netnamestr *, CLIENT *);
271: extern "C" getcredres * key_getcred_2_svc(netnamestr *, struct svc_req *);
272: #define KEY_ENCRYPT_PK ((u_long)6)
273: extern "C" cryptkeyres * key_encrypt_pk_2(cryptkeyarg2 *, CLIENT *);
274: extern "C" cryptkeyres * key_encrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *);
275: #define KEY_DECRYPT_PK ((u_long)7)
276: extern "C" cryptkeyres * key_decrypt_pk_2(cryptkeyarg2 *, CLIENT *);
277: extern "C" cryptkeyres * key_decrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *);
278: #define KEY_NET_PUT ((u_long)8)
279: extern "C" keystatus * key_net_put_2(key_netstarg *, CLIENT *);
280: extern "C" keystatus * key_net_put_2_svc(key_netstarg *, struct svc_req *);
281: #define KEY_NET_GET ((u_long)9)
282: extern "C" key_netstres * key_net_get_2(void *, CLIENT *);
283: extern "C" key_netstres * key_net_get_2_svc(void *, struct svc_req *);
284: #define KEY_GET_CONV ((u_long)10)
285: extern "C" cryptkeyres * key_get_conv_2(opaque *, CLIENT *);
286: extern "C" cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *);
287:
288: #elif __STDC__
289: extern keystatus * key_set_2(opaque *, CLIENT *);
290: extern keystatus * key_set_2_svc(opaque *, struct svc_req *);
291: extern cryptkeyres * key_encrypt_2(cryptkeyarg *, CLIENT *);
292: extern cryptkeyres * key_encrypt_2_svc(cryptkeyarg *, struct svc_req *);
293: extern cryptkeyres * key_decrypt_2(cryptkeyarg *, CLIENT *);
294: extern cryptkeyres * key_decrypt_2_svc(cryptkeyarg *, struct svc_req *);
295: extern des_block * key_gen_2(void *, CLIENT *);
296: extern des_block * key_gen_2_svc(void *, struct svc_req *);
297: extern getcredres * key_getcred_2(netnamestr *, CLIENT *);
298: extern getcredres * key_getcred_2_svc(netnamestr *, struct svc_req *);
299: #define KEY_ENCRYPT_PK ((u_long)6)
300: extern cryptkeyres * key_encrypt_pk_2(cryptkeyarg2 *, CLIENT *);
301: extern cryptkeyres * key_encrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *);
302: #define KEY_DECRYPT_PK ((u_long)7)
303: extern cryptkeyres * key_decrypt_pk_2(cryptkeyarg2 *, CLIENT *);
304: extern cryptkeyres * key_decrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *);
305: #define KEY_NET_PUT ((u_long)8)
306: extern keystatus * key_net_put_2(key_netstarg *, CLIENT *);
307: extern keystatus * key_net_put_2_svc(key_netstarg *, struct svc_req *);
308: #define KEY_NET_GET ((u_long)9)
309: extern key_netstres * key_net_get_2(void *, CLIENT *);
310: extern key_netstres * key_net_get_2_svc(void *, struct svc_req *);
311: #define KEY_GET_CONV ((u_long)10)
312: extern cryptkeyres * key_get_conv_2(opaque *, CLIENT *);
313: extern cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *);
314:
315: #else
316: extern keystatus * key_set_2();
317: extern keystatus * key_set_2_svc();
318: extern cryptkeyres * key_encrypt_2();
319: extern cryptkeyres * key_encrypt_2_svc();
320: extern cryptkeyres * key_decrypt_2();
321: extern cryptkeyres * key_decrypt_2_svc();
322: extern des_block * key_gen_2();
323: extern des_block * key_gen_2_svc();
324: extern getcredres * key_getcred_2();
325: extern getcredres * key_getcred_2_svc();
326: #define KEY_ENCRYPT_PK ((u_long)6)
327: extern cryptkeyres * key_encrypt_pk_2();
328: extern cryptkeyres * key_encrypt_pk_2_svc();
329: #define KEY_DECRYPT_PK ((u_long)7)
330: extern cryptkeyres * key_decrypt_pk_2();
331: extern cryptkeyres * key_decrypt_pk_2_svc();
332: #define KEY_NET_PUT ((u_long)8)
333: extern keystatus * key_net_put_2();
334: extern keystatus * key_net_put_2_svc();
335: #define KEY_NET_GET ((u_long)9)
336: extern key_netstres * key_net_get_2();
337: extern key_netstres * key_net_get_2_svc();
338: #define KEY_GET_CONV ((u_long)10)
339: extern cryptkeyres * key_get_conv_2();
340: extern cryptkeyres * key_get_conv_2_svc();
341: #endif
342:
343: #endif
344:
© Andrew Scott 2006 -
2025,
All Rights Reserved