Path: blob/main/crypto/krb5/src/tests/asn.1/krb5_decode_test.c
34889 views
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */1/* tests/asn.1/krb5_decode_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 "k5-spake.h"28#include "ktest.h"29#include "com_err.h"30#include "utility.h"31#include "ktest_equal.h"3233#include "debug.h"34#include <string.h>3536krb5_context test_context;37int error_count = 0;3839void krb5_ktest_free_enc_data(krb5_context context, krb5_enc_data *val);4041#ifndef DISABLE_PKINIT42static int equal_principal(krb5_principal *ref, krb5_principal var);43static void ktest_free_auth_pack(krb5_context context, krb5_auth_pack *val);44static void ktest_free_kdc_dh_key_info(krb5_context context,45krb5_kdc_dh_key_info *val);46static void ktest_free_pa_pk_as_req(krb5_context context,47krb5_pa_pk_as_req *val);48static void ktest_free_pa_pk_as_rep(krb5_context context,49krb5_pa_pk_as_rep *val);50static void ktest_free_reply_key_pack(krb5_context context,51krb5_reply_key_pack *val);52#endif53#ifdef ENABLE_LDAP54static void ktest_free_ldap_seqof_key_data(krb5_context context,55ldap_seqof_key_data *val);56#endif57static void ktest_free_kkdcp_message(krb5_context context,58krb5_kkdcp_message *val);5960int61main(int argc, char **argv)62{63krb5_data code;64krb5_error_code retval;6566retval = krb5_init_context(&test_context);67if (retval) {68com_err(argv[0], retval, "while initializing krb5");69exit(1);70}71init_access(argv[0]);727374#define setup(type,constructor) \75type ref, *var; \76constructor(&ref); \77do {} while (0)7879#define decode_run(typestring,description,encoding,decoder,comparator,cleanup) do { \80retval = krb5_data_hex_parse(&code,encoding); \81if (retval) { \82com_err("krb5_decode_test", retval, "while parsing %s", typestring); \83exit(1); \84} \85retval = decoder(&code,&var); \86if (retval) { \87com_err("krb5_decode_test", retval, "while decoding %s", typestring); \88error_count++; \89} \90test(comparator(&ref,var),typestring); \91printf("%s\n",description); \92krb5_free_data_contents(test_context, &code); \93cleanup(test_context, var); \94} while (0)9596#define decode_fail(err,typestring,description,encoding,decoder) do { \97retval = krb5_data_hex_parse(&code,encoding); \98if (retval) { \99com_err("krb5_decode_test", retval, "while parsing %s", typestring); \100exit(1); \101} \102retval = decoder(&code,&var); \103if (retval != (err)) { \104com_err("krb5_decode_test", retval, "while decoding %s", typestring); \105error_count++; \106} \107test(1,typestring); \108printf("%s\n",description); \109krb5_free_data_contents(test_context, &code); \110} while (0)111112/****************************************************************/113/* decode_krb5_authenticator */114{115setup(krb5_authenticator,ktest_make_sample_authenticator);116117decode_run("authenticator","","62 81 A1 30 81 9E A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34 A4 05 02 03 01 E2 40 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A7 03 02 01 11 A8 24 30 22 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72",decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);118119ref.seq_number = 0xffffff80;120decode_run("authenticator","(80 -> seq-number 0xffffff80)",121"62 81 A1 30 81 9E"122" A0 03 02 01 05"123" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"124" A2 1A 30 18"125" A0 03 02 01 01"126" A1 11 30 0F"127" 1B 06 68 66 74 73 61 69"128" 1B 05 65 78 74 72 61"129" A3 0F 30 0D"130" A0 03 02 01 01"131" A1 06 04 04 31 32 33 34"132" A4 05 02 03 01 E2 40"133" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"134" A6 13 30 11"135" A0 03 02 01 01"136" A1 0A 04 08 31 32 33 34 35 36 37 38"137" A7 03 02 01 80"138" A8 24 30 22"139" 30 0F"140" A0 03 02 01 01"141" A1 08 04 06 66 6F 6F 62 61 72"142" 30 0F"143" A0 03 02 01 01"144" A1 08 04 06 66 6F 6F 62 61 72"145,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);146147ref.seq_number = 0xffffffff;148decode_run("authenticator","(FF -> seq-number 0xffffffff)",149"62 81 A1 30 81 9E"150" A0 03 02 01 05"151" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"152" A2 1A 30 18"153" A0 03 02 01 01"154" A1 11 30 0F"155" 1B 06 68 66 74 73 61 69"156" 1B 05 65 78 74 72 61"157" A3 0F 30 0D"158" A0 03 02 01 01"159" A1 06 04 04 31 32 33 34"160" A4 05 02 03 01 E2 40"161" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"162" A6 13 30 11"163" A0 03 02 01 01"164" A1 0A 04 08 31 32 33 34 35 36 37 38"165" A7 03 02 01 FF"166" A8 24 30 22"167" 30 0F"168" A0 03 02 01 01"169" A1 08 04 06 66 6F 6F 62 61 72"170" 30 0F"171" A0 03 02 01 01"172" A1 08 04 06 66 6F 6F 62 61 72"173,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);174175ref.seq_number = 0xff;176decode_run("authenticator","(00FF -> seq-number 0xff)",177"62 81 A2 30 81 9F"178" A0 03 02 01 05"179" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"180" A2 1A 30 18"181" A0 03 02 01 01"182" A1 11 30 0F"183" 1B 06 68 66 74 73 61 69"184" 1B 05 65 78 74 72 61"185" A3 0F 30 0D"186" A0 03 02 01 01"187" A1 06 04 04 31 32 33 34"188" A4 05 02 03 01 E2 40"189" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"190" A6 13 30 11"191" A0 03 02 01 01"192" A1 0A 04 08 31 32 33 34 35 36 37 38"193" A7 04 02 02 00 FF"194" A8 24 30 22"195" 30 0F"196" A0 03 02 01 01"197" A1 08 04 06 66 6F 6F 62 61 72"198" 30 0F"199" A0 03 02 01 01"200" A1 08 04 06 66 6F 6F 62 61 72"201,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);202203ref.seq_number = 0xffffffff;204decode_run("authenticator","(00FFFFFFFF -> seq-number 0xffffffff)",205"62 81 A5 30 81 A2"206" A0 03 02 01 05"207" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"208" A2 1A 30 18"209" A0 03 02 01 01"210" A1 11 30 0F"211" 1B 06 68 66 74 73 61 69"212" 1B 05 65 78 74 72 61"213" A3 0F 30 0D"214" A0 03 02 01 01"215" A1 06 04 04 31 32 33 34"216" A4 05 02 03 01 E2 40"217" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"218" A6 13 30 11"219" A0 03 02 01 01"220" A1 0A 04 08 31 32 33 34 35 36 37 38"221" A7 07 02 05 00 FF FF FF FF"222" A8 24 30 22"223" 30 0F"224" A0 03 02 01 01"225" A1 08 04 06 66 6F 6F 62 61 72"226" 30 0F"227" A0 03 02 01 01"228" A1 08 04 06 66 6F 6F 62 61 72"229,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);230231ref.seq_number = 0x7fffffff;232decode_run("authenticator","(7FFFFFFF -> seq-number 0x7fffffff)",233"62 81 A4 30 81 A1"234" A0 03 02 01 05"235" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"236" A2 1A 30 18"237" A0 03 02 01 01"238" A1 11 30 0F"239" 1B 06 68 66 74 73 61 69"240" 1B 05 65 78 74 72 61"241" A3 0F 30 0D"242" A0 03 02 01 01"243" A1 06 04 04 31 32 33 34"244" A4 05 02 03 01 E2 40"245" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"246" A6 13 30 11"247" A0 03 02 01 01"248" A1 0A 04 08 31 32 33 34 35 36 37 38"249" A7 06 02 04 7F FF FF FF"250" A8 24 30 22"251" 30 0F"252" A0 03 02 01 01"253" A1 08 04 06 66 6F 6F 62 61 72"254" 30 0F"255" A0 03 02 01 01"256" A1 08 04 06 66 6F 6F 62 61 72"257,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);258259ref.seq_number = 0xffffffff;260decode_run("authenticator","(FFFFFFFF -> seq-number 0xffffffff)",261"62 81 A4 30 81 A1"262" A0 03 02 01 05"263" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"264" A2 1A 30 18"265" A0 03 02 01 01"266" A1 11 30 0F"267" 1B 06 68 66 74 73 61 69"268" 1B 05 65 78 74 72 61"269" A3 0F 30 0D"270" A0 03 02 01 01"271" A1 06 04 04 31 32 33 34"272" A4 05 02 03 01 E2 40"273" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"274" A6 13 30 11"275" A0 03 02 01 01"276" A1 0A 04 08 31 32 33 34 35 36 37 38"277" A7 06 02 04 FF FF FF FF"278" A8 24 30 22"279" 30 0F"280" A0 03 02 01 01"281" A1 08 04 06 66 6F 6F 62 61 72"282" 30 0F"283" A0 03 02 01 01"284" A1 08 04 06 66 6F 6F 62 61 72"285,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);286287ktest_destroy_checksum(&(ref.checksum));288ktest_destroy_keyblock(&(ref.subkey));289ref.seq_number = 0;290ktest_empty_authorization_data(ref.authorization_data);291decode_run("authenticator","(optionals empty)","62 4F 30 4D A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 05 02 03 01 E2 40 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);292293ktest_destroy_authorization_data(&(ref.authorization_data));294295decode_run("authenticator","(optionals NULL)","62 4F 30 4D A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 05 02 03 01 E2 40 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);296297ktest_empty_authenticator(&ref);298}299300/****************************************************************/301/* decode_krb5_ticket */302{303setup(krb5_ticket,ktest_make_sample_ticket);304decode_run("ticket","","61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_ticket,ktest_equal_ticket,krb5_free_ticket);305decode_run("ticket","(+ trailing [4] INTEGER","61 61 30 5F A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A4 03 02 01 01",decode_krb5_ticket,ktest_equal_ticket,krb5_free_ticket);306307/*308"61 80 30 80 "309" A0 03 02 01 05 "310" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 "311" A2 80 30 80 "312" A0 03 02 01 01 "313" A1 80 30 80 "314" 1B 06 68 66 74 73 61 69 "315" 1B 05 65 78 74 72 61 "316" 00 00 00 00 "317" 00 00 00 00 "318" A3 80 30 80 "319" A0 03 02 01 00 "320" A1 03 02 01 05 "321" A2 17 04 15 6B 72 62 41 53 4E 2E 31 "322" 20 74 65 73 74 20 6D 65 73 73 61 67 65 "323" 00 00 00 00"324"00 00 00 00"325*/326decode_fail(ASN1_INDEF,"ticket","(indefinite lengths)", "61 80 30 80 A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 80 30 80 A0 03 02 01 01 A1 80 30 80 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 00 00 00 00 00 00 00 00 A3 80 30 80 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 00 00 00 00 00 00 00 00" ,decode_krb5_ticket);327/*328"61 80 30 80 "329" A0 03 02 01 05 "330" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 "331" A2 80 30 80 "332" A0 03 02 01 01 "333" A1 80 30 80 "334" 1B 06 68 66 74 73 61 69 "335" 1B 05 65 78 74 72 61 "336" 00 00 00 00 "337" 00 00 00 00 "338" A3 80 30 80 "339" A0 03 02 01 00 "340" A1 03 02 01 05 "341" A2 17 04 15 6B 72 62 41 53 4E 2E 31 "342" 20 74 65 73 74 20 6D 65 73 73 61 67 65 "343" 00 00 00 00"344" A4 03 02 01 01 "345"00 00 00 00"346*/347decode_fail(ASN1_INDEF,"ticket","(indefinite lengths + trailing [4] INTEGER)", "61 80 30 80 A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 80 30 80 A0 03 02 01 01 A1 80 30 80 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 00 00 00 00 00 00 00 00 A3 80 30 80 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 00 00 00 00 A4 03 02 01 01 00 00 00 00",decode_krb5_ticket);348349ktest_empty_ticket(&ref);350351}352353/****************************************************************/354/* decode_krb5_encryption_key */355{356setup(krb5_keyblock,ktest_make_sample_keyblock);357358decode_run("encryption_key","","30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);359360decode_run("encryption_key","(+ trailing [2] INTEGER)","30 16 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 03 02 01 01",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);361decode_run("encryption_key","(+ trailing [2] SEQUENCE {[0] INTEGER})","30 1A A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 07 30 05 A0 03 02 01 01",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);362decode_fail(ASN1_INDEF,"encryption_key","(indefinite lengths)","30 80 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 00 00",decode_krb5_encryption_key);363decode_fail(ASN1_INDEF,"encryption_key","(indefinite lengths + trailing [2] INTEGER)","30 80 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 03 02 01 01 00 00",decode_krb5_encryption_key);364decode_fail(ASN1_INDEF,"encryption_key","(indefinite lengths + trailing [2] SEQUENCE {[0] INTEGER})","30 80 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 80 30 80 A0 03 02 01 01 00 00 00 00 00 00",decode_krb5_encryption_key);365decode_fail(ASN1_INDEF,"encryption_key","(indefinite lengths + trailing SEQUENCE {[0] INTEGER})","30 80 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 30 80 A0 03 02 01 01 00 00 00 00",decode_krb5_encryption_key);366ref.enctype = -1;367decode_run("encryption_key","(enctype = -1)","30 11 A0 03 02 01 FF A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);368ref.enctype = -255;369decode_run("encryption_key","(enctype = -255)","30 12 A0 04 02 02 FF 01 A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);370ref.enctype = 255;371decode_run("encryption_key","(enctype = 255)","30 12 A0 04 02 02 00 FF A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);372ref.enctype = -2147483648U;373decode_run("encryption_key","(enctype = -2147483648)","30 14 A0 06 02 04 80 00 00 00 A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);374ref.enctype = 2147483647;375decode_run("encryption_key","(enctype = 2147483647)","30 14 A0 06 02 04 7F FF FF FF A1 0A 04 08 31 32 33 34 35 36 37 38",decode_krb5_encryption_key,ktest_equal_encryption_key,krb5_free_keyblock);376377ktest_empty_keyblock(&ref);378}379380/****************************************************************/381/* decode_krb5_enc_tkt_part */382{383setup(krb5_enc_tkt_part,ktest_make_sample_enc_tkt_part);384decode_run("enc_tkt_part","","63 82 01 14 30 82 01 10 A0 07 03 05 00 FE DC BA 98 A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A8 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A9 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 AA 24 30 22 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part,krb5_free_enc_tkt_part);385386ref.times.starttime = 0;387ref.times.renew_till = 0;388ktest_destroy_address(&(ref.caddrs[1]));389ktest_destroy_address(&(ref.caddrs[0]));390ktest_destroy_authdata(&(ref.authorization_data[1]));391ktest_destroy_authdata(&(ref.authorization_data[0]));392/* ISODE version fails on the empty caddrs field */393ktest_destroy_addresses(&(ref.caddrs));394ktest_destroy_authorization_data(&(ref.authorization_data));395396decode_run("enc_tkt_part","(optionals NULL)","63 81 A5 30 81 A2 A0 07 03 05 00 FE DC BA 98 A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part, krb5_free_enc_tkt_part);397398decode_run("enc_tkt_part","(optionals NULL + bitstring enlarged to 38 bits)","63 81 A6 30 81 A3 A0 08 03 06 02 FE DC BA 98 DC A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part,krb5_free_enc_tkt_part);399400decode_run("enc_tkt_part","(optionals NULL + bitstring enlarged to 40 bits)","63 81 A6 30 81 A3 A0 08 03 06 00 FE DC BA 98 DE A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part,krb5_free_enc_tkt_part);401402decode_run("enc_tkt_part","(optionals NULL + bitstring reduced to 29 bits)","63 81 A5 30 81 A2 A0 07 03 05 03 FE DC BA 98 A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part,krb5_free_enc_tkt_part);403404ref.flags &= 0xFFFFFF00;405406decode_run("enc_tkt_part","(optionals NULL + bitstring reduced to 24 bits)","63 81 A4 30 81 A1 A0 06 03 04 00 FE DC BA A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 2E 30 2C A0 03 02 01 01 A1 25 04 23 45 44 55 2C 4D 49 54 2E 2C 41 54 48 45 4E 41 2E 2C 57 41 53 48 49 4E 47 54 4F 4E 2E 45 44 55 2C 43 53 2E A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_enc_tkt_part,ktest_equal_enc_tkt_part,krb5_free_enc_tkt_part);407408ktest_empty_enc_tkt_part(&ref);409}410411/****************************************************************/412/* decode_krb5_enc_kdc_rep_part */413{414setup(krb5_enc_kdc_rep_part,ktest_make_sample_enc_kdc_rep_part);415416decode_run("enc_kdc_rep_part","","7A 82 01 0E 30 82 01 0A A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 36 30 34 30 18 A0 03 02 01 FB A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A 30 18 A0 03 02 01 FB A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A2 03 02 01 2A A3 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A4 07 03 05 00 FE DC BA 98 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A8 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A9 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 AA 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 AB 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23",decode_krb5_enc_kdc_rep_part,ktest_equal_enc_kdc_rep_part,krb5_free_enc_kdc_rep_part);417418ref.key_exp = 0;419/* ref.times.starttime = 0;*/420ref.times.starttime = ref.times.authtime;421ref.times.renew_till = 0;422ref.flags &= ~TKT_FLG_RENEWABLE;423ktest_destroy_addresses(&(ref.caddrs));424425decode_run("enc_kdc_rep_part","(optionals NULL)","7A 81 B2 30 81 AF A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 36 30 34 30 18 A0 03 02 01 FB A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A 30 18 A0 03 02 01 FB A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A2 03 02 01 2A A4 07 03 05 00 FE 5C BA 98 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A9 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 AA 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61",decode_krb5_enc_kdc_rep_part,ktest_equal_enc_kdc_rep_part,krb5_free_enc_kdc_rep_part);426427ktest_empty_enc_kdc_rep_part(&ref);428}429430/****************************************************************/431/* decode_krb5_as_rep */432{433setup(krb5_kdc_rep,ktest_make_sample_kdc_rep);434ref.msg_type = KRB5_AS_REP;435436decode_run("as_rep","","6B 81 EA 30 81 E7 A0 03 02 01 05 A1 03 02 01 0B A2 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A4 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 5E 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A6 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_as_rep,ktest_equal_as_rep,krb5_free_kdc_rep);437438/*4396B 80 30 80440A0 03 02 01 05441A1 03 02 01 0B442A2 80 30 8044330 80444A1 03 02 01 0D445A2 09 04 07 70 61 2D 64 61 74 6144600 0044730 80448A1 03 02 01 0D449A2 09 04 07 70 61 2D 64 61 74 6145000 0045100 00 00 00452A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55453A4 80 30 80454A0 03 02 01 01455A1 80 30 804561B 06 68 66 74 73 61 694571B 05 65 78 74 72 6145800 00 00 0045900 00 00 00460A5 80 61 80 30 80461A0 03 02 01 05462A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55463A2 80 30 80464A0 03 02 01 01465A1 80 30 804661B 06 68 66 74 73 61 694671B 05 65 78 74 72 6146800 00 00 0046900 00 00 00470A3 80 30 80471A0 03 02 01 00472A1 03 02 01 05473A2 17 04 15 6B 72 62 41 53 4E 2E 3147420 74 65 73 74 20 6D 6547573 73 61 67 6547600 00 00 0047700 00 00 00 00 00478A6 80 30 80479A0 03 02 01 00480A1 03 02 01 05481A2 17 04 15 6B 72 62 41 53 4E 2E 3148220 74 65 73 74 20 6D 6548373 73 61 67 6548400 00 00 0048500 00 00 00486*/487decode_fail(ASN1_INDEF,"as_rep","(indefinite lengths)","6B 80 30 80 A0 03 02 01 05 A1 03 02 01 0B A2 80 30 80 30 80 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 00 00 30 80 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 00 00 00 00 00 00 A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A4 80 30 80 A0 03 02 01 01 A1 80 30 80 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 00 00 00 00 00 00 00 00 A5 80 61 80 30 80 A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 80 30 80 A0 03 02 01 01 A1 80 30 80 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 00 00 00 00 00 00 00 00 A3 80 30 80 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 00 00 00 00 00 00 00 00 00 00 A6 80 30 80 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 00 00 00 00 00 00 00 00",decode_krb5_as_rep);488ktest_destroy_pa_data_array(&(ref.padata));489decode_run("as_rep","(optionals NULL)","6B 81 C2 30 81 BF A0 03 02 01 05 A1 03 02 01 0B A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A4 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 5E 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A6 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_as_rep,ktest_equal_as_rep,krb5_free_kdc_rep);490491ktest_empty_kdc_rep(&ref);492}493494/****************************************************************/495/* decode_krb5_tgs_rep */496{497setup(krb5_kdc_rep,ktest_make_sample_kdc_rep);498ref.msg_type = KRB5_TGS_REP;499500decode_run("tgs_rep","","6D 81 EA 30 81 E7 A0 03 02 01 05 A1 03 02 01 0D A2 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A4 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 5E 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A6 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_tgs_rep,ktest_equal_tgs_rep,krb5_free_kdc_rep);501502ktest_destroy_pa_data_array(&(ref.padata));503decode_run("tgs_rep","(optionals NULL)","6D 81 C2 30 81 BF A0 03 02 01 05 A1 03 02 01 0D A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A4 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 5E 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A6 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_tgs_rep,ktest_equal_tgs_rep,krb5_free_kdc_rep);504505ktest_empty_kdc_rep(&ref);506}507508/****************************************************************/509/* decode_krb5_ap_req */510{511setup(krb5_ap_req,ktest_make_sample_ap_req);512decode_run("ap_req","","6E 81 9D 30 81 9A A0 03 02 01 05 A1 03 02 01 0E A2 07 03 05 00 FE DC BA 98 A3 5E 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A4 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_ap_req,ktest_equal_ap_req,krb5_free_ap_req);513ktest_empty_ap_req(&ref);514515}516517/****************************************************************/518/* decode_krb5_ap_rep */519{520setup(krb5_ap_rep,ktest_make_sample_ap_rep);521decode_run("ap_rep","","6F 33 30 31 A0 03 02 01 05 A1 03 02 01 0F A2 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_ap_rep,ktest_equal_ap_rep,krb5_free_ap_rep);522ktest_empty_ap_rep(&ref);523}524525/****************************************************************/526/* decode_krb5_ap_rep_enc_part */527{528setup(krb5_ap_rep_enc_part,ktest_make_sample_ap_rep_enc_part);529530decode_run("ap_rep_enc_part","","7B 36 30 34 A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40 A2 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A3 03 02 01 11",decode_krb5_ap_rep_enc_part,ktest_equal_ap_rep_enc_part,krb5_free_ap_rep_enc_part);531532ktest_destroy_keyblock(&(ref.subkey));533ref.seq_number = 0;534decode_run("ap_rep_enc_part","(optionals NULL)","7B 1C 30 1A A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40",decode_krb5_ap_rep_enc_part,ktest_equal_ap_rep_enc_part,krb5_free_ap_rep_enc_part);535536retval = krb5_data_hex_parse(&code, "7B 06 30 04 A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40");537if (retval) {538com_err("krb5_decode_test", retval, "while parsing");539exit(1);540}541retval = decode_krb5_ap_rep_enc_part(&code, &var);542if (retval != ASN1_OVERRUN) {543printf("ERROR: ");544error_count++;545} else {546printf("OK: ");547}548printf("ap_rep_enc_part(optionals NULL + expect ASN1_OVERRUN for inconsistent length of timestamp)\n");549krb5_free_data_contents(test_context, &code);550krb5_free_ap_rep_enc_part(test_context, var);551552ktest_empty_ap_rep_enc_part(&ref);553}554555/****************************************************************/556/* decode_krb5_as_req */557{558setup(krb5_kdc_req,ktest_make_sample_kdc_req);559ref.msg_type = KRB5_AS_REQ;560561ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;562decode_run("as_req","","6A 82 01 E4 30 82 01 E0 A1 03 02 01 05 A2 03 02 01 0A A3 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A4 82 01 AA 30 82 01 A6 A0 07 03 05 00 FE DC BA 90 A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 A9 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 AA 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_as_req,ktest_equal_as_req,krb5_free_kdc_req);563564ktest_destroy_pa_data_array(&(ref.padata));565ktest_destroy_principal(&(ref.client));566#ifndef ISODE_SUCKS567ktest_destroy_principal(&(ref.server));568#endif569ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;570ref.from = 0;571ref.rtime = 0;572ktest_destroy_addresses(&(ref.addresses));573ktest_destroy_enc_data(&(ref.authorization_data));574decode_run("as_req","(optionals NULL except second_ticket)","6A 82 01 14 30 82 01 10 A1 03 02 01 05 A2 03 02 01 0A A4 82 01 02 30 81 FF A0 07 03 05 00 FE DC BA 98 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_as_req,ktest_equal_as_req,krb5_free_kdc_req);575ktest_destroy_sequence_of_ticket(&(ref.second_ticket));576#ifndef ISODE_SUCKS577ktest_make_sample_principal(&(ref.server));578#endif579ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;580decode_run("as_req","(optionals NULL except server)","6A 69 30 67 A1 03 02 01 05 A2 03 02 01 0A A4 5B 30 59 A0 07 03 05 00 FE DC BA 90 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01",decode_krb5_as_req,ktest_equal_as_req,krb5_free_kdc_req);581582ktest_empty_kdc_req(&ref);583584}585586587/****************************************************************/588/* decode_krb5_tgs_req */589{590setup(krb5_kdc_req,ktest_make_sample_kdc_req);591ref.msg_type = KRB5_TGS_REQ;592593ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;594decode_run("tgs_req","","6C 82 01 E4 30 82 01 E0 A1 03 02 01 05 A2 03 02 01 0C A3 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A4 82 01 AA 30 82 01 A6 A0 07 03 05 00 FE DC BA 90 A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 A9 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 AA 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_tgs_req,ktest_equal_tgs_req,krb5_free_kdc_req);595596ktest_destroy_pa_data_array(&(ref.padata));597ktest_destroy_principal(&(ref.client));598#ifndef ISODE_SUCKS599ktest_destroy_principal(&(ref.server));600#endif601ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;602ref.from = 0;603ref.rtime = 0;604ktest_destroy_addresses(&(ref.addresses));605ktest_destroy_enc_data(&(ref.authorization_data));606decode_run("tgs_req","(optionals NULL except second_ticket)","6C 82 01 14 30 82 01 10 A1 03 02 01 05 A2 03 02 01 0C A4 82 01 02 30 81 FF A0 07 03 05 00 FE DC BA 98 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_tgs_req,ktest_equal_tgs_req,krb5_free_kdc_req);607608ktest_destroy_sequence_of_ticket(&(ref.second_ticket));609#ifndef ISODE_SUCKS610ktest_make_sample_principal(&(ref.server));611#endif612ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;613decode_run("tgs_req","(optionals NULL except server)","6C 69 30 67 A1 03 02 01 05 A2 03 02 01 0C A4 5B 30 59 A0 07 03 05 00 FE DC BA 90 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01",decode_krb5_tgs_req,ktest_equal_tgs_req,krb5_free_kdc_req);614615ktest_empty_kdc_req(&ref);616}617618/****************************************************************/619/* decode_krb5_kdc_req_body */620{621krb5_kdc_req ref, *var;622memset(&ref, 0, sizeof(krb5_kdc_req));623ktest_make_sample_kdc_req_body(&ref);624ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;625decode_run("kdc_req_body","","30 82 01 A6 A0 07 03 05 00 FE DC BA 90 A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 A9 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 AA 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_kdc_req_body,ktest_equal_kdc_req_body,krb5_free_kdc_req);626627ktest_destroy_principal(&(ref.client));628#ifndef ISODE_SUCKS629ktest_destroy_principal(&(ref.server));630#endif631ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;632ref.from = 0;633ref.rtime = 0;634ktest_destroy_addresses(&(ref.addresses));635ktest_destroy_enc_data(&(ref.authorization_data));636decode_run("kdc_req_body","(optionals NULL except second_ticket)","30 81 FF A0 07 03 05 00 FE DC BA 98 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_kdc_req_body,ktest_equal_kdc_req_body,krb5_free_kdc_req);637638ktest_destroy_sequence_of_ticket(&(ref.second_ticket));639#ifndef ISODE_SUCKS640ktest_make_sample_principal(&(ref.server));641#endif642ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;643decode_run("kdc_req_body","(optionals NULL except server)","30 59 A0 07 03 05 00 FE DC BA 90 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01",decode_krb5_kdc_req_body,ktest_equal_kdc_req_body,krb5_free_kdc_req);644ref.nktypes = 0;645free(ref.ktype);646ref.ktype = NULL;647decode_run("kdc_req_body","(optionals NULL except server; zero-length etypes)","30 53 A0 07 03 05 00 FE DC BA 90 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 02 30 00",decode_krb5_kdc_req_body,ktest_equal_kdc_req_body,krb5_free_kdc_req);648649ktest_empty_kdc_req(&ref);650}651652653/****************************************************************/654/* decode_krb5_safe */655{656setup(krb5_safe,ktest_make_sample_safe);657decode_run("safe","","74 6E 30 6C A0 03 02 01 05 A1 03 02 01 14 A2 4F 30 4D A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A2 05 02 03 01 E2 40 A3 03 02 01 11 A4 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A5 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A3 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",decode_krb5_safe,ktest_equal_safe,krb5_free_safe);658659ref.timestamp = 0;660ref.usec = 0;661ref.seq_number = 0;662ktest_destroy_address(&(ref.r_address));663decode_run("safe","(optionals NULL)","74 3E 30 3C A0 03 02 01 05 A1 03 02 01 14 A2 1F 30 1D A0 0A 04 08 6B 72 62 35 64 61 74 61 A4 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A3 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",decode_krb5_safe,ktest_equal_safe,krb5_free_safe);664665ktest_empty_safe(&ref);666}667668/****************************************************************/669/* decode_krb5_priv */670{671setup(krb5_priv,ktest_make_sample_priv);672decode_run("priv","","75 33 30 31 A0 03 02 01 05 A1 03 02 01 15 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_priv,ktest_equal_priv,krb5_free_priv);673ktest_empty_priv(&ref);674}675676/****************************************************************/677/* decode_krb5_enc_priv_part */678{679setup(krb5_priv_enc_part,ktest_make_sample_priv_enc_part);680decode_run("enc_priv_part","","7C 4F 30 4D A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A2 05 02 03 01 E2 40 A3 03 02 01 11 A4 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A5 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23",decode_krb5_enc_priv_part,ktest_equal_enc_priv_part,krb5_free_priv_enc_part);681682ref.timestamp = 0;683ref.usec = 0;684ref.seq_number = 0;685ktest_destroy_address(&(ref.r_address));686decode_run("enc_priv_part","(optionals NULL)","7C 1F 30 1D A0 0A 04 08 6B 72 62 35 64 61 74 61 A4 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23",decode_krb5_enc_priv_part,ktest_equal_enc_priv_part,krb5_free_priv_enc_part);687ktest_empty_priv_enc_part(&ref);688}689690/****************************************************************/691/* decode_krb5_cred */692{693setup(krb5_cred,ktest_make_sample_cred);694decode_run("cred","","76 81 F6 30 81 F3 A0 03 02 01 05 A1 03 02 01 16 A2 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_cred,ktest_equal_cred,krb5_free_cred);695ktest_empty_cred(&ref);696}697698/****************************************************************/699/* decode_krb5_enc_cred_part */700{701setup(krb5_cred_enc_part,ktest_make_sample_cred_enc_part);702decode_run("enc_cred_part","","7D 82 02 23 30 82 02 1F A0 82 01 DA 30 82 01 D6 30 81 E8 A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 07 03 05 00 FE DC BA 98 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A8 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A9 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 AA 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 81 E8 A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 07 03 05 00 FE DC BA 98 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A8 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A9 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 AA 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A1 03 02 01 2A A2 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A3 05 02 03 01 E2 40 A4 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 A5 0F 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23",decode_krb5_enc_cred_part,ktest_equal_enc_cred_part,krb5_free_cred_enc_part);703/* free_cred_enc_part does not free the pointer */704free(var);705ktest_destroy_principal(&(ref.ticket_info[0]->client));706ktest_destroy_principal(&(ref.ticket_info[0]->server));707ref.ticket_info[0]->flags = 0;708ref.ticket_info[0]->times.authtime = 0;709ref.ticket_info[0]->times.starttime = 0;710ref.ticket_info[0]->times.endtime = 0;711ref.ticket_info[0]->times.renew_till = 0;712ktest_destroy_addresses(&(ref.ticket_info[0]->caddrs));713ref.nonce = 0;714ref.timestamp = 0;715ref.usec = 0;716ktest_destroy_address(&(ref.s_address));717ktest_destroy_address(&(ref.r_address));718decode_run("enc_cred_part","(optionals NULL)","7D 82 01 0E 30 82 01 0A A0 82 01 06 30 82 01 02 30 15 A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 30 81 E8 A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 07 03 05 00 FE DC BA 98 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A8 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A9 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 AA 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23",decode_krb5_enc_cred_part,ktest_equal_enc_cred_part,krb5_free_cred_enc_part);719/* free_cred_enc_part does not free the pointer */720free(var);721722ktest_empty_cred_enc_part(&ref);723}724725/****************************************************************/726/* decode_krb5_error */727{728setup(krb5_error,ktest_make_sample_error);729decode_run("error","","7E 81 BA 30 81 B7 A0 03 02 01 05 A1 03 02 01 1E A2 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A3 05 02 03 01 E2 40 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 05 02 03 01 E2 40 A6 03 02 01 3C A7 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A8 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A9 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 AA 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 AB 0A 1B 08 6B 72 62 35 64 61 74 61 AC 0A 04 08 6B 72 62 35 64 61 74 61",decode_krb5_error,ktest_equal_error,krb5_free_error);730731ref.ctime = 0;732ktest_destroy_principal(&(ref.client));733ktest_empty_data(&(ref.text));734ktest_empty_data(&(ref.e_data));735decode_run("error","(optionals NULL)","7E 60 30 5E A0 03 02 01 05 A1 03 02 01 1E A3 05 02 03 01 E2 40 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 05 02 03 01 E2 40 A6 03 02 01 3C A9 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 AA 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61",decode_krb5_error,ktest_equal_error,krb5_free_error);736737ktest_empty_error(&ref);738}739740/****************************************************************/741/* decode_krb5_authdata and krb5int_get_authdata_containee_types */742{743krb5_authdata **ref, **var, tmp;744unsigned int count;745krb5_authdatatype *types = NULL;746ktest_make_sample_authorization_data(&ref);747retval = krb5_data_hex_parse(&code,"30 22 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72");748if (retval) {749com_err("parsing authorization_data",retval,"");750exit(1);751}752retval = decode_krb5_authdata(&code,&var);753if (retval) com_err("decoding authorization_data",retval,"");754test(ktest_equal_authorization_data(ref,var),"authorization_data\n");755tmp.length = code.length;756tmp.contents = (krb5_octet *)code.data;757retval = krb5int_get_authdata_containee_types(test_context, &tmp,758&count, &types);759if (retval) com_err("reading authdata types",retval,"");760test(count == 2 && types[0] == 1 && types[1] == 1,761"authorization_data(types only)\n");762free(types);763krb5_free_data_contents(test_context, &code);764krb5_free_authdata(test_context, var);765ktest_destroy_authorization_data(&ref);766}767768/****************************************************************/769/* decode_krb5_padata_sequence and decode_krb5_typed_data */770{771krb5_pa_data **ref, **var;772ktest_make_sample_pa_data_array(&ref);773retval = krb5_data_hex_parse(&code,"30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61");774if (retval) {775com_err("parsing padata_sequence",retval,"");776exit(1);777}778retval = decode_krb5_padata_sequence(&code,&var);779if (retval) com_err("decoding padata_sequence",retval,"");780test(ktest_equal_sequence_of_pa_data(ref,var),"pa_data\n");781krb5_free_pa_data(test_context, var);782krb5_free_data_contents(test_context, &code);783retval = krb5_data_hex_parse(&code,"30 24 30 10 A0 03 02 01 0D A1 09 04 07 70 61 2D 64 61 74 61 30 10 A0 03 02 01 0D A1 09 04 07 70 61 2D 64 61 74 61");784if (retval) {785com_err("parsing padata_sequence",retval,"");786exit(1);787}788retval = decode_krb5_typed_data(&code,&var);789if (retval) com_err("decoding typed_data",retval,"");790test(ktest_equal_sequence_of_pa_data(ref,var),"typed_data\n");791krb5_free_pa_data(test_context, var);792krb5_free_data_contents(test_context, &code);793ktest_destroy_pa_data_array(&ref);794}795796/****************************************************************/797/* decode_krb5_padata_sequence (empty) */798{799krb5_pa_data **ref, **var;800ktest_make_sample_empty_pa_data_array(&ref);801retval = krb5_data_hex_parse(&code,"30 00");802if (retval) {803com_err("parsing padata_sequence (empty)",retval,"");804exit(1);805}806retval = decode_krb5_padata_sequence(&code,&var);807if (retval) com_err("decoding padata_sequence (empty)",retval,"");808test(ktest_equal_sequence_of_pa_data(ref,var),"pa_data (empty)\n");809krb5_free_pa_data(test_context, var);810krb5_free_data_contents(test_context, &code);811ktest_destroy_pa_data_array(&ref);812}813814/****************************************************************/815/* decode_etype_info */816{817krb5_etype_info ref, var;818819ktest_make_sample_etype_info(&ref);820retval = krb5_data_hex_parse(&code,"30 33 30 14 A0 03 02 01 00 A1 0D 04 0B 4D 6F 72 74 6F 6E 27 73 20 23 30 30 05 A0 03 02 01 01 30 14 A0 03 02 01 02 A1 0D 04 0B 4D 6F 72 74 6F 6E 27 73 20 23 32");821if (retval) {822com_err("krb5_decode_test", retval, "while parsing etype_info");823exit(1);824}825retval = decode_krb5_etype_info(&code,&var);826if (retval) {827com_err("krb5_decode_test", retval, "while decoding etype_info");828}829test(ktest_equal_etype_info(ref,var),"etype_info\n");830831ktest_destroy_etype_info(var);832ktest_destroy_etype_info_entry(ref[2]); ref[2] = 0;833ktest_destroy_etype_info_entry(ref[1]); ref[1] = 0;834krb5_free_data_contents(test_context, &code);835836retval = krb5_data_hex_parse(&code,"30 16 30 14 A0 03 02 01 00 A1 0D 04 0B 4D 6F 72 74 6F 6E 27 73 20 23 30");837if (retval) {838com_err("krb5_decode_test", retval,839"while parsing etype_info (only one)");840exit(1);841}842retval = decode_krb5_etype_info(&code,&var);843if (retval) {844com_err("krb5_decode_test", retval,845"while decoding etype_info (only one)");846}847test(ktest_equal_etype_info(ref,var),"etype_info (only one)\n");848849ktest_destroy_etype_info(var);850ktest_destroy_etype_info_entry(ref[0]); ref[0] = 0;851krb5_free_data_contents(test_context, &code);852853retval = krb5_data_hex_parse(&code,"30 00");854if (retval) {855com_err("krb5_decode_test", retval,856"while parsing etype_info (no info)");857exit(1);858}859retval = decode_krb5_etype_info(&code,&var);860if (retval) {861com_err("krb5_decode_test", retval,862"while decoding etype_info (no info)");863}864test(ktest_equal_etype_info(ref,var),"etype_info (no info)\n");865866krb5_free_data_contents(test_context, &code);867ktest_destroy_etype_info(var);868ktest_destroy_etype_info(ref);869}870871/****************************************************************/872/* decode_etype_info2 */873{874krb5_etype_info ref, var;875876ktest_make_sample_etype_info2(&ref);877retval = krb5_data_hex_parse(&code,"30 51 30 1E A0 03 02 01 00 A1 0D 1B 0B 4D 6F 72 74 6F 6E 27 73 20 23 30 A2 08 04 06 73 32 6B 3A 20 30 30 0F A0 03 02 01 01 A2 08 04 06 73 32 6B 3A 20 31 30 1E A0 03 02 01 02 A1 0D 1B 0B 4D 6F 72 74 6F 6E 27 73 20 23 32 A2 08 04 06 73 32 6B 3A 20 32");878if (retval) {879com_err("krb5_decode_test", retval, "while parsing etype_info2");880exit(1);881}882retval = decode_krb5_etype_info2(&code,&var);883if (retval) {884com_err("krb5_decode_test", retval, "while decoding etype_info2");885}886test(ktest_equal_etype_info(ref,var),"etype_info2\n");887888ktest_destroy_etype_info(var);889ktest_destroy_etype_info_entry(ref[2]); ref[2] = 0;890ktest_destroy_etype_info_entry(ref[1]); ref[1] = 0;891krb5_free_data_contents(test_context, &code);892893retval = krb5_data_hex_parse(&code,"30 20 30 1E A0 03 02 01 00 A1 0D 1B 0B 4D 6F 72 74 6F 6E 27 73 20 23 30 A2 08 04 06 73 32 6B 3A 20 30");894if (retval) {895com_err("krb5_decode_test", retval,896"while parsing etype_info2 (only one)");897exit(1);898}899retval = decode_krb5_etype_info2(&code,&var);900if (retval) {901com_err("krb5_decode_test", retval,902"while decoding etype_info2 (only one)");903}904test(ktest_equal_etype_info(ref,var),"etype_info2 (only one)\n");905906krb5_free_data_contents(test_context, &code);907ktest_destroy_etype_info(var);908ktest_destroy_etype_info(ref);909}910911/****************************************************************/912/* decode_pa_enc_ts */913{914setup(krb5_pa_enc_ts,ktest_make_sample_pa_enc_ts);915decode_run("pa_enc_ts","","30 1A A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40",decode_krb5_pa_enc_ts,ktest_equal_krb5_pa_enc_ts,krb5_free_pa_enc_ts);916ref.pausec = 0;917decode_run("pa_enc_ts (no usec)","","30 13 A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",decode_krb5_pa_enc_ts,ktest_equal_krb5_pa_enc_ts,krb5_free_pa_enc_ts);918}919920/****************************************************************/921/* decode_enc_data */922{923setup(krb5_enc_data,ktest_make_sample_enc_data);924decode_run("enc_data","","30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_enc_data,ktest_equal_enc_data,krb5_ktest_free_enc_data);925ref.kvno = 0xFF000000;926decode_run("enc_data","(MSB-set kvno)","30 26 A0 03 02 01 00 A1 06 02 04 FF 00 00 00 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_enc_data,ktest_equal_enc_data,krb5_ktest_free_enc_data);927ref.kvno = 0xFFFFFFFF;928decode_run("enc_data","(kvno=-1)","30 23 A0 03 02 01 00 A1 03 02 01 FF A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_enc_data,ktest_equal_enc_data,krb5_ktest_free_enc_data);929ktest_destroy_enc_data(&ref);930}931932/****************************************************************/933/* decode_sam_challenge_2 */934{935setup(krb5_sam_challenge_2,ktest_make_sample_sam_challenge_2);936decode_run("sam_challenge_2","","30 22 A0 0D 30 0B 04 09 63 68 61 6C 6C 65 6E 67 65 A1 11 30 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",decode_krb5_sam_challenge_2,ktest_equal_sam_challenge_2,krb5_free_sam_challenge_2);937ktest_empty_sam_challenge_2(&ref);938939}940941/****************************************************************/942/* decode_sam_challenge_2_body */943{944setup(krb5_sam_challenge_2_body,ktest_make_sample_sam_challenge_2_body);945decode_run("sam_challenge_2_body","","30 64 A0 03 02 01 2A A1 07 03 05 00 80 00 00 00 A2 0B 04 09 74 79 70 65 20 6E 61 6D 65 A4 11 04 0F 63 68 61 6C 6C 65 6E 67 65 20 6C 61 62 65 6C A5 10 04 0E 63 68 61 6C 6C 65 6E 67 65 20 69 70 73 65 A6 16 04 14 72 65 73 70 6F 6E 73 65 5F 70 72 6F 6D 70 74 20 69 70 73 65 A8 05 02 03 54 32 10 A9 03 02 01 14",decode_krb5_sam_challenge_2_body,ktest_equal_sam_challenge_2_body,krb5_free_sam_challenge_2_body);946ktest_empty_sam_challenge_2_body(&ref);947948}949950/****************************************************************/951/* decode_pa_for_user */952{953setup(krb5_pa_for_user,ktest_make_sample_pa_for_user);954decode_run("pa_for_user","","30 4B A0 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34 A3 0A 1B 08 6B 72 62 35 64 61 74 61",decode_krb5_pa_for_user,ktest_equal_pa_for_user,krb5_free_pa_for_user);955ktest_empty_pa_for_user(&ref);956}957958/****************************************************************/959/* decode_pa_s4u_x509_user */960{961setup(krb5_pa_s4u_x509_user,ktest_make_sample_pa_s4u_x509_user);962decode_run("pa_s4u_x509_user","","30 68 A0 55 30 53 A0 06 02 04 00 CA 14 9A A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 12 04 10 70 61 5F 73 34 75 5F 78 35 30 39 5F 75 73 65 72 A4 07 03 05 00 80 00 00 00 A1 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",decode_krb5_pa_s4u_x509_user,ktest_equal_pa_s4u_x509_user,krb5_free_pa_s4u_x509_user);963ktest_empty_pa_s4u_x509_user(&ref);964}965966/****************************************************************/967/* decode_pa_pac_req */968{969/* This type has no encoder and is very simple. Test two970* hand-generated encodings. */971krb5_pa_pac_req *req1 = NULL, *req2 = NULL;972code = make_data("\x30\x05\xA0\x03\x01\x01\x00", 7);973retval = decode_krb5_pa_pac_req(&code, &req1);974if (retval) {975com_err(argv[0], retval, "while decoding PA-PAC-REQ");976exit(1);977}978code = make_data("\x30\x05\xA0\x03\x01\x01\xFF", 7);979retval = decode_krb5_pa_pac_req(&code, &req2);980if (retval) {981com_err(argv[0], retval, "while decoding PA-PAC-REQ");982exit(1);983}984if (req1->include_pac != 0 || req2->include_pac != 1) {985printf("ERROR: ");986error_count++;987} else {988printf("OK: ");989}990printf("pa_pac_rec\n");991free(req1);992free(req2);993}994995/****************************************************************/996/* decode_ad_kdcissued */997{998setup(krb5_ad_kdcissued,ktest_make_sample_ad_kdcissued);999decode_run("ad_kdcissued","","30 65 A0 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 24 30 22 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72",decode_krb5_ad_kdcissued,ktest_equal_ad_kdcissued,krb5_free_ad_kdcissued);1000ktest_empty_ad_kdcissued(&ref);1001}10021003/****************************************************************/1004/* decode_iakerb_header */1005{1006setup(krb5_iakerb_header,ktest_make_sample_iakerb_header);1007decode_run("iakerb_header","","30 18 A1 0A 0C 08 6B 72 62 35 64 61 74 61 A2 0A 04 08 6B 72 62 35 64 61 74 61",decode_krb5_iakerb_header,ktest_equal_iakerb_header,krb5_free_iakerb_header);1008ktest_empty_iakerb_header(&ref);1009}10101011/****************************************************************/1012/* decode_iakerb_finished */1013{1014setup(krb5_iakerb_finished,ktest_make_sample_iakerb_finished);1015decode_run("iakerb_finished","","30 11 A1 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",decode_krb5_iakerb_finished,ktest_equal_iakerb_finished,krb5_free_iakerb_finished);1016ktest_empty_iakerb_finished(&ref);1017}10181019/****************************************************************/1020/* decode_fast_response */1021{1022setup(krb5_fast_response,ktest_make_sample_fast_response);1023decode_run("fast_response","","30 81 9F A0 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A1 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A2 5B 30 59 A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34 A3 03 02 01 2A",decode_krb5_fast_response,ktest_equal_fast_response,krb5_free_fast_response);1024ktest_empty_fast_response(&ref);1025}10261027/****************************************************************/1028/* decode_pa_fx_fast_reply */1029{1030setup(krb5_enc_data,ktest_make_sample_enc_data);1031decode_run("pa_fx_fast_reply","","A0 29 30 27 A0 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_pa_fx_fast_reply,ktest_equal_enc_data,krb5_free_enc_data);1032ktest_destroy_enc_data(&ref);1033}10341035/****************************************************************/1036/* decode_krb5_otp_tokeninfo */1037{1038setup(krb5_otp_tokeninfo,ktest_make_minimal_otp_tokeninfo);1039decode_run("otp_tokeninfo","(optionals NULL)","30 07 80 05 00 00 00 00 00",decode_krb5_otp_tokeninfo,ktest_equal_otp_tokeninfo,k5_free_otp_tokeninfo);1040ktest_empty_otp_tokeninfo(&ref);1041}1042{1043setup(krb5_otp_tokeninfo,ktest_make_maximal_otp_tokeninfo);1044decode_run("otp_tokeninfo","","30 72 80 05 00 77 00 00 00 81 0B 45 78 61 6D 70 6C 65 63 6F 72 70 82 05 68 61 72 6B 21 83 01 0A 84 01 02 85 09 79 6F 75 72 74 6F 6B 65 6E 86 28 75 72 6E 3A 69 65 74 66 3A 70 61 72 61 6D 73 3A 78 6D 6C 3A 6E 73 3A 6B 65 79 70 72 6F 76 3A 70 73 6B 63 3A 68 6F 74 70 A7 16 30 0B 06 09 60 86 48 01 65 03 04 02 01 30 07 06 05 2B 0E 03 02 1A 88 02 03 E8",decode_krb5_otp_tokeninfo,ktest_equal_otp_tokeninfo,k5_free_otp_tokeninfo);1045ktest_empty_otp_tokeninfo(&ref);1046}10471048/****************************************************************/1049/* decode_krb5_pa_otp_challenge */1050{1051setup(krb5_pa_otp_challenge,ktest_make_minimal_pa_otp_challenge);1052decode_run("pa_otp_challenge","(optionals NULL)","30 15 80 08 6D 69 6E 6E 6F 6E 63 65 A2 09 30 07 80 05 00 00 00 00 00",decode_krb5_pa_otp_challenge,ktest_equal_pa_otp_challenge,k5_free_pa_otp_challenge);1053ktest_empty_pa_otp_challenge(&ref);1054}1055{1056setup(krb5_pa_otp_challenge,ktest_make_maximal_pa_otp_challenge);1057decode_run("pa_otp_challenge","","30 81 A5 80 08 6D 61 78 6E 6F 6E 63 65 81 0B 74 65 73 74 73 65 72 76 69 63 65 A2 7D 30 07 80 05 00 00 00 00 00 30 72 80 05 00 77 00 00 00 81 0B 45 78 61 6D 70 6C 65 63 6F 72 70 82 05 68 61 72 6B 21 83 01 0A 84 01 02 85 09 79 6F 75 72 74 6F 6B 65 6E 86 28 75 72 6E 3A 69 65 74 66 3A 70 61 72 61 6D 73 3A 78 6D 6C 3A 6E 73 3A 6B 65 79 70 72 6F 76 3A 70 73 6B 63 3A 68 6F 74 70 A7 16 30 0B 06 09 60 86 48 01 65 03 04 02 01 30 07 06 05 2B 0E 03 02 1A 88 02 03 E8 83 07 6B 65 79 73 61 6C 74 84 04 31 32 33 34",decode_krb5_pa_otp_challenge,ktest_equal_pa_otp_challenge,k5_free_pa_otp_challenge);1058ktest_empty_pa_otp_challenge(&ref);1059}10601061/****************************************************************/1062/* decode_krb5_pa_otp_req */1063{1064setup(krb5_pa_otp_req,ktest_make_minimal_pa_otp_req);1065decode_run("pa_otp_req","(optionals NULL)","30 2C 80 05 00 00 00 00 00 A2 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_pa_otp_req,ktest_equal_pa_otp_req,k5_free_pa_otp_req);1066ktest_empty_pa_otp_req(&ref);1067}1068{1069setup(krb5_pa_otp_req,ktest_make_maximal_pa_otp_req);1070decode_run("pa_otp_req","","30 81 B9 80 05 00 60 00 00 00 81 05 6E 6F 6E 63 65 A2 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A3 0B 06 09 60 86 48 01 65 03 04 02 01 84 02 03 E8 85 05 66 72 6F 67 73 86 0A 6D 79 66 69 72 73 74 70 69 6E 87 05 68 61 72 6B 21 88 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A 89 03 33 34 36 8A 01 02 8B 09 79 6F 75 72 74 6F 6B 65 6E 8C 28 75 72 6E 3A 69 65 74 66 3A 70 61 72 61 6D 73 3A 78 6D 6C 3A 6E 73 3A 6B 65 79 70 72 6F 76 3A 70 73 6B 63 3A 68 6F 74 70 8D 0B 45 78 61 6D 70 6C 65 63 6F 72 70",decode_krb5_pa_otp_req,ktest_equal_pa_otp_req,k5_free_pa_otp_req);1071ktest_empty_pa_otp_req(&ref);1072}10731074/****************************************************************/1075/* decode_krb5_pa_otp_enc_req */1076{1077setup(krb5_data,ktest_make_sample_data);1078decode_run("pa_otp_enc_req","","30 0A 80 08 6B 72 62 35 64 61 74 61",decode_krb5_pa_otp_enc_req,ktest_equal_data,krb5_free_data);1079ktest_empty_data(&ref);1080}10811082/****************************************************************/1083/* decode_krb5_kkdcp_message */1084{1085setup(krb5_kkdcp_message,ktest_make_sample_kkdcp_message);1086decode_run("kkdcp_message","","30 82 01 FC A0 82 01 EC 04 82 01 E8 6A 82 01 E4 30 82 01 E0 A1 03 02 01 05 A2 03 02 01 0A A3 26 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 A4 82 01 AA 30 82 01 A6 A0 07 03 05 00 FE DC BA 98 A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A2 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A3 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A4 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A6 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A7 03 02 01 2A A8 08 30 06 02 01 00 02 01 01 A9 20 30 1E 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 30 0D A0 03 02 01 02 A1 06 04 04 12 D0 00 23 AA 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 AB 81 BF 30 81 BC 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 61 5C 30 5A A0 03 02 01 05 A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A2 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65 A1 0A 1B 08 6B 72 62 35 64 61 74 61",decode_krb5_kkdcp_message,ktest_equal_kkdcp_message,ktest_free_kkdcp_message);1087ktest_empty_kkdcp_message(&ref);1088}10891090/****************************************************************/1091/* decode_krb5_cammac */1092{1093setup(krb5_cammac,ktest_make_minimal_cammac);1094decode_run("cammac","(optionals NULL)","30 12 A0 10 30 0E 30 0C A0 03 02 01 01 A1 05 04 03 61 64 31",decode_krb5_cammac,ktest_equal_cammac,k5_free_cammac);1095ktest_empty_cammac(&ref);1096}1097{1098setup(krb5_cammac,ktest_make_maximal_cammac);1099decode_run("cammac","","30 81 F2 A0 1E 30 1C 30 0C A0 03 02 01 01 A1 05 04 03 61 64 31 30 0C A0 03 02 01 02 A1 05 04 03 61 64 32 A1 3D 30 3B A0 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A1 03 02 01 05 A2 03 02 01 10 A3 13 30 11 A0 03 02 01 01 A1 0A 04 08 63 6B 73 75 6D 6B 64 63 A2 3D 30 3B A0 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A1 03 02 01 05 A2 03 02 01 10 A3 13 30 11 A0 03 02 01 01 A1 0A 04 08 63 6B 73 75 6D 73 76 63 A3 52 30 50 30 13 A3 11 30 0F A0 03 02 01 01 A1 08 04 06 63 6B 73 75 6D 31 30 39 A0 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61 A1 03 02 01 05 A2 03 02 01 10 A3 11 30 0F A0 03 02 01 01 A1 08 04 06 63 6B 73 75 6D 32",decode_krb5_cammac,ktest_equal_cammac,k5_free_cammac);1100ktest_empty_cammac(&ref);1101}11021103/****************************************************************/1104/* decode_krb5_secure_cookie */1105{1106setup(krb5_secure_cookie,ktest_make_sample_secure_cookie);1107decode_run("secure_cookie","","30 2C 02 04 2D F8 02 25 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61",decode_krb5_secure_cookie,ktest_equal_secure_cookie,k5_free_secure_cookie);1108ktest_empty_secure_cookie(&ref);1109}11101111/****************************************************************/1112/* decode_krb5_spake_factor */1113{1114setup(krb5_spake_factor,ktest_make_minimal_spake_factor);1115decode_run("spake_factor","(optionals NULL)","30 05 A0 03 02 01 01",decode_krb5_spake_factor,ktest_equal_spake_factor,k5_free_spake_factor);1116ktest_empty_spake_factor(&ref);1117}1118{1119setup(krb5_spake_factor,ktest_make_maximal_spake_factor);1120decode_run("spake_factor","","30 0E A0 03 02 01 02 A1 07 04 05 66 64 61 74 61",decode_krb5_spake_factor,ktest_equal_spake_factor,k5_free_spake_factor);1121ktest_empty_spake_factor(&ref);1122}11231124/****************************************************************/1125/* decode_krb5_pa_spake */1126{1127setup(krb5_pa_spake,ktest_make_support_pa_spake);1128decode_run("pa_spake","(support)","A0 0C 30 0A A0 08 30 06 02 01 01 02 01 02",decode_krb5_pa_spake,ktest_equal_pa_spake,k5_free_pa_spake);1129ktest_empty_pa_spake(&ref);1130}1131{1132setup(krb5_pa_spake,ktest_make_challenge_pa_spake);1133decode_run("pa_spake","(challenge)","A1 2D 30 2B A0 03 02 01 01 A1 09 04 07 54 20 76 61 6C 75 65 A2 19 30 17 30 05 A0 03 02 01 01 30 0E A0 03 02 01 02 A1 07 04 05 66 64 61 74 61",decode_krb5_pa_spake,ktest_equal_pa_spake,k5_free_pa_spake);1134ktest_empty_pa_spake(&ref);1135}1136{1137setup(krb5_pa_spake,ktest_make_response_pa_spake);1138decode_run("pa_spake","(response)","A2 34 30 32 A0 09 04 07 53 20 76 61 6C 75 65 A1 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_pa_spake,ktest_equal_pa_spake,k5_free_pa_spake);1139ktest_empty_pa_spake(&ref);1140}1141{1142setup(krb5_pa_spake,ktest_make_encdata_pa_spake);1143decode_run("pa_spake","(encdata)","A3 25 30 23 A0 03 02 01 00 A1 03 02 01 05 A2 17 04 15 6B 72 62 41 53 4E 2E 31 20 74 65 73 74 20 6D 65 73 73 61 67 65",decode_krb5_pa_spake,ktest_equal_pa_spake,k5_free_pa_spake);1144ktest_empty_pa_spake(&ref);1145}11461147#ifndef DISABLE_PKINIT11481149/****************************************************************/1150/* decode_krb5_pa_pk_as_req */1151{1152setup(krb5_pa_pk_as_req,ktest_make_sample_pa_pk_as_req);1153decode_run("krb5_pa_pk_as_req","","30 38 80 08 6B 72 62 35 64 61 74 61 A1 22 30 20 30 1E 80 08 6B 72 62 35 64 61 74 61 81 08 6B 72 62 35 64 61 74 61 82 08 6B 72 62 35 64 61 74 61 82 08 6B 72 62 35 64 61 74 61",1154acc.decode_krb5_pa_pk_as_req,1155ktest_equal_pa_pk_as_req,ktest_free_pa_pk_as_req);1156ktest_empty_pa_pk_as_req(&ref);1157}11581159/****************************************************************/1160/* decode_krb5_pa_pk_as_rep */1161{1162setup(krb5_pa_pk_as_rep,ktest_make_sample_pa_pk_as_rep_dhInfo);1163decode_run("krb5_pa_pk_as_rep","(dhInfo)","A0 28 30 26 80 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61 A2 0E 30 0C A0 0A 06 08 6B 72 62 35 64 61 74 61",1164acc.decode_krb5_pa_pk_as_rep,1165ktest_equal_pa_pk_as_rep,ktest_free_pa_pk_as_rep);1166ktest_empty_pa_pk_as_rep(&ref);1167}1168{1169setup(krb5_pa_pk_as_rep,ktest_make_sample_pa_pk_as_rep_encKeyPack);1170decode_run("krb5_pa_pk_as_rep","(encKeyPack)","81 08 6B 72 62 35 64 61 74 61",1171acc.decode_krb5_pa_pk_as_rep,1172ktest_equal_pa_pk_as_rep,ktest_free_pa_pk_as_rep);1173ktest_empty_pa_pk_as_rep(&ref);1174}11751176/****************************************************************/1177/* decode_krb5_auth_pack */1178{1179setup(krb5_auth_pack,ktest_make_sample_auth_pack);1180decode_run("krb5_auth_pack","","30 81 89 A0 39 30 37 A0 05 02 03 01 E2 40 A1 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A2 03 02 01 2A A3 0A 04 08 6B 72 62 35 64 61 74 61 A4 0A 04 08 6B 72 62 35 64 61 74 61 A1 08 04 06 70 76 61 6C 75 65 A2 24 30 22 30 13 06 09 2A 86 48 86 F7 12 01 02 02 04 06 70 61 72 61 6D 73 30 0B 06 09 2A 86 48 86 F7 12 01 02 02 A3 0A 04 08 6B 72 62 35 64 61 74 61 A4 10 30 0E 30 0C A0 0A 06 08 6B 72 62 35 64 61 74 61",1181acc.decode_krb5_auth_pack,1182ktest_equal_auth_pack,ktest_free_auth_pack);1183ktest_empty_auth_pack(&ref);1184}11851186/****************************************************************/1187/* decode_krb5_kdc_dh_key_info */1188{1189setup(krb5_kdc_dh_key_info,ktest_make_sample_kdc_dh_key_info);1190decode_run("krb5_kdc_dh_key_info","","30 25 A0 0B 03 09 00 6B 72 62 35 64 61 74 61 A1 03 02 01 2A A2 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A",1191acc.decode_krb5_kdc_dh_key_info,1192ktest_equal_kdc_dh_key_info,ktest_free_kdc_dh_key_info);1193ktest_empty_kdc_dh_key_info(&ref);1194}11951196/****************************************************************/1197/* decode_krb5_reply_key_pack */1198{1199setup(krb5_reply_key_pack,ktest_make_sample_reply_key_pack);1200decode_run("krb5_reply_key_pack","","30 26 A0 13 30 11 A0 03 02 01 01 A1 0A 04 08 31 32 33 34 35 36 37 38 A1 0F 30 0D A0 03 02 01 01 A1 06 04 04 31 32 33 34",1201acc.decode_krb5_reply_key_pack,1202ktest_equal_reply_key_pack,ktest_free_reply_key_pack);1203ktest_empty_reply_key_pack(&ref);1204}12051206/****************************************************************/1207/* decode_krb5_principal_name */1208/* We have no encoder for this type (KerberosName from RFC 4556); the1209* encoding is hand-generated. */1210{1211krb5_principal ref, var;12121213ktest_make_sample_principal(&ref);1214decode_run("krb5_principal_name","","30 2E A0 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 A1 1A 30 18 A0 03 02 01 01 A1 11 30 0F 1B 06 68 66 74 73 61 69 1B 05 65 78 74 72 61",1215acc.decode_krb5_principal_name,equal_principal,krb5_free_principal);1216ktest_destroy_principal(&ref);1217}12181219#endif /* not DISABLE_PKINIT */12201221#ifdef ENABLE_LDAP1222/* ldap sequence_of_keys */1223{1224setup(ldap_seqof_key_data,ktest_make_sample_ldap_seqof_key_data);1225decode_run("ldap_seqof_key_data","","30 81 87 A0 03 02 01 01 A1 03 02 01 01 A2 03 02 01 2A A3 03 02 01 0E A4 71 30 6F 30 23 A0 10 30 0E A0 03 02 01 00 A1 07 04 05 73 61 6C 74 30 A1 0F 30 0D A0 03 02 01 02 A1 06 04 04 6B 65 79 30 30 23 A0 10 30 0E A0 03 02 01 01 A1 07 04 05 73 61 6C 74 31 A1 0F 30 0D A0 03 02 01 02 A1 06 04 04 6B 65 79 31 30 23 A0 10 30 0E A0 03 02 01 02 A1 07 04 05 73 61 6C 74 32 A1 0F 30 0D A0 03 02 01 02 A1 06 04 04 6B 65 79 32",acc.asn1_ldap_decode_sequence_of_keys,ktest_equal_ldap_sequence_of_keys,ktest_free_ldap_seqof_key_data);1226ktest_empty_ldap_seqof_key_data(&ref);1227}12281229#endif12301231krb5_free_context(test_context);1232exit(error_count);1233return(error_count);1234}123512361237void krb5_ktest_free_enc_data(krb5_context context, krb5_enc_data *val)1238{1239if (val) {1240krb5_free_data_contents(context, &(val->ciphertext));1241free(val);1242}1243}12441245#ifndef DISABLE_PKINIT12461247/* Glue function to make ktest_equal_principal_data look like what decode_run1248* expects. */1249static int1250equal_principal(krb5_principal *ref, krb5_principal var)1251{1252return ktest_equal_principal_data(*ref, var);1253}12541255static void1256ktest_free_auth_pack(krb5_context context, krb5_auth_pack *val)1257{1258if (val)1259ktest_empty_auth_pack(val);1260free(val);1261}12621263static void1264ktest_free_kdc_dh_key_info(krb5_context context, krb5_kdc_dh_key_info *val)1265{1266if (val)1267ktest_empty_kdc_dh_key_info(val);1268free(val);1269}12701271static void1272ktest_free_pa_pk_as_req(krb5_context context, krb5_pa_pk_as_req *val)1273{1274if (val)1275ktest_empty_pa_pk_as_req(val);1276free(val);1277}12781279static void1280ktest_free_pa_pk_as_rep(krb5_context context, krb5_pa_pk_as_rep *val)1281{1282if (val)1283ktest_empty_pa_pk_as_rep(val);1284free(val);1285}12861287static void1288ktest_free_reply_key_pack(krb5_context context, krb5_reply_key_pack *val)1289{1290if (val)1291ktest_empty_reply_key_pack(val);1292free(val);1293}12941295#endif /* not DISABLE_PKINIT */12961297#ifdef ENABLE_LDAP1298static void1299ktest_free_ldap_seqof_key_data(krb5_context context, ldap_seqof_key_data *val)1300{1301if (val)1302ktest_empty_ldap_seqof_key_data(val);1303free(val);1304}1305#endif /* ENABLE_LDAP */13061307static void1308ktest_free_kkdcp_message(krb5_context context,1309krb5_kkdcp_message *val)1310{1311if (val)1312ktest_empty_kkdcp_message(val);1313free(val);1314}131513161317