Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/krb5/src/tests/asn.1/krb5_decode_test.c
34889 views
1
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
/* tests/asn.1/krb5_decode_test.c */
3
/*
4
* Copyright (C) 1994 by the Massachusetts Institute of Technology.
5
* All rights reserved.
6
*
7
* Export of this software from the United States of America may
8
* require a specific license from the United States Government.
9
* It is the responsibility of any person or organization contemplating
10
* export to obtain such a license before exporting.
11
*
12
* WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13
* distribute this software and its documentation for any purpose and
14
* without fee is hereby granted, provided that the above copyright
15
* notice appear in all copies and that both that copyright notice and
16
* this permission notice appear in supporting documentation, and that
17
* the name of M.I.T. not be used in advertising or publicity pertaining
18
* to distribution of the software without specific, written prior
19
* permission. Furthermore if you modify this software you must label
20
* your software as modified software and not distribute it in such a
21
* fashion that it might be confused with the original M.I.T. software.
22
* M.I.T. makes no representations about the suitability of
23
* this software for any purpose. It is provided "as is" without express
24
* or implied warranty.
25
*/
26
27
#include "k5-int.h"
28
#include "k5-spake.h"
29
#include "ktest.h"
30
#include "com_err.h"
31
#include "utility.h"
32
#include "ktest_equal.h"
33
34
#include "debug.h"
35
#include <string.h>
36
37
krb5_context test_context;
38
int error_count = 0;
39
40
void krb5_ktest_free_enc_data(krb5_context context, krb5_enc_data *val);
41
42
#ifndef DISABLE_PKINIT
43
static int equal_principal(krb5_principal *ref, krb5_principal var);
44
static void ktest_free_auth_pack(krb5_context context, krb5_auth_pack *val);
45
static void ktest_free_kdc_dh_key_info(krb5_context context,
46
krb5_kdc_dh_key_info *val);
47
static void ktest_free_pa_pk_as_req(krb5_context context,
48
krb5_pa_pk_as_req *val);
49
static void ktest_free_pa_pk_as_rep(krb5_context context,
50
krb5_pa_pk_as_rep *val);
51
static void ktest_free_reply_key_pack(krb5_context context,
52
krb5_reply_key_pack *val);
53
#endif
54
#ifdef ENABLE_LDAP
55
static void ktest_free_ldap_seqof_key_data(krb5_context context,
56
ldap_seqof_key_data *val);
57
#endif
58
static void ktest_free_kkdcp_message(krb5_context context,
59
krb5_kkdcp_message *val);
60
61
int
62
main(int argc, char **argv)
63
{
64
krb5_data code;
65
krb5_error_code retval;
66
67
retval = krb5_init_context(&test_context);
68
if (retval) {
69
com_err(argv[0], retval, "while initializing krb5");
70
exit(1);
71
}
72
init_access(argv[0]);
73
74
75
#define setup(type,constructor) \
76
type ref, *var; \
77
constructor(&ref); \
78
do {} while (0)
79
80
#define decode_run(typestring,description,encoding,decoder,comparator,cleanup) do { \
81
retval = krb5_data_hex_parse(&code,encoding); \
82
if (retval) { \
83
com_err("krb5_decode_test", retval, "while parsing %s", typestring); \
84
exit(1); \
85
} \
86
retval = decoder(&code,&var); \
87
if (retval) { \
88
com_err("krb5_decode_test", retval, "while decoding %s", typestring); \
89
error_count++; \
90
} \
91
test(comparator(&ref,var),typestring); \
92
printf("%s\n",description); \
93
krb5_free_data_contents(test_context, &code); \
94
cleanup(test_context, var); \
95
} while (0)
96
97
#define decode_fail(err,typestring,description,encoding,decoder) do { \
98
retval = krb5_data_hex_parse(&code,encoding); \
99
if (retval) { \
100
com_err("krb5_decode_test", retval, "while parsing %s", typestring); \
101
exit(1); \
102
} \
103
retval = decoder(&code,&var); \
104
if (retval != (err)) { \
105
com_err("krb5_decode_test", retval, "while decoding %s", typestring); \
106
error_count++; \
107
} \
108
test(1,typestring); \
109
printf("%s\n",description); \
110
krb5_free_data_contents(test_context, &code); \
111
} while (0)
112
113
/****************************************************************/
114
/* decode_krb5_authenticator */
115
{
116
setup(krb5_authenticator,ktest_make_sample_authenticator);
117
118
decode_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);
119
120
ref.seq_number = 0xffffff80;
121
decode_run("authenticator","(80 -> seq-number 0xffffff80)",
122
"62 81 A1 30 81 9E"
123
" A0 03 02 01 05"
124
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
125
" A2 1A 30 18"
126
" A0 03 02 01 01"
127
" A1 11 30 0F"
128
" 1B 06 68 66 74 73 61 69"
129
" 1B 05 65 78 74 72 61"
130
" A3 0F 30 0D"
131
" A0 03 02 01 01"
132
" A1 06 04 04 31 32 33 34"
133
" A4 05 02 03 01 E2 40"
134
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
135
" A6 13 30 11"
136
" A0 03 02 01 01"
137
" A1 0A 04 08 31 32 33 34 35 36 37 38"
138
" A7 03 02 01 80"
139
" A8 24 30 22"
140
" 30 0F"
141
" A0 03 02 01 01"
142
" A1 08 04 06 66 6F 6F 62 61 72"
143
" 30 0F"
144
" A0 03 02 01 01"
145
" A1 08 04 06 66 6F 6F 62 61 72"
146
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
147
148
ref.seq_number = 0xffffffff;
149
decode_run("authenticator","(FF -> seq-number 0xffffffff)",
150
"62 81 A1 30 81 9E"
151
" A0 03 02 01 05"
152
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
153
" A2 1A 30 18"
154
" A0 03 02 01 01"
155
" A1 11 30 0F"
156
" 1B 06 68 66 74 73 61 69"
157
" 1B 05 65 78 74 72 61"
158
" A3 0F 30 0D"
159
" A0 03 02 01 01"
160
" A1 06 04 04 31 32 33 34"
161
" A4 05 02 03 01 E2 40"
162
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
163
" A6 13 30 11"
164
" A0 03 02 01 01"
165
" A1 0A 04 08 31 32 33 34 35 36 37 38"
166
" A7 03 02 01 FF"
167
" A8 24 30 22"
168
" 30 0F"
169
" A0 03 02 01 01"
170
" A1 08 04 06 66 6F 6F 62 61 72"
171
" 30 0F"
172
" A0 03 02 01 01"
173
" A1 08 04 06 66 6F 6F 62 61 72"
174
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
175
176
ref.seq_number = 0xff;
177
decode_run("authenticator","(00FF -> seq-number 0xff)",
178
"62 81 A2 30 81 9F"
179
" A0 03 02 01 05"
180
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
181
" A2 1A 30 18"
182
" A0 03 02 01 01"
183
" A1 11 30 0F"
184
" 1B 06 68 66 74 73 61 69"
185
" 1B 05 65 78 74 72 61"
186
" A3 0F 30 0D"
187
" A0 03 02 01 01"
188
" A1 06 04 04 31 32 33 34"
189
" A4 05 02 03 01 E2 40"
190
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
191
" A6 13 30 11"
192
" A0 03 02 01 01"
193
" A1 0A 04 08 31 32 33 34 35 36 37 38"
194
" A7 04 02 02 00 FF"
195
" A8 24 30 22"
196
" 30 0F"
197
" A0 03 02 01 01"
198
" A1 08 04 06 66 6F 6F 62 61 72"
199
" 30 0F"
200
" A0 03 02 01 01"
201
" A1 08 04 06 66 6F 6F 62 61 72"
202
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
203
204
ref.seq_number = 0xffffffff;
205
decode_run("authenticator","(00FFFFFFFF -> seq-number 0xffffffff)",
206
"62 81 A5 30 81 A2"
207
" A0 03 02 01 05"
208
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
209
" A2 1A 30 18"
210
" A0 03 02 01 01"
211
" A1 11 30 0F"
212
" 1B 06 68 66 74 73 61 69"
213
" 1B 05 65 78 74 72 61"
214
" A3 0F 30 0D"
215
" A0 03 02 01 01"
216
" A1 06 04 04 31 32 33 34"
217
" A4 05 02 03 01 E2 40"
218
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
219
" A6 13 30 11"
220
" A0 03 02 01 01"
221
" A1 0A 04 08 31 32 33 34 35 36 37 38"
222
" A7 07 02 05 00 FF FF FF FF"
223
" A8 24 30 22"
224
" 30 0F"
225
" A0 03 02 01 01"
226
" A1 08 04 06 66 6F 6F 62 61 72"
227
" 30 0F"
228
" A0 03 02 01 01"
229
" A1 08 04 06 66 6F 6F 62 61 72"
230
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
231
232
ref.seq_number = 0x7fffffff;
233
decode_run("authenticator","(7FFFFFFF -> seq-number 0x7fffffff)",
234
"62 81 A4 30 81 A1"
235
" A0 03 02 01 05"
236
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
237
" A2 1A 30 18"
238
" A0 03 02 01 01"
239
" A1 11 30 0F"
240
" 1B 06 68 66 74 73 61 69"
241
" 1B 05 65 78 74 72 61"
242
" A3 0F 30 0D"
243
" A0 03 02 01 01"
244
" A1 06 04 04 31 32 33 34"
245
" A4 05 02 03 01 E2 40"
246
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
247
" A6 13 30 11"
248
" A0 03 02 01 01"
249
" A1 0A 04 08 31 32 33 34 35 36 37 38"
250
" A7 06 02 04 7F FF FF FF"
251
" A8 24 30 22"
252
" 30 0F"
253
" A0 03 02 01 01"
254
" A1 08 04 06 66 6F 6F 62 61 72"
255
" 30 0F"
256
" A0 03 02 01 01"
257
" A1 08 04 06 66 6F 6F 62 61 72"
258
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
259
260
ref.seq_number = 0xffffffff;
261
decode_run("authenticator","(FFFFFFFF -> seq-number 0xffffffff)",
262
"62 81 A4 30 81 A1"
263
" A0 03 02 01 05"
264
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55"
265
" A2 1A 30 18"
266
" A0 03 02 01 01"
267
" A1 11 30 0F"
268
" 1B 06 68 66 74 73 61 69"
269
" 1B 05 65 78 74 72 61"
270
" A3 0F 30 0D"
271
" A0 03 02 01 01"
272
" A1 06 04 04 31 32 33 34"
273
" A4 05 02 03 01 E2 40"
274
" A5 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A"
275
" A6 13 30 11"
276
" A0 03 02 01 01"
277
" A1 0A 04 08 31 32 33 34 35 36 37 38"
278
" A7 06 02 04 FF FF FF FF"
279
" A8 24 30 22"
280
" 30 0F"
281
" A0 03 02 01 01"
282
" A1 08 04 06 66 6F 6F 62 61 72"
283
" 30 0F"
284
" A0 03 02 01 01"
285
" A1 08 04 06 66 6F 6F 62 61 72"
286
,decode_krb5_authenticator,ktest_equal_authenticator,krb5_free_authenticator);
287
288
ktest_destroy_checksum(&(ref.checksum));
289
ktest_destroy_keyblock(&(ref.subkey));
290
ref.seq_number = 0;
291
ktest_empty_authorization_data(ref.authorization_data);
292
decode_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);
293
294
ktest_destroy_authorization_data(&(ref.authorization_data));
295
296
decode_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);
297
298
ktest_empty_authenticator(&ref);
299
}
300
301
/****************************************************************/
302
/* decode_krb5_ticket */
303
{
304
setup(krb5_ticket,ktest_make_sample_ticket);
305
decode_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);
306
decode_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);
307
308
/*
309
"61 80 30 80 "
310
" A0 03 02 01 05 "
311
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 "
312
" A2 80 30 80 "
313
" A0 03 02 01 01 "
314
" A1 80 30 80 "
315
" 1B 06 68 66 74 73 61 69 "
316
" 1B 05 65 78 74 72 61 "
317
" 00 00 00 00 "
318
" 00 00 00 00 "
319
" A3 80 30 80 "
320
" A0 03 02 01 00 "
321
" A1 03 02 01 05 "
322
" A2 17 04 15 6B 72 62 41 53 4E 2E 31 "
323
" 20 74 65 73 74 20 6D 65 73 73 61 67 65 "
324
" 00 00 00 00"
325
"00 00 00 00"
326
*/
327
decode_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);
328
/*
329
"61 80 30 80 "
330
" A0 03 02 01 05 "
331
" A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55 "
332
" A2 80 30 80 "
333
" A0 03 02 01 01 "
334
" A1 80 30 80 "
335
" 1B 06 68 66 74 73 61 69 "
336
" 1B 05 65 78 74 72 61 "
337
" 00 00 00 00 "
338
" 00 00 00 00 "
339
" A3 80 30 80 "
340
" A0 03 02 01 00 "
341
" A1 03 02 01 05 "
342
" A2 17 04 15 6B 72 62 41 53 4E 2E 31 "
343
" 20 74 65 73 74 20 6D 65 73 73 61 67 65 "
344
" 00 00 00 00"
345
" A4 03 02 01 01 "
346
"00 00 00 00"
347
*/
348
decode_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);
349
350
ktest_empty_ticket(&ref);
351
352
}
353
354
/****************************************************************/
355
/* decode_krb5_encryption_key */
356
{
357
setup(krb5_keyblock,ktest_make_sample_keyblock);
358
359
decode_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);
360
361
decode_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);
362
decode_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);
363
decode_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);
364
decode_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);
365
decode_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);
366
decode_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);
367
ref.enctype = -1;
368
decode_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);
369
ref.enctype = -255;
370
decode_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);
371
ref.enctype = 255;
372
decode_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);
373
ref.enctype = -2147483648U;
374
decode_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);
375
ref.enctype = 2147483647;
376
decode_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);
377
378
ktest_empty_keyblock(&ref);
379
}
380
381
/****************************************************************/
382
/* decode_krb5_enc_tkt_part */
383
{
384
setup(krb5_enc_tkt_part,ktest_make_sample_enc_tkt_part);
385
decode_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);
386
387
ref.times.starttime = 0;
388
ref.times.renew_till = 0;
389
ktest_destroy_address(&(ref.caddrs[1]));
390
ktest_destroy_address(&(ref.caddrs[0]));
391
ktest_destroy_authdata(&(ref.authorization_data[1]));
392
ktest_destroy_authdata(&(ref.authorization_data[0]));
393
/* ISODE version fails on the empty caddrs field */
394
ktest_destroy_addresses(&(ref.caddrs));
395
ktest_destroy_authorization_data(&(ref.authorization_data));
396
397
decode_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);
398
399
decode_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);
400
401
decode_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);
402
403
decode_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);
404
405
ref.flags &= 0xFFFFFF00;
406
407
decode_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);
408
409
ktest_empty_enc_tkt_part(&ref);
410
}
411
412
/****************************************************************/
413
/* decode_krb5_enc_kdc_rep_part */
414
{
415
setup(krb5_enc_kdc_rep_part,ktest_make_sample_enc_kdc_rep_part);
416
417
decode_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);
418
419
ref.key_exp = 0;
420
/* ref.times.starttime = 0;*/
421
ref.times.starttime = ref.times.authtime;
422
ref.times.renew_till = 0;
423
ref.flags &= ~TKT_FLG_RENEWABLE;
424
ktest_destroy_addresses(&(ref.caddrs));
425
426
decode_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);
427
428
ktest_empty_enc_kdc_rep_part(&ref);
429
}
430
431
/****************************************************************/
432
/* decode_krb5_as_rep */
433
{
434
setup(krb5_kdc_rep,ktest_make_sample_kdc_rep);
435
ref.msg_type = KRB5_AS_REP;
436
437
decode_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);
438
439
/*
440
6B 80 30 80
441
A0 03 02 01 05
442
A1 03 02 01 0B
443
A2 80 30 80
444
30 80
445
A1 03 02 01 0D
446
A2 09 04 07 70 61 2D 64 61 74 61
447
00 00
448
30 80
449
A1 03 02 01 0D
450
A2 09 04 07 70 61 2D 64 61 74 61
451
00 00
452
00 00 00 00
453
A3 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55
454
A4 80 30 80
455
A0 03 02 01 01
456
A1 80 30 80
457
1B 06 68 66 74 73 61 69
458
1B 05 65 78 74 72 61
459
00 00 00 00
460
00 00 00 00
461
A5 80 61 80 30 80
462
A0 03 02 01 05
463
A1 10 1B 0E 41 54 48 45 4E 41 2E 4D 49 54 2E 45 44 55
464
A2 80 30 80
465
A0 03 02 01 01
466
A1 80 30 80
467
1B 06 68 66 74 73 61 69
468
1B 05 65 78 74 72 61
469
00 00 00 00
470
00 00 00 00
471
A3 80 30 80
472
A0 03 02 01 00
473
A1 03 02 01 05
474
A2 17 04 15 6B 72 62 41 53 4E 2E 31
475
20 74 65 73 74 20 6D 65
476
73 73 61 67 65
477
00 00 00 00
478
00 00 00 00 00 00
479
A6 80 30 80
480
A0 03 02 01 00
481
A1 03 02 01 05
482
A2 17 04 15 6B 72 62 41 53 4E 2E 31
483
20 74 65 73 74 20 6D 65
484
73 73 61 67 65
485
00 00 00 00
486
00 00 00 00
487
*/
488
decode_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);
489
ktest_destroy_pa_data_array(&(ref.padata));
490
decode_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);
491
492
ktest_empty_kdc_rep(&ref);
493
}
494
495
/****************************************************************/
496
/* decode_krb5_tgs_rep */
497
{
498
setup(krb5_kdc_rep,ktest_make_sample_kdc_rep);
499
ref.msg_type = KRB5_TGS_REP;
500
501
decode_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);
502
503
ktest_destroy_pa_data_array(&(ref.padata));
504
decode_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);
505
506
ktest_empty_kdc_rep(&ref);
507
}
508
509
/****************************************************************/
510
/* decode_krb5_ap_req */
511
{
512
setup(krb5_ap_req,ktest_make_sample_ap_req);
513
decode_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);
514
ktest_empty_ap_req(&ref);
515
516
}
517
518
/****************************************************************/
519
/* decode_krb5_ap_rep */
520
{
521
setup(krb5_ap_rep,ktest_make_sample_ap_rep);
522
decode_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);
523
ktest_empty_ap_rep(&ref);
524
}
525
526
/****************************************************************/
527
/* decode_krb5_ap_rep_enc_part */
528
{
529
setup(krb5_ap_rep_enc_part,ktest_make_sample_ap_rep_enc_part);
530
531
decode_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);
532
533
ktest_destroy_keyblock(&(ref.subkey));
534
ref.seq_number = 0;
535
decode_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);
536
537
retval = 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");
538
if (retval) {
539
com_err("krb5_decode_test", retval, "while parsing");
540
exit(1);
541
}
542
retval = decode_krb5_ap_rep_enc_part(&code, &var);
543
if (retval != ASN1_OVERRUN) {
544
printf("ERROR: ");
545
error_count++;
546
} else {
547
printf("OK: ");
548
}
549
printf("ap_rep_enc_part(optionals NULL + expect ASN1_OVERRUN for inconsistent length of timestamp)\n");
550
krb5_free_data_contents(test_context, &code);
551
krb5_free_ap_rep_enc_part(test_context, var);
552
553
ktest_empty_ap_rep_enc_part(&ref);
554
}
555
556
/****************************************************************/
557
/* decode_krb5_as_req */
558
{
559
setup(krb5_kdc_req,ktest_make_sample_kdc_req);
560
ref.msg_type = KRB5_AS_REQ;
561
562
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
563
decode_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);
564
565
ktest_destroy_pa_data_array(&(ref.padata));
566
ktest_destroy_principal(&(ref.client));
567
#ifndef ISODE_SUCKS
568
ktest_destroy_principal(&(ref.server));
569
#endif
570
ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
571
ref.from = 0;
572
ref.rtime = 0;
573
ktest_destroy_addresses(&(ref.addresses));
574
ktest_destroy_enc_data(&(ref.authorization_data));
575
decode_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);
576
ktest_destroy_sequence_of_ticket(&(ref.second_ticket));
577
#ifndef ISODE_SUCKS
578
ktest_make_sample_principal(&(ref.server));
579
#endif
580
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
581
decode_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);
582
583
ktest_empty_kdc_req(&ref);
584
585
}
586
587
588
/****************************************************************/
589
/* decode_krb5_tgs_req */
590
{
591
setup(krb5_kdc_req,ktest_make_sample_kdc_req);
592
ref.msg_type = KRB5_TGS_REQ;
593
594
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
595
decode_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);
596
597
ktest_destroy_pa_data_array(&(ref.padata));
598
ktest_destroy_principal(&(ref.client));
599
#ifndef ISODE_SUCKS
600
ktest_destroy_principal(&(ref.server));
601
#endif
602
ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
603
ref.from = 0;
604
ref.rtime = 0;
605
ktest_destroy_addresses(&(ref.addresses));
606
ktest_destroy_enc_data(&(ref.authorization_data));
607
decode_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);
608
609
ktest_destroy_sequence_of_ticket(&(ref.second_ticket));
610
#ifndef ISODE_SUCKS
611
ktest_make_sample_principal(&(ref.server));
612
#endif
613
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
614
decode_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);
615
616
ktest_empty_kdc_req(&ref);
617
}
618
619
/****************************************************************/
620
/* decode_krb5_kdc_req_body */
621
{
622
krb5_kdc_req ref, *var;
623
memset(&ref, 0, sizeof(krb5_kdc_req));
624
ktest_make_sample_kdc_req_body(&ref);
625
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
626
decode_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);
627
628
ktest_destroy_principal(&(ref.client));
629
#ifndef ISODE_SUCKS
630
ktest_destroy_principal(&(ref.server));
631
#endif
632
ref.kdc_options |= KDC_OPT_ENC_TKT_IN_SKEY;
633
ref.from = 0;
634
ref.rtime = 0;
635
ktest_destroy_addresses(&(ref.addresses));
636
ktest_destroy_enc_data(&(ref.authorization_data));
637
decode_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);
638
639
ktest_destroy_sequence_of_ticket(&(ref.second_ticket));
640
#ifndef ISODE_SUCKS
641
ktest_make_sample_principal(&(ref.server));
642
#endif
643
ref.kdc_options &= ~KDC_OPT_ENC_TKT_IN_SKEY;
644
decode_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);
645
ref.nktypes = 0;
646
free(ref.ktype);
647
ref.ktype = NULL;
648
decode_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);
649
650
ktest_empty_kdc_req(&ref);
651
}
652
653
654
/****************************************************************/
655
/* decode_krb5_safe */
656
{
657
setup(krb5_safe,ktest_make_sample_safe);
658
decode_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);
659
660
ref.timestamp = 0;
661
ref.usec = 0;
662
ref.seq_number = 0;
663
ktest_destroy_address(&(ref.r_address));
664
decode_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);
665
666
ktest_empty_safe(&ref);
667
}
668
669
/****************************************************************/
670
/* decode_krb5_priv */
671
{
672
setup(krb5_priv,ktest_make_sample_priv);
673
decode_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);
674
ktest_empty_priv(&ref);
675
}
676
677
/****************************************************************/
678
/* decode_krb5_enc_priv_part */
679
{
680
setup(krb5_priv_enc_part,ktest_make_sample_priv_enc_part);
681
decode_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);
682
683
ref.timestamp = 0;
684
ref.usec = 0;
685
ref.seq_number = 0;
686
ktest_destroy_address(&(ref.r_address));
687
decode_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);
688
ktest_empty_priv_enc_part(&ref);
689
}
690
691
/****************************************************************/
692
/* decode_krb5_cred */
693
{
694
setup(krb5_cred,ktest_make_sample_cred);
695
decode_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);
696
ktest_empty_cred(&ref);
697
}
698
699
/****************************************************************/
700
/* decode_krb5_enc_cred_part */
701
{
702
setup(krb5_cred_enc_part,ktest_make_sample_cred_enc_part);
703
decode_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);
704
/* free_cred_enc_part does not free the pointer */
705
free(var);
706
ktest_destroy_principal(&(ref.ticket_info[0]->client));
707
ktest_destroy_principal(&(ref.ticket_info[0]->server));
708
ref.ticket_info[0]->flags = 0;
709
ref.ticket_info[0]->times.authtime = 0;
710
ref.ticket_info[0]->times.starttime = 0;
711
ref.ticket_info[0]->times.endtime = 0;
712
ref.ticket_info[0]->times.renew_till = 0;
713
ktest_destroy_addresses(&(ref.ticket_info[0]->caddrs));
714
ref.nonce = 0;
715
ref.timestamp = 0;
716
ref.usec = 0;
717
ktest_destroy_address(&(ref.s_address));
718
ktest_destroy_address(&(ref.r_address));
719
decode_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);
720
/* free_cred_enc_part does not free the pointer */
721
free(var);
722
723
ktest_empty_cred_enc_part(&ref);
724
}
725
726
/****************************************************************/
727
/* decode_krb5_error */
728
{
729
setup(krb5_error,ktest_make_sample_error);
730
decode_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);
731
732
ref.ctime = 0;
733
ktest_destroy_principal(&(ref.client));
734
ktest_empty_data(&(ref.text));
735
ktest_empty_data(&(ref.e_data));
736
decode_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);
737
738
ktest_empty_error(&ref);
739
}
740
741
/****************************************************************/
742
/* decode_krb5_authdata and krb5int_get_authdata_containee_types */
743
{
744
krb5_authdata **ref, **var, tmp;
745
unsigned int count;
746
krb5_authdatatype *types = NULL;
747
ktest_make_sample_authorization_data(&ref);
748
retval = 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");
749
if (retval) {
750
com_err("parsing authorization_data",retval,"");
751
exit(1);
752
}
753
retval = decode_krb5_authdata(&code,&var);
754
if (retval) com_err("decoding authorization_data",retval,"");
755
test(ktest_equal_authorization_data(ref,var),"authorization_data\n");
756
tmp.length = code.length;
757
tmp.contents = (krb5_octet *)code.data;
758
retval = krb5int_get_authdata_containee_types(test_context, &tmp,
759
&count, &types);
760
if (retval) com_err("reading authdata types",retval,"");
761
test(count == 2 && types[0] == 1 && types[1] == 1,
762
"authorization_data(types only)\n");
763
free(types);
764
krb5_free_data_contents(test_context, &code);
765
krb5_free_authdata(test_context, var);
766
ktest_destroy_authorization_data(&ref);
767
}
768
769
/****************************************************************/
770
/* decode_krb5_padata_sequence and decode_krb5_typed_data */
771
{
772
krb5_pa_data **ref, **var;
773
ktest_make_sample_pa_data_array(&ref);
774
retval = 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");
775
if (retval) {
776
com_err("parsing padata_sequence",retval,"");
777
exit(1);
778
}
779
retval = decode_krb5_padata_sequence(&code,&var);
780
if (retval) com_err("decoding padata_sequence",retval,"");
781
test(ktest_equal_sequence_of_pa_data(ref,var),"pa_data\n");
782
krb5_free_pa_data(test_context, var);
783
krb5_free_data_contents(test_context, &code);
784
retval = 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");
785
if (retval) {
786
com_err("parsing padata_sequence",retval,"");
787
exit(1);
788
}
789
retval = decode_krb5_typed_data(&code,&var);
790
if (retval) com_err("decoding typed_data",retval,"");
791
test(ktest_equal_sequence_of_pa_data(ref,var),"typed_data\n");
792
krb5_free_pa_data(test_context, var);
793
krb5_free_data_contents(test_context, &code);
794
ktest_destroy_pa_data_array(&ref);
795
}
796
797
/****************************************************************/
798
/* decode_krb5_padata_sequence (empty) */
799
{
800
krb5_pa_data **ref, **var;
801
ktest_make_sample_empty_pa_data_array(&ref);
802
retval = krb5_data_hex_parse(&code,"30 00");
803
if (retval) {
804
com_err("parsing padata_sequence (empty)",retval,"");
805
exit(1);
806
}
807
retval = decode_krb5_padata_sequence(&code,&var);
808
if (retval) com_err("decoding padata_sequence (empty)",retval,"");
809
test(ktest_equal_sequence_of_pa_data(ref,var),"pa_data (empty)\n");
810
krb5_free_pa_data(test_context, var);
811
krb5_free_data_contents(test_context, &code);
812
ktest_destroy_pa_data_array(&ref);
813
}
814
815
/****************************************************************/
816
/* decode_etype_info */
817
{
818
krb5_etype_info ref, var;
819
820
ktest_make_sample_etype_info(&ref);
821
retval = 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");
822
if (retval) {
823
com_err("krb5_decode_test", retval, "while parsing etype_info");
824
exit(1);
825
}
826
retval = decode_krb5_etype_info(&code,&var);
827
if (retval) {
828
com_err("krb5_decode_test", retval, "while decoding etype_info");
829
}
830
test(ktest_equal_etype_info(ref,var),"etype_info\n");
831
832
ktest_destroy_etype_info(var);
833
ktest_destroy_etype_info_entry(ref[2]); ref[2] = 0;
834
ktest_destroy_etype_info_entry(ref[1]); ref[1] = 0;
835
krb5_free_data_contents(test_context, &code);
836
837
retval = 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");
838
if (retval) {
839
com_err("krb5_decode_test", retval,
840
"while parsing etype_info (only one)");
841
exit(1);
842
}
843
retval = decode_krb5_etype_info(&code,&var);
844
if (retval) {
845
com_err("krb5_decode_test", retval,
846
"while decoding etype_info (only one)");
847
}
848
test(ktest_equal_etype_info(ref,var),"etype_info (only one)\n");
849
850
ktest_destroy_etype_info(var);
851
ktest_destroy_etype_info_entry(ref[0]); ref[0] = 0;
852
krb5_free_data_contents(test_context, &code);
853
854
retval = krb5_data_hex_parse(&code,"30 00");
855
if (retval) {
856
com_err("krb5_decode_test", retval,
857
"while parsing etype_info (no info)");
858
exit(1);
859
}
860
retval = decode_krb5_etype_info(&code,&var);
861
if (retval) {
862
com_err("krb5_decode_test", retval,
863
"while decoding etype_info (no info)");
864
}
865
test(ktest_equal_etype_info(ref,var),"etype_info (no info)\n");
866
867
krb5_free_data_contents(test_context, &code);
868
ktest_destroy_etype_info(var);
869
ktest_destroy_etype_info(ref);
870
}
871
872
/****************************************************************/
873
/* decode_etype_info2 */
874
{
875
krb5_etype_info ref, var;
876
877
ktest_make_sample_etype_info2(&ref);
878
retval = 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");
879
if (retval) {
880
com_err("krb5_decode_test", retval, "while parsing etype_info2");
881
exit(1);
882
}
883
retval = decode_krb5_etype_info2(&code,&var);
884
if (retval) {
885
com_err("krb5_decode_test", retval, "while decoding etype_info2");
886
}
887
test(ktest_equal_etype_info(ref,var),"etype_info2\n");
888
889
ktest_destroy_etype_info(var);
890
ktest_destroy_etype_info_entry(ref[2]); ref[2] = 0;
891
ktest_destroy_etype_info_entry(ref[1]); ref[1] = 0;
892
krb5_free_data_contents(test_context, &code);
893
894
retval = 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");
895
if (retval) {
896
com_err("krb5_decode_test", retval,
897
"while parsing etype_info2 (only one)");
898
exit(1);
899
}
900
retval = decode_krb5_etype_info2(&code,&var);
901
if (retval) {
902
com_err("krb5_decode_test", retval,
903
"while decoding etype_info2 (only one)");
904
}
905
test(ktest_equal_etype_info(ref,var),"etype_info2 (only one)\n");
906
907
krb5_free_data_contents(test_context, &code);
908
ktest_destroy_etype_info(var);
909
ktest_destroy_etype_info(ref);
910
}
911
912
/****************************************************************/
913
/* decode_pa_enc_ts */
914
{
915
setup(krb5_pa_enc_ts,ktest_make_sample_pa_enc_ts);
916
decode_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);
917
ref.pausec = 0;
918
decode_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);
919
}
920
921
/****************************************************************/
922
/* decode_enc_data */
923
{
924
setup(krb5_enc_data,ktest_make_sample_enc_data);
925
decode_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);
926
ref.kvno = 0xFF000000;
927
decode_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);
928
ref.kvno = 0xFFFFFFFF;
929
decode_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);
930
ktest_destroy_enc_data(&ref);
931
}
932
933
/****************************************************************/
934
/* decode_sam_challenge_2 */
935
{
936
setup(krb5_sam_challenge_2,ktest_make_sample_sam_challenge_2);
937
decode_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);
938
ktest_empty_sam_challenge_2(&ref);
939
940
}
941
942
/****************************************************************/
943
/* decode_sam_challenge_2_body */
944
{
945
setup(krb5_sam_challenge_2_body,ktest_make_sample_sam_challenge_2_body);
946
decode_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);
947
ktest_empty_sam_challenge_2_body(&ref);
948
949
}
950
951
/****************************************************************/
952
/* decode_pa_for_user */
953
{
954
setup(krb5_pa_for_user,ktest_make_sample_pa_for_user);
955
decode_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);
956
ktest_empty_pa_for_user(&ref);
957
}
958
959
/****************************************************************/
960
/* decode_pa_s4u_x509_user */
961
{
962
setup(krb5_pa_s4u_x509_user,ktest_make_sample_pa_s4u_x509_user);
963
decode_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);
964
ktest_empty_pa_s4u_x509_user(&ref);
965
}
966
967
/****************************************************************/
968
/* decode_pa_pac_req */
969
{
970
/* This type has no encoder and is very simple. Test two
971
* hand-generated encodings. */
972
krb5_pa_pac_req *req1 = NULL, *req2 = NULL;
973
code = make_data("\x30\x05\xA0\x03\x01\x01\x00", 7);
974
retval = decode_krb5_pa_pac_req(&code, &req1);
975
if (retval) {
976
com_err(argv[0], retval, "while decoding PA-PAC-REQ");
977
exit(1);
978
}
979
code = make_data("\x30\x05\xA0\x03\x01\x01\xFF", 7);
980
retval = decode_krb5_pa_pac_req(&code, &req2);
981
if (retval) {
982
com_err(argv[0], retval, "while decoding PA-PAC-REQ");
983
exit(1);
984
}
985
if (req1->include_pac != 0 || req2->include_pac != 1) {
986
printf("ERROR: ");
987
error_count++;
988
} else {
989
printf("OK: ");
990
}
991
printf("pa_pac_rec\n");
992
free(req1);
993
free(req2);
994
}
995
996
/****************************************************************/
997
/* decode_ad_kdcissued */
998
{
999
setup(krb5_ad_kdcissued,ktest_make_sample_ad_kdcissued);
1000
decode_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);
1001
ktest_empty_ad_kdcissued(&ref);
1002
}
1003
1004
/****************************************************************/
1005
/* decode_iakerb_header */
1006
{
1007
setup(krb5_iakerb_header,ktest_make_sample_iakerb_header);
1008
decode_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);
1009
ktest_empty_iakerb_header(&ref);
1010
}
1011
1012
/****************************************************************/
1013
/* decode_iakerb_finished */
1014
{
1015
setup(krb5_iakerb_finished,ktest_make_sample_iakerb_finished);
1016
decode_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);
1017
ktest_empty_iakerb_finished(&ref);
1018
}
1019
1020
/****************************************************************/
1021
/* decode_fast_response */
1022
{
1023
setup(krb5_fast_response,ktest_make_sample_fast_response);
1024
decode_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);
1025
ktest_empty_fast_response(&ref);
1026
}
1027
1028
/****************************************************************/
1029
/* decode_pa_fx_fast_reply */
1030
{
1031
setup(krb5_enc_data,ktest_make_sample_enc_data);
1032
decode_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);
1033
ktest_destroy_enc_data(&ref);
1034
}
1035
1036
/****************************************************************/
1037
/* decode_krb5_otp_tokeninfo */
1038
{
1039
setup(krb5_otp_tokeninfo,ktest_make_minimal_otp_tokeninfo);
1040
decode_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);
1041
ktest_empty_otp_tokeninfo(&ref);
1042
}
1043
{
1044
setup(krb5_otp_tokeninfo,ktest_make_maximal_otp_tokeninfo);
1045
decode_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);
1046
ktest_empty_otp_tokeninfo(&ref);
1047
}
1048
1049
/****************************************************************/
1050
/* decode_krb5_pa_otp_challenge */
1051
{
1052
setup(krb5_pa_otp_challenge,ktest_make_minimal_pa_otp_challenge);
1053
decode_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);
1054
ktest_empty_pa_otp_challenge(&ref);
1055
}
1056
{
1057
setup(krb5_pa_otp_challenge,ktest_make_maximal_pa_otp_challenge);
1058
decode_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);
1059
ktest_empty_pa_otp_challenge(&ref);
1060
}
1061
1062
/****************************************************************/
1063
/* decode_krb5_pa_otp_req */
1064
{
1065
setup(krb5_pa_otp_req,ktest_make_minimal_pa_otp_req);
1066
decode_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);
1067
ktest_empty_pa_otp_req(&ref);
1068
}
1069
{
1070
setup(krb5_pa_otp_req,ktest_make_maximal_pa_otp_req);
1071
decode_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);
1072
ktest_empty_pa_otp_req(&ref);
1073
}
1074
1075
/****************************************************************/
1076
/* decode_krb5_pa_otp_enc_req */
1077
{
1078
setup(krb5_data,ktest_make_sample_data);
1079
decode_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);
1080
ktest_empty_data(&ref);
1081
}
1082
1083
/****************************************************************/
1084
/* decode_krb5_kkdcp_message */
1085
{
1086
setup(krb5_kkdcp_message,ktest_make_sample_kkdcp_message);
1087
decode_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);
1088
ktest_empty_kkdcp_message(&ref);
1089
}
1090
1091
/****************************************************************/
1092
/* decode_krb5_cammac */
1093
{
1094
setup(krb5_cammac,ktest_make_minimal_cammac);
1095
decode_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);
1096
ktest_empty_cammac(&ref);
1097
}
1098
{
1099
setup(krb5_cammac,ktest_make_maximal_cammac);
1100
decode_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);
1101
ktest_empty_cammac(&ref);
1102
}
1103
1104
/****************************************************************/
1105
/* decode_krb5_secure_cookie */
1106
{
1107
setup(krb5_secure_cookie,ktest_make_sample_secure_cookie);
1108
decode_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);
1109
ktest_empty_secure_cookie(&ref);
1110
}
1111
1112
/****************************************************************/
1113
/* decode_krb5_spake_factor */
1114
{
1115
setup(krb5_spake_factor,ktest_make_minimal_spake_factor);
1116
decode_run("spake_factor","(optionals NULL)","30 05 A0 03 02 01 01",decode_krb5_spake_factor,ktest_equal_spake_factor,k5_free_spake_factor);
1117
ktest_empty_spake_factor(&ref);
1118
}
1119
{
1120
setup(krb5_spake_factor,ktest_make_maximal_spake_factor);
1121
decode_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);
1122
ktest_empty_spake_factor(&ref);
1123
}
1124
1125
/****************************************************************/
1126
/* decode_krb5_pa_spake */
1127
{
1128
setup(krb5_pa_spake,ktest_make_support_pa_spake);
1129
decode_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);
1130
ktest_empty_pa_spake(&ref);
1131
}
1132
{
1133
setup(krb5_pa_spake,ktest_make_challenge_pa_spake);
1134
decode_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);
1135
ktest_empty_pa_spake(&ref);
1136
}
1137
{
1138
setup(krb5_pa_spake,ktest_make_response_pa_spake);
1139
decode_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);
1140
ktest_empty_pa_spake(&ref);
1141
}
1142
{
1143
setup(krb5_pa_spake,ktest_make_encdata_pa_spake);
1144
decode_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);
1145
ktest_empty_pa_spake(&ref);
1146
}
1147
1148
#ifndef DISABLE_PKINIT
1149
1150
/****************************************************************/
1151
/* decode_krb5_pa_pk_as_req */
1152
{
1153
setup(krb5_pa_pk_as_req,ktest_make_sample_pa_pk_as_req);
1154
decode_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",
1155
acc.decode_krb5_pa_pk_as_req,
1156
ktest_equal_pa_pk_as_req,ktest_free_pa_pk_as_req);
1157
ktest_empty_pa_pk_as_req(&ref);
1158
}
1159
1160
/****************************************************************/
1161
/* decode_krb5_pa_pk_as_rep */
1162
{
1163
setup(krb5_pa_pk_as_rep,ktest_make_sample_pa_pk_as_rep_dhInfo);
1164
decode_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",
1165
acc.decode_krb5_pa_pk_as_rep,
1166
ktest_equal_pa_pk_as_rep,ktest_free_pa_pk_as_rep);
1167
ktest_empty_pa_pk_as_rep(&ref);
1168
}
1169
{
1170
setup(krb5_pa_pk_as_rep,ktest_make_sample_pa_pk_as_rep_encKeyPack);
1171
decode_run("krb5_pa_pk_as_rep","(encKeyPack)","81 08 6B 72 62 35 64 61 74 61",
1172
acc.decode_krb5_pa_pk_as_rep,
1173
ktest_equal_pa_pk_as_rep,ktest_free_pa_pk_as_rep);
1174
ktest_empty_pa_pk_as_rep(&ref);
1175
}
1176
1177
/****************************************************************/
1178
/* decode_krb5_auth_pack */
1179
{
1180
setup(krb5_auth_pack,ktest_make_sample_auth_pack);
1181
decode_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",
1182
acc.decode_krb5_auth_pack,
1183
ktest_equal_auth_pack,ktest_free_auth_pack);
1184
ktest_empty_auth_pack(&ref);
1185
}
1186
1187
/****************************************************************/
1188
/* decode_krb5_kdc_dh_key_info */
1189
{
1190
setup(krb5_kdc_dh_key_info,ktest_make_sample_kdc_dh_key_info);
1191
decode_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",
1192
acc.decode_krb5_kdc_dh_key_info,
1193
ktest_equal_kdc_dh_key_info,ktest_free_kdc_dh_key_info);
1194
ktest_empty_kdc_dh_key_info(&ref);
1195
}
1196
1197
/****************************************************************/
1198
/* decode_krb5_reply_key_pack */
1199
{
1200
setup(krb5_reply_key_pack,ktest_make_sample_reply_key_pack);
1201
decode_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",
1202
acc.decode_krb5_reply_key_pack,
1203
ktest_equal_reply_key_pack,ktest_free_reply_key_pack);
1204
ktest_empty_reply_key_pack(&ref);
1205
}
1206
1207
/****************************************************************/
1208
/* decode_krb5_principal_name */
1209
/* We have no encoder for this type (KerberosName from RFC 4556); the
1210
* encoding is hand-generated. */
1211
{
1212
krb5_principal ref, var;
1213
1214
ktest_make_sample_principal(&ref);
1215
decode_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",
1216
acc.decode_krb5_principal_name,equal_principal,krb5_free_principal);
1217
ktest_destroy_principal(&ref);
1218
}
1219
1220
#endif /* not DISABLE_PKINIT */
1221
1222
#ifdef ENABLE_LDAP
1223
/* ldap sequence_of_keys */
1224
{
1225
setup(ldap_seqof_key_data,ktest_make_sample_ldap_seqof_key_data);
1226
decode_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);
1227
ktest_empty_ldap_seqof_key_data(&ref);
1228
}
1229
1230
#endif
1231
1232
krb5_free_context(test_context);
1233
exit(error_count);
1234
return(error_count);
1235
}
1236
1237
1238
void krb5_ktest_free_enc_data(krb5_context context, krb5_enc_data *val)
1239
{
1240
if (val) {
1241
krb5_free_data_contents(context, &(val->ciphertext));
1242
free(val);
1243
}
1244
}
1245
1246
#ifndef DISABLE_PKINIT
1247
1248
/* Glue function to make ktest_equal_principal_data look like what decode_run
1249
* expects. */
1250
static int
1251
equal_principal(krb5_principal *ref, krb5_principal var)
1252
{
1253
return ktest_equal_principal_data(*ref, var);
1254
}
1255
1256
static void
1257
ktest_free_auth_pack(krb5_context context, krb5_auth_pack *val)
1258
{
1259
if (val)
1260
ktest_empty_auth_pack(val);
1261
free(val);
1262
}
1263
1264
static void
1265
ktest_free_kdc_dh_key_info(krb5_context context, krb5_kdc_dh_key_info *val)
1266
{
1267
if (val)
1268
ktest_empty_kdc_dh_key_info(val);
1269
free(val);
1270
}
1271
1272
static void
1273
ktest_free_pa_pk_as_req(krb5_context context, krb5_pa_pk_as_req *val)
1274
{
1275
if (val)
1276
ktest_empty_pa_pk_as_req(val);
1277
free(val);
1278
}
1279
1280
static void
1281
ktest_free_pa_pk_as_rep(krb5_context context, krb5_pa_pk_as_rep *val)
1282
{
1283
if (val)
1284
ktest_empty_pa_pk_as_rep(val);
1285
free(val);
1286
}
1287
1288
static void
1289
ktest_free_reply_key_pack(krb5_context context, krb5_reply_key_pack *val)
1290
{
1291
if (val)
1292
ktest_empty_reply_key_pack(val);
1293
free(val);
1294
}
1295
1296
#endif /* not DISABLE_PKINIT */
1297
1298
#ifdef ENABLE_LDAP
1299
static void
1300
ktest_free_ldap_seqof_key_data(krb5_context context, ldap_seqof_key_data *val)
1301
{
1302
if (val)
1303
ktest_empty_ldap_seqof_key_data(val);
1304
free(val);
1305
}
1306
#endif /* ENABLE_LDAP */
1307
1308
static void
1309
ktest_free_kkdcp_message(krb5_context context,
1310
krb5_kkdcp_message *val)
1311
{
1312
if (val)
1313
ktest_empty_kkdcp_message(val);
1314
free(val);
1315
}
1316
1317