Path: blob/main/crypto/krb5/src/tests/asn.1/krb5_encode_test.c
34907 views
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */1/* tests/asn.1/krb5_encode_test.c */2/*3* Copyright (C) 1994 by the Massachusetts Institute of Technology.4* All rights reserved.5*6* Export of this software from the United States of America may7* require a specific license from the United States Government.8* It is the responsibility of any person or organization contemplating9* export to obtain such a license before exporting.10*11* WITHIN THAT CONSTRAINT, permission to use, copy, modify, and12* distribute this software and its documentation for any purpose and13* without fee is hereby granted, provided that the above copyright14* notice appear in all copies and that both that copyright notice and15* this permission notice appear in supporting documentation, and that16* the name of M.I.T. not be used in advertising or publicity pertaining17* to distribution of the software without specific, written prior18* permission. Furthermore if you modify this software you must label19* your software as modified software and not distribute it in such a20* fashion that it might be confused with the original M.I.T. software.21* M.I.T. makes no representations about the suitability of22* this software for any purpose. It is provided "as is" without express23* or implied warranty.24*/2526#include "k5-int.h"27#include "com_err.h"28#include "utility.h"2930#include "ktest.h"31#include "debug.h"3233extern int current_appl_type;3435krb5_context test_context;36int error_count = 0;37int do_trval = 0;38int first_trval = 1;39int trval2(FILE *, unsigned char *, int, int, int *);4041static void42encoder_print_results(krb5_data *code, char *typestring, char *description)43{44char *code_string = NULL;45int r, rlen;4647if (do_trval) {48if (first_trval)49first_trval = 0;50else51printf("\n");52printf("encode_krb5_%s%s:\n", typestring, description);53r = trval2(stdout, (uint8_t *)code->data, code->length, 0, &rlen);54printf("\n");55if (rlen < 0 || (unsigned int) rlen != code->length) {56printf("Error: length mismatch: was %d, parsed %d\n",57code->length, rlen);58exit(1);59}60if (r != 0) {61printf("Error: Return from trval2 is %d.\n", r);62exit(1);63}64current_appl_type = -1; /* Reset type */65} else {66asn1_krb5_data_unparse(code,&(code_string));67printf("encode_krb5_%s%s: %s\n", typestring, description,68code_string);69free(code_string);70}71ktest_destroy_data(&code);72}7374static void75PRS(int argc, char **argv)76{77extern char *optarg;78int optchar;79extern int print_types, print_krb5_types, print_id_and_len,80print_constructed_length, print_skip_context,81print_skip_tagnum, print_context_shortcut;8283while ((optchar = getopt(argc, argv, "tp:")) != -1) {84switch(optchar) {85case 't':86do_trval = 1;87break;88case 'p':89sample_principal_name = optarg;90break;91case '?':92default:93fprintf(stderr, "Usage: %s [-t] [-p principal]\n",94argv[0]);95exit(1);96}97}98print_types = 1;99print_krb5_types = 1;100print_id_and_len = 0;101print_constructed_length = 0;102print_skip_context = 1;103print_skip_tagnum = 1;104print_context_shortcut = 1;105}106107int108main(int argc, char **argv)109{110krb5_data *code;111krb5_error_code retval;112113PRS(argc, argv);114115retval = krb5_init_context(&test_context);116if (retval) {117com_err(argv[0], retval, "while initializing krb5");118exit(1);119}120init_access(argv[0]);121122#define encode_run(value,typestring,description,encoder) \123retval = encoder(&(value),&(code)); \124if (retval) { \125com_err("krb5_encode_test", retval,"while encoding %s", typestring); \126exit(1); \127} \128encoder_print_results(code, typestring, description);129130/****************************************************************/131/* encode_krb5_authenticator */132{133krb5_authenticator authent;134ktest_make_sample_authenticator(&authent);135136encode_run(authent, "authenticator", "", encode_krb5_authenticator);137138ktest_destroy_checksum(&(authent.checksum));139ktest_destroy_keyblock(&(authent.subkey));140authent.seq_number = 0;141ktest_empty_authorization_data(authent.authorization_data);142encode_run(authent, "authenticator", "(optionals empty)",143encode_krb5_authenticator);144145ktest_destroy_authorization_data(&(authent.authorization_data));146encode_run(authent, "authenticator", "(optionals NULL)",147encode_krb5_authenticator);148ktest_empty_authenticator(&authent);149}150151/****************************************************************/152/* encode_krb5_ticket */153{154krb5_ticket tkt;155ktest_make_sample_ticket(&tkt);156encode_run(tkt, "ticket", "", encode_krb5_ticket);157ktest_empty_ticket(&tkt);158}159160/****************************************************************/161/* encode_krb5_encryption_key */162{163krb5_keyblock keyblk;164ktest_make_sample_keyblock(&keyblk);165current_appl_type = 1005;166encode_run(keyblk, "keyblock", "", encode_krb5_encryption_key);167ktest_empty_keyblock(&keyblk);168}169170/****************************************************************/171/* encode_krb5_enc_tkt_part */172{173krb5_ticket tkt;174memset(&tkt, 0, sizeof(krb5_ticket));175tkt.enc_part2 = ealloc(sizeof(krb5_enc_tkt_part));176ktest_make_sample_enc_tkt_part(tkt.enc_part2);177178encode_run(*tkt.enc_part2, "enc_tkt_part", "",179encode_krb5_enc_tkt_part);180181tkt.enc_part2->times.starttime = 0;182tkt.enc_part2->times.renew_till = 0;183ktest_destroy_address(&(tkt.enc_part2->caddrs[1]));184ktest_destroy_address(&(tkt.enc_part2->caddrs[0]));185ktest_destroy_authdata(&(tkt.enc_part2->authorization_data[1]));186ktest_destroy_authdata(&(tkt.enc_part2->authorization_data[0]));187188/* ISODE version fails on the empty caddrs field */189ktest_destroy_addresses(&(tkt.enc_part2->caddrs));190ktest_destroy_authorization_data(&(tkt.enc_part2->authorization_data));191192encode_run(*tkt.enc_part2, "enc_tkt_part", "(optionals NULL)",193encode_krb5_enc_tkt_part);194ktest_empty_ticket(&tkt);195}196197/****************************************************************/198/* encode_krb5_enc_kdc_rep_part */199{200krb5_kdc_rep kdcr;201202memset(&kdcr, 0, sizeof(kdcr));203204kdcr.enc_part2 = ealloc(sizeof(krb5_enc_kdc_rep_part));205ktest_make_sample_enc_kdc_rep_part(kdcr.enc_part2);206207encode_run(*kdcr.enc_part2, "enc_kdc_rep_part", "",208encode_krb5_enc_kdc_rep_part);209210kdcr.enc_part2->key_exp = 0;211kdcr.enc_part2->times.starttime = 0;212kdcr.enc_part2->flags &= ~TKT_FLG_RENEWABLE;213ktest_destroy_addresses(&(kdcr.enc_part2->caddrs));214215encode_run(*kdcr.enc_part2, "enc_kdc_rep_part", "(optionals NULL)",216encode_krb5_enc_kdc_rep_part);217218ktest_empty_kdc_rep(&kdcr);219}220221/****************************************************************/222/* encode_krb5_as_rep */223{224krb5_kdc_rep kdcr;225ktest_make_sample_kdc_rep(&kdcr);226227/* kdcr.msg_type = KRB5_TGS_REP;228test(encode_krb5_as_rep(&kdcr,&code) == KRB5_BADMSGTYPE,229"encode_krb5_as_rep type check\n");230ktest_destroy_data(&code);*/231232kdcr.msg_type = KRB5_AS_REP;233encode_run(kdcr, "as_rep", "", encode_krb5_as_rep);234235ktest_destroy_pa_data_array(&(kdcr.padata));236encode_run(kdcr, "as_rep", "(optionals NULL)", encode_krb5_as_rep);237238ktest_empty_kdc_rep(&kdcr);239240}241242/****************************************************************/243/* encode_krb5_tgs_rep */244{245krb5_kdc_rep kdcr;246ktest_make_sample_kdc_rep(&kdcr);247248/* kdcr.msg_type = KRB5_AS_REP;249test(encode_krb5_tgs_rep(&kdcr,&code) == KRB5_BADMSGTYPE,250"encode_krb5_tgs_rep type check\n");*/251252kdcr.msg_type = KRB5_TGS_REP;253encode_run(kdcr, "tgs_rep", "", encode_krb5_tgs_rep);254255ktest_destroy_pa_data_array(&(kdcr.padata));256encode_run(kdcr, "tgs_rep", "(optionals NULL)", encode_krb5_tgs_rep);257258ktest_empty_kdc_rep(&kdcr);259260}261262/****************************************************************/263/* encode_krb5_ap_req */264{265krb5_ap_req apreq;266ktest_make_sample_ap_req(&apreq);267encode_run(apreq, "ap_req", "", encode_krb5_ap_req);268ktest_empty_ap_req(&apreq);269}270271/****************************************************************/272/* encode_krb5_ap_rep */273{274krb5_ap_rep aprep;275ktest_make_sample_ap_rep(&aprep);276encode_run(aprep, "ap_rep", "", encode_krb5_ap_rep);277ktest_empty_ap_rep(&aprep);278}279280/****************************************************************/281/* encode_krb5_ap_rep_enc_part */282{283krb5_ap_rep_enc_part apenc;284ktest_make_sample_ap_rep_enc_part(&apenc);285encode_run(apenc, "ap_rep_enc_part", "", encode_krb5_ap_rep_enc_part);286287ktest_destroy_keyblock(&(apenc.subkey));288apenc.seq_number = 0;289encode_run(apenc, "ap_rep_enc_part", "(optionals NULL)",290encode_krb5_ap_rep_enc_part);291ktest_empty_ap_rep_enc_part(&apenc);292}293294/****************************************************************/295/* encode_krb5_as_req */296{297krb5_kdc_req asreq;298ktest_make_sample_kdc_req(&asreq);299asreq.msg_type = KRB5_AS_REQ;300asreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;301encode_run(asreq, "as_req", "", encode_krb5_as_req);302303ktest_destroy_pa_data_array(&(asreq.padata));304ktest_destroy_principal(&(asreq.client));305#ifndef ISODE_SUCKS306ktest_destroy_principal(&(asreq.server));307#endif308asreq.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;309asreq.from = 0;310asreq.rtime = 0;311ktest_destroy_addresses(&(asreq.addresses));312ktest_destroy_enc_data(&(asreq.authorization_data));313encode_run(asreq, "as_req", "(optionals NULL except second_ticket)",314encode_krb5_as_req);315ktest_destroy_sequence_of_ticket(&(asreq.second_ticket));316#ifndef ISODE_SUCKS317ktest_make_sample_principal(&(asreq.server));318#endif319asreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;320encode_run(asreq, "as_req", "(optionals NULL except server)",321encode_krb5_as_req);322ktest_empty_kdc_req(&asreq);323}324325/****************************************************************/326/* encode_krb5_tgs_req */327{328krb5_kdc_req tgsreq;329ktest_make_sample_kdc_req(&tgsreq);330tgsreq.msg_type = KRB5_TGS_REQ;331tgsreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;332encode_run(tgsreq, "tgs_req", "", encode_krb5_tgs_req);333334ktest_destroy_pa_data_array(&(tgsreq.padata));335ktest_destroy_principal(&(tgsreq.client));336#ifndef ISODE_SUCKS337ktest_destroy_principal(&(tgsreq.server));338#endif339tgsreq.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;340tgsreq.from = 0;341tgsreq.rtime = 0;342ktest_destroy_addresses(&(tgsreq.addresses));343ktest_destroy_enc_data(&(tgsreq.authorization_data));344encode_run(tgsreq, "tgs_req", "(optionals NULL except second_ticket)",345encode_krb5_tgs_req);346347ktest_destroy_sequence_of_ticket(&(tgsreq.second_ticket));348#ifndef ISODE_SUCKS349ktest_make_sample_principal(&(tgsreq.server));350#endif351tgsreq.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;352encode_run(tgsreq, "tgs_req", "(optionals NULL except server)",353encode_krb5_tgs_req);354355ktest_empty_kdc_req(&tgsreq);356}357358/****************************************************************/359/* encode_krb5_kdc_req_body */360{361krb5_kdc_req kdcrb;362memset(&kdcrb, 0, sizeof(kdcrb));363ktest_make_sample_kdc_req_body(&kdcrb);364kdcrb.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;365current_appl_type = 1007; /* Force interpretation as kdc-req-body */366encode_run(kdcrb, "kdc_req_body", "", encode_krb5_kdc_req_body);367368ktest_destroy_principal(&(kdcrb.client));369#ifndef ISODE_SUCKS370ktest_destroy_principal(&(kdcrb.server));371#endif372kdcrb.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;373kdcrb.from = 0;374kdcrb.rtime = 0;375ktest_destroy_addresses(&(kdcrb.addresses));376ktest_destroy_enc_data(&(kdcrb.authorization_data));377current_appl_type = 1007; /* Force interpretation as kdc-req-body */378encode_run(kdcrb, "kdc_req_body",379"(optionals NULL except second_ticket)",380encode_krb5_kdc_req_body);381382ktest_destroy_sequence_of_ticket(&(kdcrb.second_ticket));383#ifndef ISODE_SUCKS384ktest_make_sample_principal(&(kdcrb.server));385#endif386kdcrb.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;387current_appl_type = 1007; /* Force interpretation as kdc-req-body */388encode_run(kdcrb, "kdc_req_body", "(optionals NULL except server)",389encode_krb5_kdc_req_body);390391ktest_empty_kdc_req(&kdcrb);392}393394/****************************************************************/395/* encode_krb5_safe */396{397krb5_safe s;398ktest_make_sample_safe(&s);399encode_run(s, "safe", "", encode_krb5_safe);400401s.timestamp = 0;402/* s.usec should be opted out by the timestamp */403s.seq_number = 0;404ktest_destroy_address(&(s.r_address));405encode_run(s, "safe", "(optionals NULL)", encode_krb5_safe);406407ktest_empty_safe(&s);408}409410/****************************************************************/411/* encode_krb5_priv */412{413krb5_priv p;414ktest_make_sample_priv(&p);415encode_run(p, "priv", "", encode_krb5_priv);416ktest_empty_priv(&p);417}418419/****************************************************************/420/* encode_krb5_enc_priv_part */421{422krb5_priv_enc_part ep;423ktest_make_sample_priv_enc_part(&ep);424encode_run(ep, "enc_priv_part", "", encode_krb5_enc_priv_part);425426ep.timestamp = 0;427/* ep.usec should be opted out along with timestamp */428ep.seq_number = 0;429ktest_destroy_address(&(ep.r_address));430encode_run(ep, "enc_priv_part", "(optionals NULL)",431encode_krb5_enc_priv_part);432433ktest_empty_priv_enc_part(&ep);434}435436/****************************************************************/437/* encode_krb5_cred */438{439krb5_cred c;440ktest_make_sample_cred(&c);441encode_run(c, "cred", "", encode_krb5_cred);442ktest_empty_cred(&c);443}444445/****************************************************************/446/* encode_krb5_enc_cred_part */447{448krb5_cred_enc_part cep;449ktest_make_sample_cred_enc_part(&cep);450encode_run(cep, "enc_cred_part", "", encode_krb5_enc_cred_part);451452ktest_destroy_principal(&(cep.ticket_info[0]->client));453ktest_destroy_principal(&(cep.ticket_info[0]->server));454cep.ticket_info[0]->flags = 0;455cep.ticket_info[0]->times.authtime = 0;456cep.ticket_info[0]->times.starttime = 0;457cep.ticket_info[0]->times.endtime = 0;458cep.ticket_info[0]->times.renew_till = 0;459ktest_destroy_addresses(&(cep.ticket_info[0]->caddrs));460cep.nonce = 0;461cep.timestamp = 0;462ktest_destroy_address(&(cep.s_address));463ktest_destroy_address(&(cep.r_address));464encode_run(cep, "enc_cred_part", "(optionals NULL)",465encode_krb5_enc_cred_part);466467ktest_empty_cred_enc_part(&cep);468}469470/****************************************************************/471/* encode_krb5_error */472{473krb5_error kerr;474ktest_make_sample_error(&kerr);475encode_run(kerr, "error", "", encode_krb5_error);476477kerr.ctime = 0;478ktest_destroy_principal(&(kerr.client));479ktest_empty_data(&(kerr.text));480ktest_empty_data(&(kerr.e_data));481encode_run(kerr, "error", "(optionals NULL)", encode_krb5_error);482483ktest_empty_error(&kerr);484}485486/****************************************************************/487/* encode_krb5_authdata */488{489krb5_authdata **ad;490ktest_make_sample_authorization_data(&ad);491492retval = encode_krb5_authdata(ad,&(code));493if (retval) {494com_err("encoding authorization_data",retval,"");495exit(1);496}497current_appl_type = 1004; /* Force type to be authdata */498encoder_print_results(code, "authorization_data", "");499500ktest_destroy_authorization_data(&ad);501}502503/****************************************************************/504/* encode_padata_sequence and encode_krb5_typed_data */505{506krb5_pa_data **pa;507508ktest_make_sample_pa_data_array(&pa);509encode_run(*pa, "padata_sequence", "", encode_krb5_padata_sequence);510encode_run(*pa, "typed_data", "", encode_krb5_typed_data);511ktest_destroy_pa_data_array(&pa);512513ktest_make_sample_empty_pa_data_array(&pa);514encode_run(*pa, "padata_sequence", "(empty)",515encode_krb5_padata_sequence);516ktest_destroy_pa_data_array(&pa);517}518519/****************************************************************/520/* encode_etype_info */521{522krb5_etype_info_entry **info;523524ktest_make_sample_etype_info(&info);525encode_run(*info, "etype_info", "", encode_krb5_etype_info);526527ktest_destroy_etype_info_entry(info[2]); info[2] = 0;528ktest_destroy_etype_info_entry(info[1]); info[1] = 0;529encode_run(*info, "etype_info", "(only 1)", encode_krb5_etype_info);530531ktest_destroy_etype_info_entry(info[0]); info[0] = 0;532encode_run(*info, "etype_info", "(no info)", encode_krb5_etype_info);533534ktest_destroy_etype_info(info);535}536537/* encode_etype_info2 */538{539krb5_etype_info_entry **info;540541ktest_make_sample_etype_info2(&info);542encode_run(*info, "etype_info2", "", encode_krb5_etype_info2);543544ktest_destroy_etype_info_entry(info[2]); info[2] = 0;545ktest_destroy_etype_info_entry(info[1]); info[1] = 0;546encode_run(*info, "etype_info2", "(only 1)", encode_krb5_etype_info2);547548/* etype_info2 sequences aren't allowed to be empty. */549550ktest_destroy_etype_info(info);551}552553/****************************************************************/554/* encode_pa_enc_ts */555{556krb5_pa_enc_ts pa_enc;557ktest_make_sample_pa_enc_ts(&pa_enc);558encode_run(pa_enc, "pa_enc_ts", "", encode_krb5_pa_enc_ts);559pa_enc.pausec = 0;560encode_run(pa_enc, "pa_enc_ts (no usec)", "", encode_krb5_pa_enc_ts);561}562563/****************************************************************/564/* encode_enc_data */565{566krb5_enc_data enc_data;567ktest_make_sample_enc_data(&enc_data);568current_appl_type = 1001;569encode_run(enc_data, "enc_data", "", encode_krb5_enc_data);570enc_data.kvno = 0xFF000000;571current_appl_type = 1001;572encode_run(enc_data, "enc_data", "(MSB-set kvno)",573encode_krb5_enc_data);574enc_data.kvno = 0xFFFFFFFF;575current_appl_type = 1001;576encode_run(enc_data, "enc_data", "(kvno=-1)", encode_krb5_enc_data);577ktest_destroy_enc_data(&enc_data);578}579/****************************************************************/580/* encode_krb5_sam_challenge_2 */581{582krb5_sam_challenge_2 sam_ch2;583ktest_make_sample_sam_challenge_2(&sam_ch2);584encode_run(sam_ch2, "sam_challenge_2", "",585encode_krb5_sam_challenge_2);586ktest_empty_sam_challenge_2(&sam_ch2);587}588/****************************************************************/589/* encode_krb5_sam_challenge_2_body */590{591krb5_sam_challenge_2_body body;592ktest_make_sample_sam_challenge_2_body(&body);593encode_run(body, "sam_challenge_2_body", "",594encode_krb5_sam_challenge_2_body);595ktest_empty_sam_challenge_2_body(&body);596}597/****************************************************************/598/* encode_krb5_sam_response_2 */599{600krb5_sam_response_2 sam_ch2;601ktest_make_sample_sam_response_2(&sam_ch2);602encode_run(sam_ch2, "sam_response_2", "", encode_krb5_sam_response_2);603ktest_empty_sam_response_2(&sam_ch2);604}605/****************************************************************/606/* encode_krb5_sam_response_enc_2 */607{608krb5_enc_sam_response_enc_2 sam_ch2;609ktest_make_sample_enc_sam_response_enc_2(&sam_ch2);610encode_run(sam_ch2, "enc_sam_response_enc_2", "",611encode_krb5_enc_sam_response_enc_2);612ktest_empty_enc_sam_response_enc_2(&sam_ch2);613}614/****************************************************************/615/* encode_krb5_pa_for_user */616{617krb5_pa_for_user s4u;618ktest_make_sample_pa_for_user(&s4u);619encode_run(s4u, "pa_for_user", "", encode_krb5_pa_for_user);620ktest_empty_pa_for_user(&s4u);621}622/****************************************************************/623/* encode_krb5_pa_s4u_x509_user */624{625krb5_pa_s4u_x509_user s4u;626ktest_make_sample_pa_s4u_x509_user(&s4u);627encode_run(s4u, "pa_s4u_x509_user", "", encode_krb5_pa_s4u_x509_user);628ktest_empty_pa_s4u_x509_user(&s4u);629}630/****************************************************************/631/* encode_krb5_ad_kdcissued */632{633krb5_ad_kdcissued kdci;634ktest_make_sample_ad_kdcissued(&kdci);635encode_run(kdci, "ad_kdcissued", "", encode_krb5_ad_kdcissued);636ktest_empty_ad_kdcissued(&kdci);637}638/****************************************************************/639/* encode_krb5_iakerb_header */640{641krb5_iakerb_header ih;642ktest_make_sample_iakerb_header(&ih);643encode_run(ih, "iakerb_header", "", encode_krb5_iakerb_header);644ktest_empty_iakerb_header(&ih);645}646/****************************************************************/647/* encode_krb5_iakerb_finished */648{649krb5_iakerb_finished ih;650ktest_make_sample_iakerb_finished(&ih);651encode_run(ih, "iakerb_finished", "", encode_krb5_iakerb_finished);652ktest_empty_iakerb_finished(&ih);653}654/****************************************************************/655/* encode_krb5_fast_response */656{657krb5_fast_response fr;658ktest_make_sample_fast_response(&fr);659encode_run(fr, "fast_response", "", encode_krb5_fast_response);660ktest_empty_fast_response(&fr);661}662/****************************************************************/663/* encode_krb5_pa_fx_fast_reply */664{665krb5_enc_data enc_data;666ktest_make_sample_enc_data(&enc_data);667encode_run(enc_data, "pa_fx_fast_reply", "",668encode_krb5_pa_fx_fast_reply);669ktest_destroy_enc_data(&enc_data);670}671/****************************************************************/672/* encode_krb5_otp_tokeninfo */673{674krb5_otp_tokeninfo ti;675ktest_make_minimal_otp_tokeninfo(&ti);676encode_run(ti, "otp_tokeninfo", "(optionals NULL)",677encode_krb5_otp_tokeninfo);678ktest_empty_otp_tokeninfo(&ti);679ktest_make_maximal_otp_tokeninfo(&ti);680encode_run(ti, "otp_tokeninfo", "", encode_krb5_otp_tokeninfo);681ktest_empty_otp_tokeninfo(&ti);682}683/****************************************************************/684/* encode_krb5_pa_otp_challenge */685{686krb5_pa_otp_challenge ch;687ktest_make_minimal_pa_otp_challenge(&ch);688encode_run(ch, "pa_otp_challenge", "(optionals NULL)",689encode_krb5_pa_otp_challenge);690ktest_empty_pa_otp_challenge(&ch);691ktest_make_maximal_pa_otp_challenge(&ch);692encode_run(ch, "pa_otp_challenge", "", encode_krb5_pa_otp_challenge);693ktest_empty_pa_otp_challenge(&ch);694}695/****************************************************************/696/* encode_krb5_pa_otp_req */697{698krb5_pa_otp_req req;699ktest_make_minimal_pa_otp_req(&req);700encode_run(req, "pa_otp_req", "(optionals NULL)",701encode_krb5_pa_otp_req);702ktest_empty_pa_otp_req(&req);703ktest_make_maximal_pa_otp_req(&req);704encode_run(req, "pa_otp_req", "", encode_krb5_pa_otp_req);705ktest_empty_pa_otp_req(&req);706}707/****************************************************************/708/* encode_krb5_pa_otp_enc_request */709{710krb5_data d;711ktest_make_sample_data(&d);712encode_run(d, "pa_otp_enc_req", "", encode_krb5_pa_otp_enc_req);713ktest_empty_data(&d);714}715/****************************************************************/716/* encode_krb5_kkdcp_message */717{718krb5_kkdcp_message info;719ktest_make_sample_kkdcp_message(&info);720encode_run(info, "kkdcp_message", "", encode_krb5_kkdcp_message);721ktest_empty_kkdcp_message(&info);722}723/* encode_krb5_cammac */724{725krb5_cammac req;726ktest_make_minimal_cammac(&req);727encode_run(req, "cammac", "(optionals NULL)", encode_krb5_cammac);728ktest_empty_cammac(&req);729ktest_make_maximal_cammac(&req);730encode_run(req, "cammac", "", encode_krb5_cammac);731ktest_empty_cammac(&req);732}733/****************************************************************/734/* encode_krb5_secure_cookie */735{736krb5_secure_cookie cookie;737ktest_make_sample_secure_cookie(&cookie);738encode_run(cookie, "secure_cookie", "", encode_krb5_secure_cookie);739ktest_empty_secure_cookie(&cookie);740}741/****************************************************************/742/* encode_krb5_spake_factor */743{744krb5_spake_factor factor;745ktest_make_minimal_spake_factor(&factor);746encode_run(factor, "spake_factor", "(optionals NULL)",747encode_krb5_spake_factor);748ktest_empty_spake_factor(&factor);749ktest_make_maximal_spake_factor(&factor);750encode_run(factor, "spake_factor", "", encode_krb5_spake_factor);751ktest_empty_spake_factor(&factor);752}753/****************************************************************/754/* encode_krb5_pa_spake */755{756krb5_pa_spake pa_spake;757ktest_make_support_pa_spake(&pa_spake);758encode_run(pa_spake, "pa_spake", "(support)", encode_krb5_pa_spake);759ktest_empty_pa_spake(&pa_spake);760ktest_make_challenge_pa_spake(&pa_spake);761encode_run(pa_spake, "pa_spake", "(challenge)", encode_krb5_pa_spake);762ktest_empty_pa_spake(&pa_spake);763ktest_make_response_pa_spake(&pa_spake);764encode_run(pa_spake, "pa_spake", "(response)", encode_krb5_pa_spake);765ktest_empty_pa_spake(&pa_spake);766ktest_make_encdata_pa_spake(&pa_spake);767encode_run(pa_spake, "pa_spake", "(encdata)", encode_krb5_pa_spake);768ktest_empty_pa_spake(&pa_spake);769}770#ifndef DISABLE_PKINIT771/****************************************************************/772/* encode_krb5_pa_pk_as_req */773{774krb5_pa_pk_as_req req;775ktest_make_sample_pa_pk_as_req(&req);776encode_run(req, "pa_pk_as_req", "", acc.encode_krb5_pa_pk_as_req);777ktest_empty_pa_pk_as_req(&req);778}779/****************************************************************/780/* encode_krb5_pa_pk_as_rep */781{782krb5_pa_pk_as_rep rep;783ktest_make_sample_pa_pk_as_rep_dhInfo(&rep);784encode_run(rep, "pa_pk_as_rep", "(dhInfo)",785acc.encode_krb5_pa_pk_as_rep);786ktest_empty_pa_pk_as_rep(&rep);787ktest_make_sample_pa_pk_as_rep_encKeyPack(&rep);788encode_run(rep, "pa_pk_as_rep", "(encKeyPack)",789acc.encode_krb5_pa_pk_as_rep);790ktest_empty_pa_pk_as_rep(&rep);791}792/****************************************************************/793/* encode_krb5_auth_pack */794{795krb5_auth_pack pack;796ktest_make_sample_auth_pack(&pack);797encode_run(pack, "auth_pack", "", acc.encode_krb5_auth_pack);798ktest_empty_auth_pack(&pack);799}800/****************************************************************/801/* encode_krb5_kdc_dh_key_info */802{803krb5_kdc_dh_key_info ki;804ktest_make_sample_kdc_dh_key_info(&ki);805encode_run(ki, "kdc_dh_key_info", "", acc.encode_krb5_kdc_dh_key_info);806ktest_empty_kdc_dh_key_info(&ki);807}808/****************************************************************/809/* encode_krb5_reply_key_pack */810{811krb5_reply_key_pack pack;812ktest_make_sample_reply_key_pack(&pack);813encode_run(pack, "reply_key_pack", "", acc.encode_krb5_reply_key_pack);814ktest_empty_reply_key_pack(&pack);815}816/****************************************************************/817/* encode_krb5_sp80056a_other_info */818{819krb5_sp80056a_other_info info;820ktest_make_sample_sp80056a_other_info(&info);821encode_run(info, "sp80056a_other_info", "",822encode_krb5_sp80056a_other_info);823ktest_empty_sp80056a_other_info(&info);824}825/****************************************************************/826/* encode_krb5_pkinit_supp_pub_info */827{828krb5_pkinit_supp_pub_info info;829ktest_make_sample_pkinit_supp_pub_info(&info);830encode_run(info, "pkinit_supp_pub_info", "",831encode_krb5_pkinit_supp_pub_info);832ktest_empty_pkinit_supp_pub_info(&info);833}834#endif /* not DISABLE_PKINIT */835#ifdef ENABLE_LDAP836{837ldap_seqof_key_data skd;838839ktest_make_sample_ldap_seqof_key_data(&skd);840encode_run(skd, "ldap_seqof_key_data", "",841acc.asn1_ldap_encode_sequence_of_keys);842ktest_empty_ldap_seqof_key_data(&skd);843}844#endif845846krb5_free_context(test_context);847exit(error_count);848return(error_count);849}850851852