1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* tests/asn.1/krb5_encode_test.c */
3 /*
4 * Copyright (C) 1994 by the Massachusetts Institute of Technology.
5 * All rights reserved.
6 *
7 * Export of this software from the United States of America may
8 * require a specific license from the United States Government.
9 * It is the responsibility of any person or organization contemplating
10 * export to obtain such a license before exporting.
11 *
12 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13 * distribute this software and its documentation for any purpose and
14 * without fee is hereby granted, provided that the above copyright
15 * notice appear in all copies and that both that copyright notice and
16 * this permission notice appear in supporting documentation, and that
17 * the name of M.I.T. not be used in advertising or publicity pertaining
18 * to distribution of the software without specific, written prior
19 * permission. Furthermore if you modify this software you must label
20 * your software as modified software and not distribute it in such a
21 * fashion that it might be confused with the original M.I.T. software.
22 * M.I.T. makes no representations about the suitability of
23 * this software for any purpose. It is provided "as is" without express
24 * or implied warranty.
25 */
26
27 #include "k5-int.h"
28 #include "com_err.h"
29 #include "utility.h"
30
31 #include "ktest.h"
32 #include "debug.h"
33
34 extern int current_appl_type;
35
36 krb5_context test_context;
37 int error_count = 0;
38 int do_trval = 0;
39 int first_trval = 1;
40 int trval2(FILE *, unsigned char *, int, int, int *);
41
42 static void
encoder_print_results(krb5_data * code,char * typestring,char * description)43 encoder_print_results(krb5_data *code, char *typestring, char *description)
44 {
45 char *code_string = NULL;
46 int r, rlen;
47
48 if (do_trval) {
49 if (first_trval)
50 first_trval = 0;
51 else
52 printf("\n");
53 printf("encode_krb5_%s%s:\n", typestring, description);
54 r = trval2(stdout, (uint8_t *)code->data, code->length, 0, &rlen);
55 printf("\n");
56 if (rlen < 0 || (unsigned int) rlen != code->length) {
57 printf("Error: length mismatch: was %d, parsed %d\n",
58 code->length, rlen);
59 exit(1);
60 }
61 if (r != 0) {
62 printf("Error: Return from trval2 is %d.\n", r);
63 exit(1);
64 }
65 current_appl_type = -1; /* Reset type */
66 } else {
67 asn1_krb5_data_unparse(code,&(code_string));
68 printf("encode_krb5_%s%s: %s\n", typestring, description,
69 code_string);
70 free(code_string);
71 }
72 ktest_destroy_data(&code);
73 }
74
75 static void
PRS(int argc,char ** argv)76 PRS(int argc, char **argv)
77 {
78 extern char *optarg;
79 int optchar;
80 extern int print_types, print_krb5_types, print_id_and_len,
81 print_constructed_length, print_skip_context,
82 print_skip_tagnum, print_context_shortcut;
83
84 while ((optchar = getopt(argc, argv, "tp:")) != -1) {
85 switch(optchar) {
86 case 't':
87 do_trval = 1;
88 break;
89 case 'p':
90 sample_principal_name = optarg;
91 break;
92 case '?':
93 default:
94 fprintf(stderr, "Usage: %s [-t] [-p principal]\n",
95 argv[0]);
96 exit(1);
97 }
98 }
99 print_types = 1;
100 print_krb5_types = 1;
101 print_id_and_len = 0;
102 print_constructed_length = 0;
103 print_skip_context = 1;
104 print_skip_tagnum = 1;
105 print_context_shortcut = 1;
106 }
107
108 int
main(int argc,char ** argv)109 main(int argc, char **argv)
110 {
111 krb5_data *code;
112 krb5_error_code retval;
113
114 PRS(argc, argv);
115
116 retval = krb5_init_context(&test_context);
117 if (retval) {
118 com_err(argv[0], retval, "while initializing krb5");
119 exit(1);
120 }
121 init_access(argv[0]);
122
123 #define encode_run(value,typestring,description,encoder) \
124 retval = encoder(&(value),&(code)); \
125 if (retval) { \
126 com_err("krb5_encode_test", retval,"while encoding %s", typestring); \
127 exit(1); \
128 } \
129 encoder_print_results(code, typestring, description);
130
131 /****************************************************************/
132 /* encode_krb5_authenticator */
133 {
134 krb5_authenticator authent;
135 ktest_make_sample_authenticator(&authent);
136
137 encode_run(authent, "authenticator", "", encode_krb5_authenticator);
138
139 ktest_destroy_checksum(&(authent.checksum));
140 ktest_destroy_keyblock(&(authent.subkey));
141 authent.seq_number = 0;
142 ktest_empty_authorization_data(authent.authorization_data);
143 encode_run(authent, "authenticator", "(optionals empty)",
144 encode_krb5_authenticator);
145
146 ktest_destroy_authorization_data(&(authent.authorization_data));
147 encode_run(authent, "authenticator", "(optionals NULL)",
148 encode_krb5_authenticator);
149 ktest_empty_authenticator(&authent);
150 }
151
152 /****************************************************************/
153 /* encode_krb5_ticket */
154 {
155 krb5_ticket tkt;
156 ktest_make_sample_ticket(&tkt);
157 encode_run(tkt, "ticket", "", encode_krb5_ticket);
158 ktest_empty_ticket(&tkt);
159 }
160
161 /****************************************************************/
162 /* encode_krb5_encryption_key */
163 {
164 krb5_keyblock keyblk;
165 ktest_make_sample_keyblock(&keyblk);
166 current_appl_type = 1005;
167 encode_run(keyblk, "keyblock", "", encode_krb5_encryption_key);
168 ktest_empty_keyblock(&keyblk);
169 }
170
171 /****************************************************************/
172 /* encode_krb5_enc_tkt_part */
173 {
174 krb5_ticket tkt;
175 memset(&tkt, 0, sizeof(krb5_ticket));
176 tkt.enc_part2 = ealloc(sizeof(krb5_enc_tkt_part));
177 ktest_make_sample_enc_tkt_part(tkt.enc_part2);
178
179 encode_run(*tkt.enc_part2, "enc_tkt_part", "",
180 encode_krb5_enc_tkt_part);
181
182 tkt.enc_part2->times.starttime = 0;
183 tkt.enc_part2->times.renew_till = 0;
184 ktest_destroy_address(&(tkt.enc_part2->caddrs[1]));
185 ktest_destroy_address(&(tkt.enc_part2->caddrs[0]));
186 ktest_destroy_authdata(&(tkt.enc_part2->authorization_data[1]));
187 ktest_destroy_authdata(&(tkt.enc_part2->authorization_data[0]));
188
189 /* ISODE version fails on the empty caddrs field */
190 ktest_destroy_addresses(&(tkt.enc_part2->caddrs));
191 ktest_destroy_authorization_data(&(tkt.enc_part2->authorization_data));
192
193 encode_run(*tkt.enc_part2, "enc_tkt_part", "(optionals NULL)",
194 encode_krb5_enc_tkt_part);
195 ktest_empty_ticket(&tkt);
196 }
197
198 /****************************************************************/
199 /* encode_krb5_enc_kdc_rep_part */
200 {
201 krb5_kdc_rep kdcr;
202
203 memset(&kdcr, 0, sizeof(kdcr));
204
205 kdcr.enc_part2 = ealloc(sizeof(krb5_enc_kdc_rep_part));
206 ktest_make_sample_enc_kdc_rep_part(kdcr.enc_part2);
207
208 encode_run(*kdcr.enc_part2, "enc_kdc_rep_part", "",
209 encode_krb5_enc_kdc_rep_part);
210
211 kdcr.enc_part2->key_exp = 0;
212 kdcr.enc_part2->times.starttime = 0;
213 kdcr.enc_part2->flags &= ~TKT_FLG_RENEWABLE;
214 ktest_destroy_addresses(&(kdcr.enc_part2->caddrs));
215
216 encode_run(*kdcr.enc_part2, "enc_kdc_rep_part", "(optionals NULL)",
217 encode_krb5_enc_kdc_rep_part);
218
219 ktest_empty_kdc_rep(&kdcr);
220 }
221
222 /****************************************************************/
223 /* encode_krb5_as_rep */
224 {
225 krb5_kdc_rep kdcr;
226 ktest_make_sample_kdc_rep(&kdcr);
227
228 /* kdcr.msg_type = KRB5_TGS_REP;
229 test(encode_krb5_as_rep(&kdcr,&code) == KRB5_BADMSGTYPE,
230 "encode_krb5_as_rep type check\n");
231 ktest_destroy_data(&code);*/
232
233 kdcr.msg_type = KRB5_AS_REP;
234 encode_run(kdcr, "as_rep", "", encode_krb5_as_rep);
235
236 ktest_destroy_pa_data_array(&(kdcr.padata));
237 encode_run(kdcr, "as_rep", "(optionals NULL)", encode_krb5_as_rep);
238
239 ktest_empty_kdc_rep(&kdcr);
240
241 }
242
243 /****************************************************************/
244 /* encode_krb5_tgs_rep */
245 {
246 krb5_kdc_rep kdcr;
247 ktest_make_sample_kdc_rep(&kdcr);
248
249 /* kdcr.msg_type = KRB5_AS_REP;
250 test(encode_krb5_tgs_rep(&kdcr,&code) == KRB5_BADMSGTYPE,
251 "encode_krb5_tgs_rep type check\n");*/
252
253 kdcr.msg_type = KRB5_TGS_REP;
254 encode_run(kdcr, "tgs_rep", "", encode_krb5_tgs_rep);
255
256 ktest_destroy_pa_data_array(&(kdcr.padata));
257 encode_run(kdcr, "tgs_rep", "(optionals NULL)", encode_krb5_tgs_rep);
258
259 ktest_empty_kdc_rep(&kdcr);
260
261 }
262
263 /****************************************************************/
264 /* encode_krb5_ap_req */
265 {
266 krb5_ap_req apreq;
267 ktest_make_sample_ap_req(&apreq);
268 encode_run(apreq, "ap_req", "", encode_krb5_ap_req);
269 ktest_empty_ap_req(&apreq);
270 }
271
272 /****************************************************************/
273 /* encode_krb5_ap_rep */
274 {
275 krb5_ap_rep aprep;
276 ktest_make_sample_ap_rep(&aprep);
277 encode_run(aprep, "ap_rep", "", encode_krb5_ap_rep);
278 ktest_empty_ap_rep(&aprep);
279 }
280
281 /****************************************************************/
282 /* encode_krb5_ap_rep_enc_part */
283 {
284 krb5_ap_rep_enc_part apenc;
285 ktest_make_sample_ap_rep_enc_part(&apenc);
286 encode_run(apenc, "ap_rep_enc_part", "", encode_krb5_ap_rep_enc_part);
287
288 ktest_destroy_keyblock(&(apenc.subkey));
289 apenc.seq_number = 0;
290 encode_run(apenc, "ap_rep_enc_part", "(optionals NULL)",
291 encode_krb5_ap_rep_enc_part);
292 ktest_empty_ap_rep_enc_part(&apenc);
293 }
294
295 /****************************************************************/
296 /* encode_krb5_as_req */
297 {
298 krb5_kdc_req asreq;
299 ktest_make_sample_kdc_req(&asreq);
300 asreq.msg_type = KRB5_AS_REQ;
301 asreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
302 encode_run(asreq, "as_req", "", encode_krb5_as_req);
303
304 ktest_destroy_pa_data_array(&(asreq.padata));
305 ktest_destroy_principal(&(asreq.client));
306 #ifndef ISODE_SUCKS
307 ktest_destroy_principal(&(asreq.server));
308 #endif
309 asreq.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
310 asreq.from = 0;
311 asreq.rtime = 0;
312 ktest_destroy_addresses(&(asreq.addresses));
313 ktest_destroy_enc_data(&(asreq.authorization_data));
314 encode_run(asreq, "as_req", "(optionals NULL except second_ticket)",
315 encode_krb5_as_req);
316 ktest_destroy_sequence_of_ticket(&(asreq.second_ticket));
317 #ifndef ISODE_SUCKS
318 ktest_make_sample_principal(&(asreq.server));
319 #endif
320 asreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
321 encode_run(asreq, "as_req", "(optionals NULL except server)",
322 encode_krb5_as_req);
323 ktest_empty_kdc_req(&asreq);
324 }
325
326 /****************************************************************/
327 /* encode_krb5_tgs_req */
328 {
329 krb5_kdc_req tgsreq;
330 ktest_make_sample_kdc_req(&tgsreq);
331 tgsreq.msg_type = KRB5_TGS_REQ;
332 tgsreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
333 encode_run(tgsreq, "tgs_req", "", encode_krb5_tgs_req);
334
335 ktest_destroy_pa_data_array(&(tgsreq.padata));
336 ktest_destroy_principal(&(tgsreq.client));
337 #ifndef ISODE_SUCKS
338 ktest_destroy_principal(&(tgsreq.server));
339 #endif
340 tgsreq.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
341 tgsreq.from = 0;
342 tgsreq.rtime = 0;
343 ktest_destroy_addresses(&(tgsreq.addresses));
344 ktest_destroy_enc_data(&(tgsreq.authorization_data));
345 encode_run(tgsreq, "tgs_req", "(optionals NULL except second_ticket)",
346 encode_krb5_tgs_req);
347
348 ktest_destroy_sequence_of_ticket(&(tgsreq.second_ticket));
349 #ifndef ISODE_SUCKS
350 ktest_make_sample_principal(&(tgsreq.server));
351 #endif
352 tgsreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
353 encode_run(tgsreq, "tgs_req", "(optionals NULL except server)",
354 encode_krb5_tgs_req);
355
356 ktest_empty_kdc_req(&tgsreq);
357 }
358
359 /****************************************************************/
360 /* encode_krb5_kdc_req_body */
361 {
362 krb5_kdc_req kdcrb;
363 memset(&kdcrb, 0, sizeof(kdcrb));
364 ktest_make_sample_kdc_req_body(&kdcrb);
365 kdcrb.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
366 current_appl_type = 1007; /* Force interpretation as kdc-req-body */
367 encode_run(kdcrb, "kdc_req_body", "", encode_krb5_kdc_req_body);
368
369 ktest_destroy_principal(&(kdcrb.client));
370 #ifndef ISODE_SUCKS
371 ktest_destroy_principal(&(kdcrb.server));
372 #endif
373 kdcrb.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
374 kdcrb.from = 0;
375 kdcrb.rtime = 0;
376 ktest_destroy_addresses(&(kdcrb.addresses));
377 ktest_destroy_enc_data(&(kdcrb.authorization_data));
378 current_appl_type = 1007; /* Force interpretation as kdc-req-body */
379 encode_run(kdcrb, "kdc_req_body",
380 "(optionals NULL except second_ticket)",
381 encode_krb5_kdc_req_body);
382
383 ktest_destroy_sequence_of_ticket(&(kdcrb.second_ticket));
384 #ifndef ISODE_SUCKS
385 ktest_make_sample_principal(&(kdcrb.server));
386 #endif
387 kdcrb.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
388 current_appl_type = 1007; /* Force interpretation as kdc-req-body */
389 encode_run(kdcrb, "kdc_req_body", "(optionals NULL except server)",
390 encode_krb5_kdc_req_body);
391
392 ktest_empty_kdc_req(&kdcrb);
393 }
394
395 /****************************************************************/
396 /* encode_krb5_safe */
397 {
398 krb5_safe s;
399 ktest_make_sample_safe(&s);
400 encode_run(s, "safe", "", encode_krb5_safe);
401
402 s.timestamp = 0;
403 /* s.usec should be opted out by the timestamp */
404 s.seq_number = 0;
405 ktest_destroy_address(&(s.r_address));
406 encode_run(s, "safe", "(optionals NULL)", encode_krb5_safe);
407
408 ktest_empty_safe(&s);
409 }
410
411 /****************************************************************/
412 /* encode_krb5_priv */
413 {
414 krb5_priv p;
415 ktest_make_sample_priv(&p);
416 encode_run(p, "priv", "", encode_krb5_priv);
417 ktest_empty_priv(&p);
418 }
419
420 /****************************************************************/
421 /* encode_krb5_enc_priv_part */
422 {
423 krb5_priv_enc_part ep;
424 ktest_make_sample_priv_enc_part(&ep);
425 encode_run(ep, "enc_priv_part", "", encode_krb5_enc_priv_part);
426
427 ep.timestamp = 0;
428 /* ep.usec should be opted out along with timestamp */
429 ep.seq_number = 0;
430 ktest_destroy_address(&(ep.r_address));
431 encode_run(ep, "enc_priv_part", "(optionals NULL)",
432 encode_krb5_enc_priv_part);
433
434 ktest_empty_priv_enc_part(&ep);
435 }
436
437 /****************************************************************/
438 /* encode_krb5_cred */
439 {
440 krb5_cred c;
441 ktest_make_sample_cred(&c);
442 encode_run(c, "cred", "", encode_krb5_cred);
443 ktest_empty_cred(&c);
444 }
445
446 /****************************************************************/
447 /* encode_krb5_enc_cred_part */
448 {
449 krb5_cred_enc_part cep;
450 ktest_make_sample_cred_enc_part(&cep);
451 encode_run(cep, "enc_cred_part", "", encode_krb5_enc_cred_part);
452
453 ktest_destroy_principal(&(cep.ticket_info[0]->client));
454 ktest_destroy_principal(&(cep.ticket_info[0]->server));
455 cep.ticket_info[0]->flags = 0;
456 cep.ticket_info[0]->times.authtime = 0;
457 cep.ticket_info[0]->times.starttime = 0;
458 cep.ticket_info[0]->times.endtime = 0;
459 cep.ticket_info[0]->times.renew_till = 0;
460 ktest_destroy_addresses(&(cep.ticket_info[0]->caddrs));
461 cep.nonce = 0;
462 cep.timestamp = 0;
463 ktest_destroy_address(&(cep.s_address));
464 ktest_destroy_address(&(cep.r_address));
465 encode_run(cep, "enc_cred_part", "(optionals NULL)",
466 encode_krb5_enc_cred_part);
467
468 ktest_empty_cred_enc_part(&cep);
469 }
470
471 /****************************************************************/
472 /* encode_krb5_error */
473 {
474 krb5_error kerr;
475 ktest_make_sample_error(&kerr);
476 encode_run(kerr, "error", "", encode_krb5_error);
477
478 kerr.ctime = 0;
479 ktest_destroy_principal(&(kerr.client));
480 ktest_empty_data(&(kerr.text));
481 ktest_empty_data(&(kerr.e_data));
482 encode_run(kerr, "error", "(optionals NULL)", encode_krb5_error);
483
484 ktest_empty_error(&kerr);
485 }
486
487 /****************************************************************/
488 /* encode_krb5_authdata */
489 {
490 krb5_authdata **ad;
491 ktest_make_sample_authorization_data(&ad);
492
493 retval = encode_krb5_authdata(ad,&(code));
494 if (retval) {
495 com_err("encoding authorization_data",retval,"");
496 exit(1);
497 }
498 current_appl_type = 1004; /* Force type to be authdata */
499 encoder_print_results(code, "authorization_data", "");
500
501 ktest_destroy_authorization_data(&ad);
502 }
503
504 /****************************************************************/
505 /* encode_padata_sequence and encode_krb5_typed_data */
506 {
507 krb5_pa_data **pa;
508
509 ktest_make_sample_pa_data_array(&pa);
510 encode_run(*pa, "padata_sequence", "", encode_krb5_padata_sequence);
511 encode_run(*pa, "typed_data", "", encode_krb5_typed_data);
512 ktest_destroy_pa_data_array(&pa);
513
514 ktest_make_sample_empty_pa_data_array(&pa);
515 encode_run(*pa, "padata_sequence", "(empty)",
516 encode_krb5_padata_sequence);
517 ktest_destroy_pa_data_array(&pa);
518 }
519
520 /****************************************************************/
521 /* encode_etype_info */
522 {
523 krb5_etype_info_entry **info;
524
525 ktest_make_sample_etype_info(&info);
526 encode_run(*info, "etype_info", "", encode_krb5_etype_info);
527
528 ktest_destroy_etype_info_entry(info[2]); info[2] = 0;
529 ktest_destroy_etype_info_entry(info[1]); info[1] = 0;
530 encode_run(*info, "etype_info", "(only 1)", encode_krb5_etype_info);
531
532 ktest_destroy_etype_info_entry(info[0]); info[0] = 0;
533 encode_run(*info, "etype_info", "(no info)", encode_krb5_etype_info);
534
535 ktest_destroy_etype_info(info);
536 }
537
538 /* encode_etype_info2 */
539 {
540 krb5_etype_info_entry **info;
541
542 ktest_make_sample_etype_info2(&info);
543 encode_run(*info, "etype_info2", "", encode_krb5_etype_info2);
544
545 ktest_destroy_etype_info_entry(info[2]); info[2] = 0;
546 ktest_destroy_etype_info_entry(info[1]); info[1] = 0;
547 encode_run(*info, "etype_info2", "(only 1)", encode_krb5_etype_info2);
548
549 /* etype_info2 sequences aren't allowed to be empty. */
550
551 ktest_destroy_etype_info(info);
552 }
553
554 /****************************************************************/
555 /* encode_pa_enc_ts */
556 {
557 krb5_pa_enc_ts pa_enc;
558 ktest_make_sample_pa_enc_ts(&pa_enc);
559 encode_run(pa_enc, "pa_enc_ts", "", encode_krb5_pa_enc_ts);
560 pa_enc.pausec = 0;
561 encode_run(pa_enc, "pa_enc_ts (no usec)", "", encode_krb5_pa_enc_ts);
562 }
563
564 /****************************************************************/
565 /* encode_enc_data */
566 {
567 krb5_enc_data enc_data;
568 ktest_make_sample_enc_data(&enc_data);
569 current_appl_type = 1001;
570 encode_run(enc_data, "enc_data", "", encode_krb5_enc_data);
571 enc_data.kvno = 0xFF000000;
572 current_appl_type = 1001;
573 encode_run(enc_data, "enc_data", "(MSB-set kvno)",
574 encode_krb5_enc_data);
575 enc_data.kvno = 0xFFFFFFFF;
576 current_appl_type = 1001;
577 encode_run(enc_data, "enc_data", "(kvno=-1)", encode_krb5_enc_data);
578 ktest_destroy_enc_data(&enc_data);
579 }
580 /****************************************************************/
581 /* encode_krb5_sam_challenge_2 */
582 {
583 krb5_sam_challenge_2 sam_ch2;
584 ktest_make_sample_sam_challenge_2(&sam_ch2);
585 encode_run(sam_ch2, "sam_challenge_2", "",
586 encode_krb5_sam_challenge_2);
587 ktest_empty_sam_challenge_2(&sam_ch2);
588 }
589 /****************************************************************/
590 /* encode_krb5_sam_challenge_2_body */
591 {
592 krb5_sam_challenge_2_body body;
593 ktest_make_sample_sam_challenge_2_body(&body);
594 encode_run(body, "sam_challenge_2_body", "",
595 encode_krb5_sam_challenge_2_body);
596 ktest_empty_sam_challenge_2_body(&body);
597 }
598 /****************************************************************/
599 /* encode_krb5_sam_response_2 */
600 {
601 krb5_sam_response_2 sam_ch2;
602 ktest_make_sample_sam_response_2(&sam_ch2);
603 encode_run(sam_ch2, "sam_response_2", "", encode_krb5_sam_response_2);
604 ktest_empty_sam_response_2(&sam_ch2);
605 }
606 /****************************************************************/
607 /* encode_krb5_sam_response_enc_2 */
608 {
609 krb5_enc_sam_response_enc_2 sam_ch2;
610 ktest_make_sample_enc_sam_response_enc_2(&sam_ch2);
611 encode_run(sam_ch2, "enc_sam_response_enc_2", "",
612 encode_krb5_enc_sam_response_enc_2);
613 ktest_empty_enc_sam_response_enc_2(&sam_ch2);
614 }
615 /****************************************************************/
616 /* encode_krb5_pa_for_user */
617 {
618 krb5_pa_for_user s4u;
619 ktest_make_sample_pa_for_user(&s4u);
620 encode_run(s4u, "pa_for_user", "", encode_krb5_pa_for_user);
621 ktest_empty_pa_for_user(&s4u);
622 }
623 /****************************************************************/
624 /* encode_krb5_pa_s4u_x509_user */
625 {
626 krb5_pa_s4u_x509_user s4u;
627 ktest_make_sample_pa_s4u_x509_user(&s4u);
628 encode_run(s4u, "pa_s4u_x509_user", "", encode_krb5_pa_s4u_x509_user);
629 ktest_empty_pa_s4u_x509_user(&s4u);
630 }
631 /****************************************************************/
632 /* encode_krb5_ad_kdcissued */
633 {
634 krb5_ad_kdcissued kdci;
635 ktest_make_sample_ad_kdcissued(&kdci);
636 encode_run(kdci, "ad_kdcissued", "", encode_krb5_ad_kdcissued);
637 ktest_empty_ad_kdcissued(&kdci);
638 }
639 /****************************************************************/
640 /* encode_krb5_iakerb_header */
641 {
642 krb5_iakerb_header ih;
643 ktest_make_sample_iakerb_header(&ih);
644 encode_run(ih, "iakerb_header", "", encode_krb5_iakerb_header);
645 ktest_empty_iakerb_header(&ih);
646 }
647 /****************************************************************/
648 /* encode_krb5_iakerb_finished */
649 {
650 krb5_iakerb_finished ih;
651 ktest_make_sample_iakerb_finished(&ih);
652 encode_run(ih, "iakerb_finished", "", encode_krb5_iakerb_finished);
653 ktest_empty_iakerb_finished(&ih);
654 }
655 /****************************************************************/
656 /* encode_krb5_fast_response */
657 {
658 krb5_fast_response fr;
659 ktest_make_sample_fast_response(&fr);
660 encode_run(fr, "fast_response", "", encode_krb5_fast_response);
661 ktest_empty_fast_response(&fr);
662 }
663 /****************************************************************/
664 /* encode_krb5_pa_fx_fast_reply */
665 {
666 krb5_enc_data enc_data;
667 ktest_make_sample_enc_data(&enc_data);
668 encode_run(enc_data, "pa_fx_fast_reply", "",
669 encode_krb5_pa_fx_fast_reply);
670 ktest_destroy_enc_data(&enc_data);
671 }
672 /****************************************************************/
673 /* encode_krb5_otp_tokeninfo */
674 {
675 krb5_otp_tokeninfo ti;
676 ktest_make_minimal_otp_tokeninfo(&ti);
677 encode_run(ti, "otp_tokeninfo", "(optionals NULL)",
678 encode_krb5_otp_tokeninfo);
679 ktest_empty_otp_tokeninfo(&ti);
680 ktest_make_maximal_otp_tokeninfo(&ti);
681 encode_run(ti, "otp_tokeninfo", "", encode_krb5_otp_tokeninfo);
682 ktest_empty_otp_tokeninfo(&ti);
683 }
684 /****************************************************************/
685 /* encode_krb5_pa_otp_challenge */
686 {
687 krb5_pa_otp_challenge ch;
688 ktest_make_minimal_pa_otp_challenge(&ch);
689 encode_run(ch, "pa_otp_challenge", "(optionals NULL)",
690 encode_krb5_pa_otp_challenge);
691 ktest_empty_pa_otp_challenge(&ch);
692 ktest_make_maximal_pa_otp_challenge(&ch);
693 encode_run(ch, "pa_otp_challenge", "", encode_krb5_pa_otp_challenge);
694 ktest_empty_pa_otp_challenge(&ch);
695 }
696 /****************************************************************/
697 /* encode_krb5_pa_otp_req */
698 {
699 krb5_pa_otp_req req;
700 ktest_make_minimal_pa_otp_req(&req);
701 encode_run(req, "pa_otp_req", "(optionals NULL)",
702 encode_krb5_pa_otp_req);
703 ktest_empty_pa_otp_req(&req);
704 ktest_make_maximal_pa_otp_req(&req);
705 encode_run(req, "pa_otp_req", "", encode_krb5_pa_otp_req);
706 ktest_empty_pa_otp_req(&req);
707 }
708 /****************************************************************/
709 /* encode_krb5_pa_otp_enc_request */
710 {
711 krb5_data d;
712 ktest_make_sample_data(&d);
713 encode_run(d, "pa_otp_enc_req", "", encode_krb5_pa_otp_enc_req);
714 ktest_empty_data(&d);
715 }
716 /****************************************************************/
717 /* encode_krb5_kkdcp_message */
718 {
719 krb5_kkdcp_message info;
720 ktest_make_sample_kkdcp_message(&info);
721 encode_run(info, "kkdcp_message", "", encode_krb5_kkdcp_message);
722 ktest_empty_kkdcp_message(&info);
723 }
724 /* encode_krb5_cammac */
725 {
726 krb5_cammac req;
727 ktest_make_minimal_cammac(&req);
728 encode_run(req, "cammac", "(optionals NULL)", encode_krb5_cammac);
729 ktest_empty_cammac(&req);
730 ktest_make_maximal_cammac(&req);
731 encode_run(req, "cammac", "", encode_krb5_cammac);
732 ktest_empty_cammac(&req);
733 }
734 /****************************************************************/
735 /* encode_krb5_secure_cookie */
736 {
737 krb5_secure_cookie cookie;
738 ktest_make_sample_secure_cookie(&cookie);
739 encode_run(cookie, "secure_cookie", "", encode_krb5_secure_cookie);
740 ktest_empty_secure_cookie(&cookie);
741 }
742 /****************************************************************/
743 /* encode_krb5_spake_factor */
744 {
745 krb5_spake_factor factor;
746 ktest_make_minimal_spake_factor(&factor);
747 encode_run(factor, "spake_factor", "(optionals NULL)",
748 encode_krb5_spake_factor);
749 ktest_empty_spake_factor(&factor);
750 ktest_make_maximal_spake_factor(&factor);
751 encode_run(factor, "spake_factor", "", encode_krb5_spake_factor);
752 ktest_empty_spake_factor(&factor);
753 }
754 /****************************************************************/
755 /* encode_krb5_pa_spake */
756 {
757 krb5_pa_spake pa_spake;
758 ktest_make_support_pa_spake(&pa_spake);
759 encode_run(pa_spake, "pa_spake", "(support)", encode_krb5_pa_spake);
760 ktest_empty_pa_spake(&pa_spake);
761 ktest_make_challenge_pa_spake(&pa_spake);
762 encode_run(pa_spake, "pa_spake", "(challenge)", encode_krb5_pa_spake);
763 ktest_empty_pa_spake(&pa_spake);
764 ktest_make_response_pa_spake(&pa_spake);
765 encode_run(pa_spake, "pa_spake", "(response)", encode_krb5_pa_spake);
766 ktest_empty_pa_spake(&pa_spake);
767 ktest_make_encdata_pa_spake(&pa_spake);
768 encode_run(pa_spake, "pa_spake", "(encdata)", encode_krb5_pa_spake);
769 ktest_empty_pa_spake(&pa_spake);
770 }
771 #ifndef DISABLE_PKINIT
772 /****************************************************************/
773 /* encode_krb5_pa_pk_as_req */
774 {
775 krb5_pa_pk_as_req req;
776 ktest_make_sample_pa_pk_as_req(&req);
777 encode_run(req, "pa_pk_as_req", "", acc.encode_krb5_pa_pk_as_req);
778 ktest_empty_pa_pk_as_req(&req);
779 }
780 /****************************************************************/
781 /* encode_krb5_pa_pk_as_rep */
782 {
783 krb5_pa_pk_as_rep rep;
784 ktest_make_sample_pa_pk_as_rep_dhInfo(&rep);
785 encode_run(rep, "pa_pk_as_rep", "(dhInfo)",
786 acc.encode_krb5_pa_pk_as_rep);
787 ktest_empty_pa_pk_as_rep(&rep);
788 ktest_make_sample_pa_pk_as_rep_encKeyPack(&rep);
789 encode_run(rep, "pa_pk_as_rep", "(encKeyPack)",
790 acc.encode_krb5_pa_pk_as_rep);
791 ktest_empty_pa_pk_as_rep(&rep);
792 }
793 /****************************************************************/
794 /* encode_krb5_auth_pack */
795 {
796 krb5_auth_pack pack;
797 ktest_make_sample_auth_pack(&pack);
798 encode_run(pack, "auth_pack", "", acc.encode_krb5_auth_pack);
799 ktest_empty_auth_pack(&pack);
800 }
801 /****************************************************************/
802 /* encode_krb5_kdc_dh_key_info */
803 {
804 krb5_kdc_dh_key_info ki;
805 ktest_make_sample_kdc_dh_key_info(&ki);
806 encode_run(ki, "kdc_dh_key_info", "", acc.encode_krb5_kdc_dh_key_info);
807 ktest_empty_kdc_dh_key_info(&ki);
808 }
809 /****************************************************************/
810 /* encode_krb5_reply_key_pack */
811 {
812 krb5_reply_key_pack pack;
813 ktest_make_sample_reply_key_pack(&pack);
814 encode_run(pack, "reply_key_pack", "", acc.encode_krb5_reply_key_pack);
815 ktest_empty_reply_key_pack(&pack);
816 }
817 /****************************************************************/
818 /* encode_krb5_sp80056a_other_info */
819 {
820 krb5_sp80056a_other_info info;
821 ktest_make_sample_sp80056a_other_info(&info);
822 encode_run(info, "sp80056a_other_info", "",
823 encode_krb5_sp80056a_other_info);
824 ktest_empty_sp80056a_other_info(&info);
825 }
826 /****************************************************************/
827 /* encode_krb5_pkinit_supp_pub_info */
828 {
829 krb5_pkinit_supp_pub_info info;
830 ktest_make_sample_pkinit_supp_pub_info(&info);
831 encode_run(info, "pkinit_supp_pub_info", "",
832 encode_krb5_pkinit_supp_pub_info);
833 ktest_empty_pkinit_supp_pub_info(&info);
834 }
835 #endif /* not DISABLE_PKINIT */
836 #ifdef ENABLE_LDAP
837 {
838 ldap_seqof_key_data skd;
839
840 ktest_make_sample_ldap_seqof_key_data(&skd);
841 encode_run(skd, "ldap_seqof_key_data", "",
842 acc.asn1_ldap_encode_sequence_of_keys);
843 ktest_empty_ldap_seqof_key_data(&skd);
844 }
845 #endif
846
847 krb5_free_context(test_context);
848 exit(error_count);
849 return(error_count);
850 }
851