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 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 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 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