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