1 /* Generated from ./krb5.asn1 */
4 #ifndef __krb5_asn1_h__
5 #define __krb5_asn1_h__
10 #ifndef __asn1_common_definitions__
11 #define __asn1_common_definitions__
13 typedef struct heim_integer
{
19 typedef struct heim_octet_string
{
24 typedef char *heim_general_string
;
26 typedef char *heim_utf8_string
;
28 typedef char *heim_printable_string
;
30 typedef char *heim_ia5_string
;
32 typedef struct heim_bmp_string
{
37 typedef struct heim_universal_string
{
40 } heim_universal_string
;
42 typedef char *heim_visible_string
;
44 typedef struct heim_oid
{
49 typedef struct heim_bit_string
{
54 typedef struct heim_octet_string heim_any
;
55 typedef struct heim_octet_string heim_any_set
;
57 #define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \
59 (BL) = length_##T((S)); \
64 (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \
77 NAME-TYPE ::= INTEGER {
84 KRB5_NT_X500_PRINCIPAL(6),
86 KRB5_NT_ENTERPRISE_PRINCIPAL(10),
87 KRB5_NT_WELLKNOWN(11),
88 KRB5_NT_ENT_PRINCIPAL_AND_ID(-130),
89 KRB5_NT_MS_PRINCIPAL(-128),
90 KRB5_NT_MS_PRINCIPAL_AND_ID(-129),
95 typedef enum NAME_TYPE
{
97 KRB5_NT_PRINCIPAL
= 1,
100 KRB5_NT_SRV_XHST
= 4,
102 KRB5_NT_X500_PRINCIPAL
= 6,
103 KRB5_NT_SMTP_NAME
= 7,
104 KRB5_NT_ENTERPRISE_PRINCIPAL
= 10,
105 KRB5_NT_WELLKNOWN
= 11,
106 KRB5_NT_ENT_PRINCIPAL_AND_ID
= -130,
107 KRB5_NT_MS_PRINCIPAL
= -128,
108 KRB5_NT_MS_PRINCIPAL_AND_ID
= -129,
112 int decode_NAME_TYPE(const unsigned char *, size_t, NAME_TYPE
*, size_t *);
113 int encode_NAME_TYPE(unsigned char *, size_t, const NAME_TYPE
*, size_t *);
114 size_t length_NAME_TYPE(const NAME_TYPE
*);
115 int copy_NAME_TYPE (const NAME_TYPE
*, NAME_TYPE
*);
116 void free_NAME_TYPE (NAME_TYPE
*);
120 MESSAGE-TYPE ::= INTEGER {
134 typedef enum MESSAGE_TYPE
{
147 int decode_MESSAGE_TYPE(const unsigned char *, size_t, MESSAGE_TYPE
*, size_t *);
148 int encode_MESSAGE_TYPE(unsigned char *, size_t, const MESSAGE_TYPE
*, size_t *);
149 size_t length_MESSAGE_TYPE(const MESSAGE_TYPE
*);
150 int copy_MESSAGE_TYPE (const MESSAGE_TYPE
*, MESSAGE_TYPE
*);
151 void free_MESSAGE_TYPE (MESSAGE_TYPE
*);
155 PADATA-TYPE ::= INTEGER {
157 KRB5_PADATA_TGS_REQ(1),
158 KRB5_PADATA_AP_REQ(1),
159 KRB5_PADATA_ENC_TIMESTAMP(2),
160 KRB5_PADATA_PW_SALT(3),
161 KRB5_PADATA_ENC_UNIX_TIME(5),
162 KRB5_PADATA_SANDIA_SECUREID(6),
163 KRB5_PADATA_SESAME(7),
164 KRB5_PADATA_OSF_DCE(8),
165 KRB5_PADATA_CYBERSAFE_SECUREID(9),
166 KRB5_PADATA_AFS3_SALT(10),
167 KRB5_PADATA_ETYPE_INFO(11),
168 KRB5_PADATA_SAM_CHALLENGE(12),
169 KRB5_PADATA_SAM_RESPONSE(13),
170 KRB5_PADATA_PK_AS_REQ_19(14),
171 KRB5_PADATA_PK_AS_REP_19(15),
172 KRB5_PADATA_PK_AS_REQ_WIN(15),
173 KRB5_PADATA_PK_AS_REQ(16),
174 KRB5_PADATA_PK_AS_REP(17),
175 KRB5_PADATA_PA_PK_OCSP_RESPONSE(18),
176 KRB5_PADATA_ETYPE_INFO2(19),
177 KRB5_PADATA_USE_SPECIFIED_KVNO(20),
178 KRB5_PADATA_SVR_REFERRAL_INFO(20),
179 KRB5_PADATA_SAM_REDIRECT(21),
180 KRB5_PADATA_GET_FROM_TYPED_DATA(22),
181 KRB5_PADATA_SAM_ETYPE_INFO(23),
182 KRB5_PADATA_SERVER_REFERRAL(25),
183 KRB5_PADATA_ALT_PRINC(24),
184 KRB5_PADATA_SAM_CHALLENGE2(30),
185 KRB5_PADATA_SAM_RESPONSE2(31),
186 KRB5_PA_EXTRA_TGT(41),
187 KRB5_PADATA_TD_KRB_PRINCIPAL(102),
188 KRB5_PADATA_PK_TD_TRUSTED_CERTIFIERS(104),
189 KRB5_PADATA_PK_TD_CERTIFICATE_INDEX(105),
190 KRB5_PADATA_TD_APP_DEFINED_ERROR(106),
191 KRB5_PADATA_TD_REQ_NONCE(107),
192 KRB5_PADATA_TD_REQ_SEQ(108),
193 KRB5_PADATA_PA_PAC_REQUEST(128),
194 KRB5_PADATA_FOR_USER(129),
195 KRB5_PADATA_FOR_X509_USER(130),
196 KRB5_PADATA_FOR_CHECK_DUPS(131),
197 KRB5_PADATA_AS_CHECKSUM(132),
198 KRB5_PADATA_PK_AS_09_BINDING(132),
199 KRB5_PADATA_CLIENT_CANONICALIZED(133),
200 KRB5_PADATA_FX_COOKIE(133),
201 KRB5_PADATA_AUTHENTICATION_SET(134),
202 KRB5_PADATA_AUTH_SET_SELECTED(135),
203 KRB5_PADATA_FX_FAST(136),
204 KRB5_PADATA_FX_ERROR(137),
205 KRB5_PADATA_ENCRYPTED_CHALLENGE(138),
206 KRB5_PADATA_OTP_CHALLENGE(141),
207 KRB5_PADATA_OTP_REQUEST(142),
208 KBB5_PADATA_OTP_CONFIRM(143),
209 KRB5_PADATA_OTP_PIN_CHANGE(144),
210 KRB5_PADATA_EPAK_AS_REQ(145),
211 KRB5_PADATA_EPAK_AS_REP(146),
212 KRB5_PADATA_PKINIT_KX(147),
213 KRB5_PADATA_PKU2U_NAME(148),
214 KRB5_PADATA_SUPPORTED_ETYPES(165)
218 typedef enum PADATA_TYPE
{
219 KRB5_PADATA_NONE
= 0,
220 KRB5_PADATA_TGS_REQ
= 1,
221 KRB5_PADATA_AP_REQ
= 1,
222 KRB5_PADATA_ENC_TIMESTAMP
= 2,
223 KRB5_PADATA_PW_SALT
= 3,
224 KRB5_PADATA_ENC_UNIX_TIME
= 5,
225 KRB5_PADATA_SANDIA_SECUREID
= 6,
226 KRB5_PADATA_SESAME
= 7,
227 KRB5_PADATA_OSF_DCE
= 8,
228 KRB5_PADATA_CYBERSAFE_SECUREID
= 9,
229 KRB5_PADATA_AFS3_SALT
= 10,
230 KRB5_PADATA_ETYPE_INFO
= 11,
231 KRB5_PADATA_SAM_CHALLENGE
= 12,
232 KRB5_PADATA_SAM_RESPONSE
= 13,
233 KRB5_PADATA_PK_AS_REQ_19
= 14,
234 KRB5_PADATA_PK_AS_REP_19
= 15,
235 KRB5_PADATA_PK_AS_REQ_WIN
= 15,
236 KRB5_PADATA_PK_AS_REQ
= 16,
237 KRB5_PADATA_PK_AS_REP
= 17,
238 KRB5_PADATA_PA_PK_OCSP_RESPONSE
= 18,
239 KRB5_PADATA_ETYPE_INFO2
= 19,
240 KRB5_PADATA_USE_SPECIFIED_KVNO
= 20,
241 KRB5_PADATA_SVR_REFERRAL_INFO
= 20,
242 KRB5_PADATA_SAM_REDIRECT
= 21,
243 KRB5_PADATA_GET_FROM_TYPED_DATA
= 22,
244 KRB5_PADATA_SAM_ETYPE_INFO
= 23,
245 KRB5_PADATA_SERVER_REFERRAL
= 25,
246 KRB5_PADATA_ALT_PRINC
= 24,
247 KRB5_PADATA_SAM_CHALLENGE2
= 30,
248 KRB5_PADATA_SAM_RESPONSE2
= 31,
249 KRB5_PA_EXTRA_TGT
= 41,
250 KRB5_PADATA_TD_KRB_PRINCIPAL
= 102,
251 KRB5_PADATA_PK_TD_TRUSTED_CERTIFIERS
= 104,
252 KRB5_PADATA_PK_TD_CERTIFICATE_INDEX
= 105,
253 KRB5_PADATA_TD_APP_DEFINED_ERROR
= 106,
254 KRB5_PADATA_TD_REQ_NONCE
= 107,
255 KRB5_PADATA_TD_REQ_SEQ
= 108,
256 KRB5_PADATA_PA_PAC_REQUEST
= 128,
257 KRB5_PADATA_FOR_USER
= 129,
258 KRB5_PADATA_FOR_X509_USER
= 130,
259 KRB5_PADATA_FOR_CHECK_DUPS
= 131,
260 KRB5_PADATA_AS_CHECKSUM
= 132,
261 KRB5_PADATA_PK_AS_09_BINDING
= 132,
262 KRB5_PADATA_CLIENT_CANONICALIZED
= 133,
263 KRB5_PADATA_FX_COOKIE
= 133,
264 KRB5_PADATA_AUTHENTICATION_SET
= 134,
265 KRB5_PADATA_AUTH_SET_SELECTED
= 135,
266 KRB5_PADATA_FX_FAST
= 136,
267 KRB5_PADATA_FX_ERROR
= 137,
268 KRB5_PADATA_ENCRYPTED_CHALLENGE
= 138,
269 KRB5_PADATA_OTP_CHALLENGE
= 141,
270 KRB5_PADATA_OTP_REQUEST
= 142,
271 KBB5_PADATA_OTP_CONFIRM
= 143,
272 KRB5_PADATA_OTP_PIN_CHANGE
= 144,
273 KRB5_PADATA_EPAK_AS_REQ
= 145,
274 KRB5_PADATA_EPAK_AS_REP
= 146,
275 KRB5_PADATA_PKINIT_KX
= 147,
276 KRB5_PADATA_PKU2U_NAME
= 148,
277 KRB5_PADATA_SUPPORTED_ETYPES
= 165
280 int decode_PADATA_TYPE(const unsigned char *, size_t, PADATA_TYPE
*, size_t *);
281 int encode_PADATA_TYPE(unsigned char *, size_t, const PADATA_TYPE
*, size_t *);
282 size_t length_PADATA_TYPE(const PADATA_TYPE
*);
283 int copy_PADATA_TYPE (const PADATA_TYPE
*, PADATA_TYPE
*);
284 void free_PADATA_TYPE (PADATA_TYPE
*);
288 AUTHDATA-TYPE ::= INTEGER {
289 KRB5_AUTHDATA_IF_RELEVANT(1),
290 KRB5_AUTHDATA_INTENDED_FOR_SERVER(2),
291 KRB5_AUTHDATA_INTENDED_FOR_APPLICATION_CLASS(3),
292 KRB5_AUTHDATA_KDC_ISSUED(4),
293 KRB5_AUTHDATA_AND_OR(5),
294 KRB5_AUTHDATA_MANDATORY_TICKET_EXTENSIONS(6),
295 KRB5_AUTHDATA_IN_TICKET_EXTENSIONS(7),
296 KRB5_AUTHDATA_MANDATORY_FOR_KDC(8),
297 KRB5_AUTHDATA_INITIAL_VERIFIED_CAS(9),
298 KRB5_AUTHDATA_OSF_DCE(64),
299 KRB5_AUTHDATA_SESAME(65),
300 KRB5_AUTHDATA_OSF_DCE_PKI_CERTID(66),
301 KRB5_AUTHDATA_WIN2K_PAC(128),
302 KRB5_AUTHDATA_GSS_API_ETYPE_NEGOTIATION(129),
303 KRB5_AUTHDATA_SIGNTICKET_OLDER(-17),
304 KRB5_AUTHDATA_SIGNTICKET_OLD(142),
305 KRB5_AUTHDATA_SIGNTICKET(512)
309 typedef enum AUTHDATA_TYPE
{
310 KRB5_AUTHDATA_IF_RELEVANT
= 1,
311 KRB5_AUTHDATA_INTENDED_FOR_SERVER
= 2,
312 KRB5_AUTHDATA_INTENDED_FOR_APPLICATION_CLASS
= 3,
313 KRB5_AUTHDATA_KDC_ISSUED
= 4,
314 KRB5_AUTHDATA_AND_OR
= 5,
315 KRB5_AUTHDATA_MANDATORY_TICKET_EXTENSIONS
= 6,
316 KRB5_AUTHDATA_IN_TICKET_EXTENSIONS
= 7,
317 KRB5_AUTHDATA_MANDATORY_FOR_KDC
= 8,
318 KRB5_AUTHDATA_INITIAL_VERIFIED_CAS
= 9,
319 KRB5_AUTHDATA_OSF_DCE
= 64,
320 KRB5_AUTHDATA_SESAME
= 65,
321 KRB5_AUTHDATA_OSF_DCE_PKI_CERTID
= 66,
322 KRB5_AUTHDATA_WIN2K_PAC
= 128,
323 KRB5_AUTHDATA_GSS_API_ETYPE_NEGOTIATION
= 129,
324 KRB5_AUTHDATA_SIGNTICKET_OLDER
= -17,
325 KRB5_AUTHDATA_SIGNTICKET_OLD
= 142,
326 KRB5_AUTHDATA_SIGNTICKET
= 512
329 int decode_AUTHDATA_TYPE(const unsigned char *, size_t, AUTHDATA_TYPE
*, size_t *);
330 int encode_AUTHDATA_TYPE(unsigned char *, size_t, const AUTHDATA_TYPE
*, size_t *);
331 size_t length_AUTHDATA_TYPE(const AUTHDATA_TYPE
*);
332 int copy_AUTHDATA_TYPE (const AUTHDATA_TYPE
*, AUTHDATA_TYPE
*);
333 void free_AUTHDATA_TYPE (AUTHDATA_TYPE
*);
337 CKSUMTYPE ::= INTEGER {
340 CKSUMTYPE_RSA_MD4(2),
341 CKSUMTYPE_RSA_MD4_DES(3),
342 CKSUMTYPE_DES_MAC(4),
343 CKSUMTYPE_DES_MAC_K(5),
344 CKSUMTYPE_RSA_MD4_DES_K(6),
345 CKSUMTYPE_RSA_MD5(7),
346 CKSUMTYPE_RSA_MD5_DES(8),
347 CKSUMTYPE_RSA_MD5_DES3(9),
348 CKSUMTYPE_SHA1_OTHER(10),
349 CKSUMTYPE_HMAC_SHA1_DES3(12),
351 CKSUMTYPE_HMAC_SHA1_96_AES_128(15),
352 CKSUMTYPE_HMAC_SHA1_96_AES_256(16),
353 CKSUMTYPE_GSSAPI(32771),
354 CKSUMTYPE_HMAC_MD5(-138),
355 CKSUMTYPE_HMAC_MD5_ENC(-1138)
359 typedef enum CKSUMTYPE
{
362 CKSUMTYPE_RSA_MD4
= 2,
363 CKSUMTYPE_RSA_MD4_DES
= 3,
364 CKSUMTYPE_DES_MAC
= 4,
365 CKSUMTYPE_DES_MAC_K
= 5,
366 CKSUMTYPE_RSA_MD4_DES_K
= 6,
367 CKSUMTYPE_RSA_MD5
= 7,
368 CKSUMTYPE_RSA_MD5_DES
= 8,
369 CKSUMTYPE_RSA_MD5_DES3
= 9,
370 CKSUMTYPE_SHA1_OTHER
= 10,
371 CKSUMTYPE_HMAC_SHA1_DES3
= 12,
373 CKSUMTYPE_HMAC_SHA1_96_AES_128
= 15,
374 CKSUMTYPE_HMAC_SHA1_96_AES_256
= 16,
375 CKSUMTYPE_GSSAPI
= 32771,
376 CKSUMTYPE_HMAC_MD5
= -138,
377 CKSUMTYPE_HMAC_MD5_ENC
= -1138
380 int decode_CKSUMTYPE(const unsigned char *, size_t, CKSUMTYPE
*, size_t *);
381 int encode_CKSUMTYPE(unsigned char *, size_t, const CKSUMTYPE
*, size_t *);
382 size_t length_CKSUMTYPE(const CKSUMTYPE
*);
383 int copy_CKSUMTYPE (const CKSUMTYPE
*, CKSUMTYPE
*);
384 void free_CKSUMTYPE (CKSUMTYPE
*);
388 ENCTYPE ::= INTEGER {
390 ETYPE_DES_CBC_CRC(1),
391 ETYPE_DES_CBC_MD4(2),
392 ETYPE_DES_CBC_MD5(3),
393 ETYPE_DES3_CBC_MD5(5),
394 ETYPE_OLD_DES3_CBC_SHA1(7),
395 ETYPE_SIGN_DSA_GENERATE(8),
396 ETYPE_ENCRYPT_RSA_PRIV(9),
397 ETYPE_ENCRYPT_RSA_PUB(10),
398 ETYPE_DES3_CBC_SHA1(16),
399 ETYPE_AES128_CTS_HMAC_SHA1_96(17),
400 ETYPE_AES256_CTS_HMAC_SHA1_96(18),
401 ETYPE_ARCFOUR_HMAC_MD5(23),
402 ETYPE_ARCFOUR_HMAC_MD5_56(24),
403 ETYPE_ENCTYPE_PK_CROSS(48),
404 ETYPE_ARCFOUR_MD4(-128),
405 ETYPE_ARCFOUR_HMAC_OLD(-133),
406 ETYPE_ARCFOUR_HMAC_OLD_EXP(-135),
407 ETYPE_DES_CBC_NONE(-4096),
408 ETYPE_DES3_CBC_NONE(-4097),
409 ETYPE_DES_CFB64_NONE(-4098),
410 ETYPE_DES_PCBC_NONE(-4099),
411 ETYPE_DIGEST_MD5_NONE(-4100),
412 ETYPE_CRAM_MD5_NONE(-4101)
416 typedef enum ENCTYPE
{
418 ETYPE_DES_CBC_CRC
= 1,
419 ETYPE_DES_CBC_MD4
= 2,
420 ETYPE_DES_CBC_MD5
= 3,
421 ETYPE_DES3_CBC_MD5
= 5,
422 ETYPE_OLD_DES3_CBC_SHA1
= 7,
423 ETYPE_SIGN_DSA_GENERATE
= 8,
424 ETYPE_ENCRYPT_RSA_PRIV
= 9,
425 ETYPE_ENCRYPT_RSA_PUB
= 10,
426 ETYPE_DES3_CBC_SHA1
= 16,
427 ETYPE_AES128_CTS_HMAC_SHA1_96
= 17,
428 ETYPE_AES256_CTS_HMAC_SHA1_96
= 18,
429 ETYPE_ARCFOUR_HMAC_MD5
= 23,
430 ETYPE_ARCFOUR_HMAC_MD5_56
= 24,
431 ETYPE_ENCTYPE_PK_CROSS
= 48,
432 ETYPE_ARCFOUR_MD4
= -128,
433 ETYPE_ARCFOUR_HMAC_OLD
= -133,
434 ETYPE_ARCFOUR_HMAC_OLD_EXP
= -135,
435 ETYPE_DES_CBC_NONE
= -4096,
436 ETYPE_DES3_CBC_NONE
= -4097,
437 ETYPE_DES_CFB64_NONE
= -4098,
438 ETYPE_DES_PCBC_NONE
= -4099,
439 ETYPE_DIGEST_MD5_NONE
= -4100,
440 ETYPE_CRAM_MD5_NONE
= -4101
443 int decode_ENCTYPE(const unsigned char *, size_t, ENCTYPE
*, size_t *);
444 int encode_ENCTYPE(unsigned char *, size_t, const ENCTYPE
*, size_t *);
445 size_t length_ENCTYPE(const ENCTYPE
*);
446 int copy_ENCTYPE (const ENCTYPE
*, ENCTYPE
*);
447 void free_ENCTYPE (ENCTYPE
*);
451 krb5uint32 ::= INTEGER (0..-1)
454 typedef unsigned int krb5uint32
;
456 int decode_krb5uint32(const unsigned char *, size_t, krb5uint32
*, size_t *);
457 int encode_krb5uint32(unsigned char *, size_t, const krb5uint32
*, size_t *);
458 size_t length_krb5uint32(const krb5uint32
*);
459 int copy_krb5uint32 (const krb5uint32
*, krb5uint32
*);
460 void free_krb5uint32 (krb5uint32
*);
464 krb5int32 ::= INTEGER (-2147483648..2147483647)
467 typedef int krb5int32
;
469 int decode_krb5int32(const unsigned char *, size_t, krb5int32
*, size_t *);
470 int encode_krb5int32(unsigned char *, size_t, const krb5int32
*, size_t *);
471 size_t length_krb5int32(const krb5int32
*);
472 int copy_krb5int32 (const krb5int32
*, krb5int32
*);
473 void free_krb5int32 (krb5int32
*);
477 KerberosString ::= GeneralString
480 typedef heim_general_string KerberosString
;
482 int decode_KerberosString(const unsigned char *, size_t, KerberosString
*, size_t *);
483 int encode_KerberosString(unsigned char *, size_t, const KerberosString
*, size_t *);
484 size_t length_KerberosString(const KerberosString
*);
485 int copy_KerberosString (const KerberosString
*, KerberosString
*);
486 void free_KerberosString (KerberosString
*);
490 Realm ::= GeneralString
493 typedef heim_general_string Realm
;
495 int decode_Realm(const unsigned char *, size_t, Realm
*, size_t *);
496 int encode_Realm(unsigned char *, size_t, const Realm
*, size_t *);
497 size_t length_Realm(const Realm
*);
498 int copy_Realm (const Realm
*, Realm
*);
499 void free_Realm (Realm
*);
503 PrincipalName ::= SEQUENCE {
504 name-type [0] NAME-TYPE,
505 name-string [1] SEQUENCE OF GeneralString,
509 typedef struct PrincipalName
{
511 struct PrincipalName_name_string
{
513 heim_general_string
*val
;
517 int decode_PrincipalName(const unsigned char *, size_t, PrincipalName
*, size_t *);
518 int encode_PrincipalName(unsigned char *, size_t, const PrincipalName
*, size_t *);
519 size_t length_PrincipalName(const PrincipalName
*);
520 int copy_PrincipalName (const PrincipalName
*, PrincipalName
*);
521 void free_PrincipalName (PrincipalName
*);
525 Principal ::= SEQUENCE {
526 name [0] PrincipalName,
531 typedef struct Principal
{
536 int decode_Principal(const unsigned char *, size_t, Principal
*, size_t *);
537 int encode_Principal(unsigned char *, size_t, const Principal
*, size_t *);
538 size_t length_Principal(const Principal
*);
539 int copy_Principal (const Principal
*, Principal
*);
540 void free_Principal (Principal
*);
544 Principals ::= SEQUENCE OF Principal
547 typedef struct Principals
{
552 int add_Principals (Principals
*, const Principal
*);
553 int remove_Principals (Principals
*, unsigned int);
554 int decode_Principals(const unsigned char *, size_t, Principals
*, size_t *);
555 int encode_Principals(unsigned char *, size_t, const Principals
*, size_t *);
556 size_t length_Principals(const Principals
*);
557 int copy_Principals (const Principals
*, Principals
*);
558 void free_Principals (Principals
*);
562 HostAddress ::= SEQUENCE {
563 addr-type [0] krb5int32,
564 address [1] OCTET STRING,
568 typedef struct HostAddress
{
570 heim_octet_string address
;
573 int decode_HostAddress(const unsigned char *, size_t, HostAddress
*, size_t *);
574 int encode_HostAddress(unsigned char *, size_t, const HostAddress
*, size_t *);
575 size_t length_HostAddress(const HostAddress
*);
576 int copy_HostAddress (const HostAddress
*, HostAddress
*);
577 void free_HostAddress (HostAddress
*);
581 HostAddresses ::= SEQUENCE OF HostAddress
584 typedef struct HostAddresses
{
589 int decode_HostAddresses(const unsigned char *, size_t, HostAddresses
*, size_t *);
590 int encode_HostAddresses(unsigned char *, size_t, const HostAddresses
*, size_t *);
591 size_t length_HostAddresses(const HostAddresses
*);
592 int copy_HostAddresses (const HostAddresses
*, HostAddresses
*);
593 void free_HostAddresses (HostAddresses
*);
597 KerberosTime ::= GeneralizedTime
600 typedef time_t KerberosTime
;
602 int decode_KerberosTime(const unsigned char *, size_t, KerberosTime
*, size_t *);
603 int encode_KerberosTime(unsigned char *, size_t, const KerberosTime
*, size_t *);
604 size_t length_KerberosTime(const KerberosTime
*);
605 int copy_KerberosTime (const KerberosTime
*, KerberosTime
*);
606 void free_KerberosTime (KerberosTime
*);
610 AuthorizationDataElement ::= SEQUENCE {
611 ad-type [0] krb5int32,
612 ad-data [1] OCTET STRING,
616 typedef struct AuthorizationDataElement
{
618 heim_octet_string ad_data
;
619 } AuthorizationDataElement
;
621 int decode_AuthorizationDataElement(const unsigned char *, size_t, AuthorizationDataElement
*, size_t *);
622 int encode_AuthorizationDataElement(unsigned char *, size_t, const AuthorizationDataElement
*, size_t *);
623 size_t length_AuthorizationDataElement(const AuthorizationDataElement
*);
624 int copy_AuthorizationDataElement (const AuthorizationDataElement
*, AuthorizationDataElement
*);
625 void free_AuthorizationDataElement (AuthorizationDataElement
*);
629 AuthorizationData ::= SEQUENCE OF AuthorizationDataElement
632 typedef struct AuthorizationData
{
634 AuthorizationDataElement
*val
;
637 int add_AuthorizationData (AuthorizationData
*, const AuthorizationDataElement
*);
638 int remove_AuthorizationData (AuthorizationData
*, unsigned int);
639 int decode_AuthorizationData(const unsigned char *, size_t, AuthorizationData
*, size_t *);
640 int encode_AuthorizationData(unsigned char *, size_t, const AuthorizationData
*, size_t *);
641 size_t length_AuthorizationData(const AuthorizationData
*);
642 int copy_AuthorizationData (const AuthorizationData
*, AuthorizationData
*);
643 void free_AuthorizationData (AuthorizationData
*);
647 APOptions ::= BIT STRING {
654 typedef struct APOptions
{
655 unsigned int reserved
:1;
656 unsigned int use_session_key
:1;
657 unsigned int mutual_required
:1;
658 unsigned int _unused3
:1;
659 unsigned int _unused4
:1;
660 unsigned int _unused5
:1;
661 unsigned int _unused6
:1;
662 unsigned int _unused7
:1;
663 unsigned int _unused8
:1;
664 unsigned int _unused9
:1;
665 unsigned int _unused10
:1;
666 unsigned int _unused11
:1;
667 unsigned int _unused12
:1;
668 unsigned int _unused13
:1;
669 unsigned int _unused14
:1;
670 unsigned int _unused15
:1;
671 unsigned int _unused16
:1;
672 unsigned int _unused17
:1;
673 unsigned int _unused18
:1;
674 unsigned int _unused19
:1;
675 unsigned int _unused20
:1;
676 unsigned int _unused21
:1;
677 unsigned int _unused22
:1;
678 unsigned int _unused23
:1;
679 unsigned int _unused24
:1;
680 unsigned int _unused25
:1;
681 unsigned int _unused26
:1;
682 unsigned int _unused27
:1;
683 unsigned int _unused28
:1;
684 unsigned int _unused29
:1;
685 unsigned int _unused30
:1;
686 unsigned int _unused31
:1;
690 unsigned APOptions2int(APOptions
);
691 APOptions
int2APOptions(unsigned);
692 int decode_APOptions(const unsigned char *, size_t, APOptions
*, size_t *);
693 int encode_APOptions(unsigned char *, size_t, const APOptions
*, size_t *);
694 size_t length_APOptions(const APOptions
*);
695 int copy_APOptions (const APOptions
*, APOptions
*);
696 void free_APOptions (APOptions
*);
700 TicketFlags ::= BIT STRING {
713 transited-policy-checked(12),
719 typedef struct TicketFlags
{
720 unsigned int reserved
:1;
721 unsigned int forwardable
:1;
722 unsigned int forwarded
:1;
723 unsigned int proxiable
:1;
724 unsigned int proxy
:1;
725 unsigned int may_postdate
:1;
726 unsigned int postdated
:1;
727 unsigned int invalid
:1;
728 unsigned int renewable
:1;
729 unsigned int initial
:1;
730 unsigned int pre_authent
:1;
731 unsigned int hw_authent
:1;
732 unsigned int transited_policy_checked
:1;
733 unsigned int ok_as_delegate
:1;
734 unsigned int anonymous
:1;
735 unsigned int _unused15
:1;
736 unsigned int _unused16
:1;
737 unsigned int _unused17
:1;
738 unsigned int _unused18
:1;
739 unsigned int _unused19
:1;
740 unsigned int _unused20
:1;
741 unsigned int _unused21
:1;
742 unsigned int _unused22
:1;
743 unsigned int _unused23
:1;
744 unsigned int _unused24
:1;
745 unsigned int _unused25
:1;
746 unsigned int _unused26
:1;
747 unsigned int _unused27
:1;
748 unsigned int _unused28
:1;
749 unsigned int _unused29
:1;
750 unsigned int _unused30
:1;
751 unsigned int _unused31
:1;
755 unsigned TicketFlags2int(TicketFlags
);
756 TicketFlags
int2TicketFlags(unsigned);
757 int decode_TicketFlags(const unsigned char *, size_t, TicketFlags
*, size_t *);
758 int encode_TicketFlags(unsigned char *, size_t, const TicketFlags
*, size_t *);
759 size_t length_TicketFlags(const TicketFlags
*);
760 int copy_TicketFlags (const TicketFlags
*, TicketFlags
*);
761 void free_TicketFlags (TicketFlags
*);
765 KDCOptions ::= BIT STRING {
774 request-anonymous(14),
776 constrained-delegation(16),
777 disable-transited-check(26),
785 typedef struct KDCOptions
{
786 unsigned int reserved
:1;
787 unsigned int forwardable
:1;
788 unsigned int forwarded
:1;
789 unsigned int proxiable
:1;
790 unsigned int proxy
:1;
791 unsigned int allow_postdate
:1;
792 unsigned int postdated
:1;
793 unsigned int _unused7
:1;
794 unsigned int renewable
:1;
795 unsigned int _unused9
:1;
796 unsigned int _unused10
:1;
797 unsigned int _unused11
:1;
798 unsigned int _unused12
:1;
799 unsigned int _unused13
:1;
800 unsigned int request_anonymous
:1;
801 unsigned int canonicalize
:1;
802 unsigned int constrained_delegation
:1;
803 unsigned int _unused17
:1;
804 unsigned int _unused18
:1;
805 unsigned int _unused19
:1;
806 unsigned int _unused20
:1;
807 unsigned int _unused21
:1;
808 unsigned int _unused22
:1;
809 unsigned int _unused23
:1;
810 unsigned int _unused24
:1;
811 unsigned int _unused25
:1;
812 unsigned int disable_transited_check
:1;
813 unsigned int renewable_ok
:1;
814 unsigned int enc_tkt_in_skey
:1;
815 unsigned int _unused29
:1;
816 unsigned int renew
:1;
817 unsigned int validate
:1;
821 unsigned KDCOptions2int(KDCOptions
);
822 KDCOptions
int2KDCOptions(unsigned);
823 int decode_KDCOptions(const unsigned char *, size_t, KDCOptions
*, size_t *);
824 int encode_KDCOptions(unsigned char *, size_t, const KDCOptions
*, size_t *);
825 size_t length_KDCOptions(const KDCOptions
*);
826 int copy_KDCOptions (const KDCOptions
*, KDCOptions
*);
827 void free_KDCOptions (KDCOptions
*);
831 LR-TYPE ::= INTEGER {
843 typedef enum LR_TYPE
{
847 LR_ISSUE_USE_TGT
= 3,
854 int decode_LR_TYPE(const unsigned char *, size_t, LR_TYPE
*, size_t *);
855 int encode_LR_TYPE(unsigned char *, size_t, const LR_TYPE
*, size_t *);
856 size_t length_LR_TYPE(const LR_TYPE
*);
857 int copy_LR_TYPE (const LR_TYPE
*, LR_TYPE
*);
858 void free_LR_TYPE (LR_TYPE
*);
862 LastReq ::= SEQUENCE OF SEQUENCE {
864 lr-value [1] KerberosTime,
868 typedef struct LastReq
{
872 KerberosTime lr_value
;
876 int decode_LastReq(const unsigned char *, size_t, LastReq
*, size_t *);
877 int encode_LastReq(unsigned char *, size_t, const LastReq
*, size_t *);
878 size_t length_LastReq(const LastReq
*);
879 int copy_LastReq (const LastReq
*, LastReq
*);
880 void free_LastReq (LastReq
*);
884 EncryptedData ::= SEQUENCE {
886 kvno [1] krb5int32 OPTIONAL,
887 cipher [2] OCTET STRING,
891 typedef struct EncryptedData
{
894 heim_octet_string cipher
;
897 int decode_EncryptedData(const unsigned char *, size_t, EncryptedData
*, size_t *);
898 int encode_EncryptedData(unsigned char *, size_t, const EncryptedData
*, size_t *);
899 size_t length_EncryptedData(const EncryptedData
*);
900 int copy_EncryptedData (const EncryptedData
*, EncryptedData
*);
901 void free_EncryptedData (EncryptedData
*);
905 EncryptionKey ::= SEQUENCE {
906 keytype [0] krb5int32,
907 keyvalue [1] OCTET STRING,
911 typedef struct EncryptionKey
{
913 heim_octet_string keyvalue
;
916 int decode_EncryptionKey(const unsigned char *, size_t, EncryptionKey
*, size_t *);
917 int encode_EncryptionKey(unsigned char *, size_t, const EncryptionKey
*, size_t *);
918 size_t length_EncryptionKey(const EncryptionKey
*);
919 int copy_EncryptionKey (const EncryptionKey
*, EncryptionKey
*);
920 void free_EncryptionKey (EncryptionKey
*);
924 TransitedEncoding ::= SEQUENCE {
925 tr-type [0] krb5int32,
926 contents [1] OCTET STRING,
930 typedef struct TransitedEncoding
{
932 heim_octet_string contents
;
935 int decode_TransitedEncoding(const unsigned char *, size_t, TransitedEncoding
*, size_t *);
936 int encode_TransitedEncoding(unsigned char *, size_t, const TransitedEncoding
*, size_t *);
937 size_t length_TransitedEncoding(const TransitedEncoding
*);
938 int copy_TransitedEncoding (const TransitedEncoding
*, TransitedEncoding
*);
939 void free_TransitedEncoding (TransitedEncoding
*);
943 Ticket ::= [APPLICATION 1] SEQUENCE {
944 tkt-vno [0] krb5int32,
946 sname [2] PrincipalName,
947 enc-part [3] EncryptedData,
951 typedef struct Ticket
{
955 EncryptedData enc_part
;
958 int decode_Ticket(const unsigned char *, size_t, Ticket
*, size_t *);
959 int encode_Ticket(unsigned char *, size_t, const Ticket
*, size_t *);
960 size_t length_Ticket(const Ticket
*);
961 int copy_Ticket (const Ticket
*, Ticket
*);
962 void free_Ticket (Ticket
*);
966 EncTicketPart ::= [APPLICATION 3] SEQUENCE {
967 flags [0] TicketFlags,
968 key [1] EncryptionKey,
970 cname [3] PrincipalName,
971 transited [4] TransitedEncoding,
972 authtime [5] KerberosTime,
973 starttime [6] KerberosTime OPTIONAL,
974 endtime [7] KerberosTime,
975 renew-till [8] KerberosTime OPTIONAL,
976 caddr [9] HostAddresses OPTIONAL,
977 authorization-data [10] AuthorizationData OPTIONAL,
981 typedef struct EncTicketPart
{
986 TransitedEncoding transited
;
987 KerberosTime authtime
;
988 KerberosTime
*starttime
;
989 KerberosTime endtime
;
990 KerberosTime
*renew_till
;
991 HostAddresses
*caddr
;
992 AuthorizationData
*authorization_data
;
995 int decode_EncTicketPart(const unsigned char *, size_t, EncTicketPart
*, size_t *);
996 int encode_EncTicketPart(unsigned char *, size_t, const EncTicketPart
*, size_t *);
997 size_t length_EncTicketPart(const EncTicketPart
*);
998 int copy_EncTicketPart (const EncTicketPart
*, EncTicketPart
*);
999 void free_EncTicketPart (EncTicketPart
*);
1003 Checksum ::= SEQUENCE {
1004 cksumtype [0] CKSUMTYPE,
1005 checksum [1] OCTET STRING,
1009 typedef struct Checksum
{
1010 CKSUMTYPE cksumtype
;
1011 heim_octet_string checksum
;
1014 int decode_Checksum(const unsigned char *, size_t, Checksum
*, size_t *);
1015 int encode_Checksum(unsigned char *, size_t, const Checksum
*, size_t *);
1016 size_t length_Checksum(const Checksum
*);
1017 int copy_Checksum (const Checksum
*, Checksum
*);
1018 void free_Checksum (Checksum
*);
1022 Authenticator ::= [APPLICATION 2] SEQUENCE {
1023 authenticator-vno [0] krb5int32,
1025 cname [2] PrincipalName,
1026 cksum [3] Checksum OPTIONAL,
1027 cusec [4] krb5int32,
1028 ctime [5] KerberosTime,
1029 subkey [6] EncryptionKey OPTIONAL,
1030 seq-number [7] krb5uint32 OPTIONAL,
1031 authorization-data [8] AuthorizationData OPTIONAL,
1035 typedef struct Authenticator
{
1036 krb5int32 authenticator_vno
;
1038 PrincipalName cname
;
1042 EncryptionKey
*subkey
;
1043 krb5uint32
*seq_number
;
1044 AuthorizationData
*authorization_data
;
1047 int decode_Authenticator(const unsigned char *, size_t, Authenticator
*, size_t *);
1048 int encode_Authenticator(unsigned char *, size_t, const Authenticator
*, size_t *);
1049 size_t length_Authenticator(const Authenticator
*);
1050 int copy_Authenticator (const Authenticator
*, Authenticator
*);
1051 void free_Authenticator (Authenticator
*);
1055 PA-DATA ::= SEQUENCE {
1056 padata-type [1] PADATA-TYPE,
1057 padata-value [2] OCTET STRING,
1061 typedef struct PA_DATA
{
1062 PADATA_TYPE padata_type
;
1063 heim_octet_string padata_value
;
1066 int decode_PA_DATA(const unsigned char *, size_t, PA_DATA
*, size_t *);
1067 int encode_PA_DATA(unsigned char *, size_t, const PA_DATA
*, size_t *);
1068 size_t length_PA_DATA(const PA_DATA
*);
1069 int copy_PA_DATA (const PA_DATA
*, PA_DATA
*);
1070 void free_PA_DATA (PA_DATA
*);
1074 ETYPE-INFO-ENTRY ::= SEQUENCE {
1076 salt [1] OCTET STRING OPTIONAL,
1077 salttype [2] krb5int32 OPTIONAL,
1081 typedef struct ETYPE_INFO_ENTRY
{
1083 heim_octet_string
*salt
;
1084 krb5int32
*salttype
;
1087 int decode_ETYPE_INFO_ENTRY(const unsigned char *, size_t, ETYPE_INFO_ENTRY
*, size_t *);
1088 int encode_ETYPE_INFO_ENTRY(unsigned char *, size_t, const ETYPE_INFO_ENTRY
*, size_t *);
1089 size_t length_ETYPE_INFO_ENTRY(const ETYPE_INFO_ENTRY
*);
1090 int copy_ETYPE_INFO_ENTRY (const ETYPE_INFO_ENTRY
*, ETYPE_INFO_ENTRY
*);
1091 void free_ETYPE_INFO_ENTRY (ETYPE_INFO_ENTRY
*);
1095 ETYPE-INFO ::= SEQUENCE OF ETYPE-INFO-ENTRY
1098 typedef struct ETYPE_INFO
{
1100 ETYPE_INFO_ENTRY
*val
;
1103 int add_ETYPE_INFO (ETYPE_INFO
*, const ETYPE_INFO_ENTRY
*);
1104 int remove_ETYPE_INFO (ETYPE_INFO
*, unsigned int);
1105 int decode_ETYPE_INFO(const unsigned char *, size_t, ETYPE_INFO
*, size_t *);
1106 int encode_ETYPE_INFO(unsigned char *, size_t, const ETYPE_INFO
*, size_t *);
1107 size_t length_ETYPE_INFO(const ETYPE_INFO
*);
1108 int copy_ETYPE_INFO (const ETYPE_INFO
*, ETYPE_INFO
*);
1109 void free_ETYPE_INFO (ETYPE_INFO
*);
1113 ETYPE-INFO2-ENTRY ::= SEQUENCE {
1115 salt [1] KerberosString OPTIONAL,
1116 s2kparams [2] OCTET STRING OPTIONAL,
1120 typedef struct ETYPE_INFO2_ENTRY
{
1122 KerberosString
*salt
;
1123 heim_octet_string
*s2kparams
;
1124 } ETYPE_INFO2_ENTRY
;
1126 int decode_ETYPE_INFO2_ENTRY(const unsigned char *, size_t, ETYPE_INFO2_ENTRY
*, size_t *);
1127 int encode_ETYPE_INFO2_ENTRY(unsigned char *, size_t, const ETYPE_INFO2_ENTRY
*, size_t *);
1128 size_t length_ETYPE_INFO2_ENTRY(const ETYPE_INFO2_ENTRY
*);
1129 int copy_ETYPE_INFO2_ENTRY (const ETYPE_INFO2_ENTRY
*, ETYPE_INFO2_ENTRY
*);
1130 void free_ETYPE_INFO2_ENTRY (ETYPE_INFO2_ENTRY
*);
1134 ETYPE-INFO2 ::= SEQUENCE OF ETYPE-INFO2-ENTRY
1137 typedef struct ETYPE_INFO2
{
1139 ETYPE_INFO2_ENTRY
*val
;
1142 int add_ETYPE_INFO2 (ETYPE_INFO2
*, const ETYPE_INFO2_ENTRY
*);
1143 int remove_ETYPE_INFO2 (ETYPE_INFO2
*, unsigned int);
1144 int decode_ETYPE_INFO2(const unsigned char *, size_t, ETYPE_INFO2
*, size_t *);
1145 int encode_ETYPE_INFO2(unsigned char *, size_t, const ETYPE_INFO2
*, size_t *);
1146 size_t length_ETYPE_INFO2(const ETYPE_INFO2
*);
1147 int copy_ETYPE_INFO2 (const ETYPE_INFO2
*, ETYPE_INFO2
*);
1148 void free_ETYPE_INFO2 (ETYPE_INFO2
*);
1152 METHOD-DATA ::= SEQUENCE OF PA-DATA
1155 typedef struct METHOD_DATA
{
1160 int add_METHOD_DATA (METHOD_DATA
*, const PA_DATA
*);
1161 int remove_METHOD_DATA (METHOD_DATA
*, unsigned int);
1162 int decode_METHOD_DATA(const unsigned char *, size_t, METHOD_DATA
*, size_t *);
1163 int encode_METHOD_DATA(unsigned char *, size_t, const METHOD_DATA
*, size_t *);
1164 size_t length_METHOD_DATA(const METHOD_DATA
*);
1165 int copy_METHOD_DATA (const METHOD_DATA
*, METHOD_DATA
*);
1166 void free_METHOD_DATA (METHOD_DATA
*);
1170 TypedData ::= SEQUENCE {
1171 data-type [0] krb5int32,
1172 data-value [1] OCTET STRING OPTIONAL,
1176 typedef struct TypedData
{
1177 krb5int32 data_type
;
1178 heim_octet_string
*data_value
;
1181 int decode_TypedData(const unsigned char *, size_t, TypedData
*, size_t *);
1182 int encode_TypedData(unsigned char *, size_t, const TypedData
*, size_t *);
1183 size_t length_TypedData(const TypedData
*);
1184 int copy_TypedData (const TypedData
*, TypedData
*);
1185 void free_TypedData (TypedData
*);
1189 TYPED-DATA ::= SEQUENCE OF TypedData
1192 typedef struct TYPED_DATA
{
1197 int decode_TYPED_DATA(const unsigned char *, size_t, TYPED_DATA
*, size_t *);
1198 int encode_TYPED_DATA(unsigned char *, size_t, const TYPED_DATA
*, size_t *);
1199 size_t length_TYPED_DATA(const TYPED_DATA
*);
1200 int copy_TYPED_DATA (const TYPED_DATA
*, TYPED_DATA
*);
1201 void free_TYPED_DATA (TYPED_DATA
*);
1205 KDC-REQ-BODY ::= SEQUENCE {
1206 kdc-options [0] KDCOptions,
1207 cname [1] PrincipalName OPTIONAL,
1209 sname [3] PrincipalName OPTIONAL,
1210 from [4] KerberosTime OPTIONAL,
1211 till [5] KerberosTime OPTIONAL,
1212 rtime [6] KerberosTime OPTIONAL,
1213 nonce [7] krb5int32,
1214 etype [8] SEQUENCE OF ENCTYPE,
1215 addresses [9] HostAddresses OPTIONAL,
1216 enc-authorization-data [10] EncryptedData OPTIONAL,
1217 additional-tickets [11] SEQUENCE OF Ticket OPTIONAL,
1221 typedef struct KDC_REQ_BODY
{
1222 KDCOptions kdc_options
;
1223 PrincipalName
*cname
;
1225 PrincipalName
*sname
;
1228 KerberosTime
*rtime
;
1230 struct KDC_REQ_BODY_etype
{
1234 HostAddresses
*addresses
;
1235 EncryptedData
*enc_authorization_data
;
1236 struct KDC_REQ_BODY_additional_tickets
{
1239 } *additional_tickets
;
1242 int decode_KDC_REQ_BODY(const unsigned char *, size_t, KDC_REQ_BODY
*, size_t *);
1243 int encode_KDC_REQ_BODY(unsigned char *, size_t, const KDC_REQ_BODY
*, size_t *);
1244 size_t length_KDC_REQ_BODY(const KDC_REQ_BODY
*);
1245 int copy_KDC_REQ_BODY (const KDC_REQ_BODY
*, KDC_REQ_BODY
*);
1246 void free_KDC_REQ_BODY (KDC_REQ_BODY
*);
1250 KDC-REQ ::= SEQUENCE {
1252 msg-type [2] MESSAGE-TYPE,
1253 padata [3] METHOD-DATA OPTIONAL,
1254 req-body [4] KDC-REQ-BODY,
1258 typedef struct KDC_REQ
{
1260 MESSAGE_TYPE msg_type
;
1261 METHOD_DATA
*padata
;
1262 KDC_REQ_BODY req_body
;
1265 int decode_KDC_REQ(const unsigned char *, size_t, KDC_REQ
*, size_t *);
1266 int encode_KDC_REQ(unsigned char *, size_t, const KDC_REQ
*, size_t *);
1267 size_t length_KDC_REQ(const KDC_REQ
*);
1268 int copy_KDC_REQ (const KDC_REQ
*, KDC_REQ
*);
1269 void free_KDC_REQ (KDC_REQ
*);
1273 AS-REQ ::= [APPLICATION 10] KDC-REQ
1276 typedef KDC_REQ AS_REQ
;
1278 int decode_AS_REQ(const unsigned char *, size_t, AS_REQ
*, size_t *);
1279 int encode_AS_REQ(unsigned char *, size_t, const AS_REQ
*, size_t *);
1280 size_t length_AS_REQ(const AS_REQ
*);
1281 int copy_AS_REQ (const AS_REQ
*, AS_REQ
*);
1282 void free_AS_REQ (AS_REQ
*);
1286 TGS-REQ ::= [APPLICATION 12] KDC-REQ
1289 typedef KDC_REQ TGS_REQ
;
1291 int decode_TGS_REQ(const unsigned char *, size_t, TGS_REQ
*, size_t *);
1292 int encode_TGS_REQ(unsigned char *, size_t, const TGS_REQ
*, size_t *);
1293 size_t length_TGS_REQ(const TGS_REQ
*);
1294 int copy_TGS_REQ (const TGS_REQ
*, TGS_REQ
*);
1295 void free_TGS_REQ (TGS_REQ
*);
1299 PA-ENC-TS-ENC ::= SEQUENCE {
1300 patimestamp [0] KerberosTime,
1301 pausec [1] krb5int32 OPTIONAL,
1305 typedef struct PA_ENC_TS_ENC
{
1306 KerberosTime patimestamp
;
1310 int decode_PA_ENC_TS_ENC(const unsigned char *, size_t, PA_ENC_TS_ENC
*, size_t *);
1311 int encode_PA_ENC_TS_ENC(unsigned char *, size_t, const PA_ENC_TS_ENC
*, size_t *);
1312 size_t length_PA_ENC_TS_ENC(const PA_ENC_TS_ENC
*);
1313 int copy_PA_ENC_TS_ENC (const PA_ENC_TS_ENC
*, PA_ENC_TS_ENC
*);
1314 void free_PA_ENC_TS_ENC (PA_ENC_TS_ENC
*);
1318 PA-PAC-REQUEST ::= SEQUENCE {
1319 include-pac [0] BOOLEAN,
1323 typedef struct PA_PAC_REQUEST
{
1327 int decode_PA_PAC_REQUEST(const unsigned char *, size_t, PA_PAC_REQUEST
*, size_t *);
1328 int encode_PA_PAC_REQUEST(unsigned char *, size_t, const PA_PAC_REQUEST
*, size_t *);
1329 size_t length_PA_PAC_REQUEST(const PA_PAC_REQUEST
*);
1330 int copy_PA_PAC_REQUEST (const PA_PAC_REQUEST
*, PA_PAC_REQUEST
*);
1331 void free_PA_PAC_REQUEST (PA_PAC_REQUEST
*);
1335 PROV-SRV-LOCATION ::= GeneralString
1338 typedef heim_general_string PROV_SRV_LOCATION
;
1340 int decode_PROV_SRV_LOCATION(const unsigned char *, size_t, PROV_SRV_LOCATION
*, size_t *);
1341 int encode_PROV_SRV_LOCATION(unsigned char *, size_t, const PROV_SRV_LOCATION
*, size_t *);
1342 size_t length_PROV_SRV_LOCATION(const PROV_SRV_LOCATION
*);
1343 int copy_PROV_SRV_LOCATION (const PROV_SRV_LOCATION
*, PROV_SRV_LOCATION
*);
1344 void free_PROV_SRV_LOCATION (PROV_SRV_LOCATION
*);
1348 KDC-REP ::= SEQUENCE {
1350 msg-type [1] MESSAGE-TYPE,
1351 padata [2] METHOD-DATA OPTIONAL,
1353 cname [4] PrincipalName,
1355 enc-part [6] EncryptedData,
1359 typedef struct KDC_REP
{
1361 MESSAGE_TYPE msg_type
;
1362 METHOD_DATA
*padata
;
1364 PrincipalName cname
;
1366 EncryptedData enc_part
;
1369 int decode_KDC_REP(const unsigned char *, size_t, KDC_REP
*, size_t *);
1370 int encode_KDC_REP(unsigned char *, size_t, const KDC_REP
*, size_t *);
1371 size_t length_KDC_REP(const KDC_REP
*);
1372 int copy_KDC_REP (const KDC_REP
*, KDC_REP
*);
1373 void free_KDC_REP (KDC_REP
*);
1377 AS-REP ::= [APPLICATION 11] KDC-REP
1380 typedef KDC_REP AS_REP
;
1382 int decode_AS_REP(const unsigned char *, size_t, AS_REP
*, size_t *);
1383 int encode_AS_REP(unsigned char *, size_t, const AS_REP
*, size_t *);
1384 size_t length_AS_REP(const AS_REP
*);
1385 int copy_AS_REP (const AS_REP
*, AS_REP
*);
1386 void free_AS_REP (AS_REP
*);
1390 TGS-REP ::= [APPLICATION 13] KDC-REP
1393 typedef KDC_REP TGS_REP
;
1395 int decode_TGS_REP(const unsigned char *, size_t, TGS_REP
*, size_t *);
1396 int encode_TGS_REP(unsigned char *, size_t, const TGS_REP
*, size_t *);
1397 size_t length_TGS_REP(const TGS_REP
*);
1398 int copy_TGS_REP (const TGS_REP
*, TGS_REP
*);
1399 void free_TGS_REP (TGS_REP
*);
1403 EncKDCRepPart ::= SEQUENCE {
1404 key [0] EncryptionKey,
1405 last-req [1] LastReq,
1406 nonce [2] krb5int32,
1407 key-expiration [3] KerberosTime OPTIONAL,
1408 flags [4] TicketFlags,
1409 authtime [5] KerberosTime,
1410 starttime [6] KerberosTime OPTIONAL,
1411 endtime [7] KerberosTime,
1412 renew-till [8] KerberosTime OPTIONAL,
1414 sname [10] PrincipalName,
1415 caddr [11] HostAddresses OPTIONAL,
1416 encrypted-pa-data [12] METHOD-DATA OPTIONAL,
1420 typedef struct EncKDCRepPart
{
1424 KerberosTime
*key_expiration
;
1426 KerberosTime authtime
;
1427 KerberosTime
*starttime
;
1428 KerberosTime endtime
;
1429 KerberosTime
*renew_till
;
1431 PrincipalName sname
;
1432 HostAddresses
*caddr
;
1433 METHOD_DATA
*encrypted_pa_data
;
1436 int decode_EncKDCRepPart(const unsigned char *, size_t, EncKDCRepPart
*, size_t *);
1437 int encode_EncKDCRepPart(unsigned char *, size_t, const EncKDCRepPart
*, size_t *);
1438 size_t length_EncKDCRepPart(const EncKDCRepPart
*);
1439 int copy_EncKDCRepPart (const EncKDCRepPart
*, EncKDCRepPart
*);
1440 void free_EncKDCRepPart (EncKDCRepPart
*);
1444 EncASRepPart ::= [APPLICATION 25] EncKDCRepPart
1447 typedef EncKDCRepPart EncASRepPart
;
1449 int decode_EncASRepPart(const unsigned char *, size_t, EncASRepPart
*, size_t *);
1450 int encode_EncASRepPart(unsigned char *, size_t, const EncASRepPart
*, size_t *);
1451 size_t length_EncASRepPart(const EncASRepPart
*);
1452 int copy_EncASRepPart (const EncASRepPart
*, EncASRepPart
*);
1453 void free_EncASRepPart (EncASRepPart
*);
1457 EncTGSRepPart ::= [APPLICATION 26] EncKDCRepPart
1460 typedef EncKDCRepPart EncTGSRepPart
;
1462 int decode_EncTGSRepPart(const unsigned char *, size_t, EncTGSRepPart
*, size_t *);
1463 int encode_EncTGSRepPart(unsigned char *, size_t, const EncTGSRepPart
*, size_t *);
1464 size_t length_EncTGSRepPart(const EncTGSRepPart
*);
1465 int copy_EncTGSRepPart (const EncTGSRepPart
*, EncTGSRepPart
*);
1466 void free_EncTGSRepPart (EncTGSRepPart
*);
1470 AP-REQ ::= [APPLICATION 14] SEQUENCE {
1472 msg-type [1] MESSAGE-TYPE,
1473 ap-options [2] APOptions,
1475 authenticator [4] EncryptedData,
1479 typedef struct AP_REQ
{
1481 MESSAGE_TYPE msg_type
;
1482 APOptions ap_options
;
1484 EncryptedData authenticator
;
1487 int decode_AP_REQ(const unsigned char *, size_t, AP_REQ
*, size_t *);
1488 int encode_AP_REQ(unsigned char *, size_t, const AP_REQ
*, size_t *);
1489 size_t length_AP_REQ(const AP_REQ
*);
1490 int copy_AP_REQ (const AP_REQ
*, AP_REQ
*);
1491 void free_AP_REQ (AP_REQ
*);
1495 AP-REP ::= [APPLICATION 15] SEQUENCE {
1497 msg-type [1] MESSAGE-TYPE,
1498 enc-part [2] EncryptedData,
1502 typedef struct AP_REP
{
1504 MESSAGE_TYPE msg_type
;
1505 EncryptedData enc_part
;
1508 int decode_AP_REP(const unsigned char *, size_t, AP_REP
*, size_t *);
1509 int encode_AP_REP(unsigned char *, size_t, const AP_REP
*, size_t *);
1510 size_t length_AP_REP(const AP_REP
*);
1511 int copy_AP_REP (const AP_REP
*, AP_REP
*);
1512 void free_AP_REP (AP_REP
*);
1516 EncAPRepPart ::= [APPLICATION 27] SEQUENCE {
1517 ctime [0] KerberosTime,
1518 cusec [1] krb5int32,
1519 subkey [2] EncryptionKey OPTIONAL,
1520 seq-number [3] krb5uint32 OPTIONAL,
1524 typedef struct EncAPRepPart
{
1527 EncryptionKey
*subkey
;
1528 krb5uint32
*seq_number
;
1531 int decode_EncAPRepPart(const unsigned char *, size_t, EncAPRepPart
*, size_t *);
1532 int encode_EncAPRepPart(unsigned char *, size_t, const EncAPRepPart
*, size_t *);
1533 size_t length_EncAPRepPart(const EncAPRepPart
*);
1534 int copy_EncAPRepPart (const EncAPRepPart
*, EncAPRepPart
*);
1535 void free_EncAPRepPart (EncAPRepPart
*);
1539 KRB-SAFE-BODY ::= SEQUENCE {
1540 user-data [0] OCTET STRING,
1541 timestamp [1] KerberosTime OPTIONAL,
1542 usec [2] krb5int32 OPTIONAL,
1543 seq-number [3] krb5uint32 OPTIONAL,
1544 s-address [4] HostAddress OPTIONAL,
1545 r-address [5] HostAddress OPTIONAL,
1549 typedef struct KRB_SAFE_BODY
{
1550 heim_octet_string user_data
;
1551 KerberosTime
*timestamp
;
1553 krb5uint32
*seq_number
;
1554 HostAddress
*s_address
;
1555 HostAddress
*r_address
;
1558 int decode_KRB_SAFE_BODY(const unsigned char *, size_t, KRB_SAFE_BODY
*, size_t *);
1559 int encode_KRB_SAFE_BODY(unsigned char *, size_t, const KRB_SAFE_BODY
*, size_t *);
1560 size_t length_KRB_SAFE_BODY(const KRB_SAFE_BODY
*);
1561 int copy_KRB_SAFE_BODY (const KRB_SAFE_BODY
*, KRB_SAFE_BODY
*);
1562 void free_KRB_SAFE_BODY (KRB_SAFE_BODY
*);
1566 KRB-SAFE ::= [APPLICATION 20] SEQUENCE {
1568 msg-type [1] MESSAGE-TYPE,
1569 safe-body [2] KRB-SAFE-BODY,
1574 typedef struct KRB_SAFE
{
1576 MESSAGE_TYPE msg_type
;
1577 KRB_SAFE_BODY safe_body
;
1581 int decode_KRB_SAFE(const unsigned char *, size_t, KRB_SAFE
*, size_t *);
1582 int encode_KRB_SAFE(unsigned char *, size_t, const KRB_SAFE
*, size_t *);
1583 size_t length_KRB_SAFE(const KRB_SAFE
*);
1584 int copy_KRB_SAFE (const KRB_SAFE
*, KRB_SAFE
*);
1585 void free_KRB_SAFE (KRB_SAFE
*);
1589 KRB-PRIV ::= [APPLICATION 21] SEQUENCE {
1591 msg-type [1] MESSAGE-TYPE,
1592 enc-part [3] EncryptedData,
1596 typedef struct KRB_PRIV
{
1598 MESSAGE_TYPE msg_type
;
1599 EncryptedData enc_part
;
1602 int decode_KRB_PRIV(const unsigned char *, size_t, KRB_PRIV
*, size_t *);
1603 int encode_KRB_PRIV(unsigned char *, size_t, const KRB_PRIV
*, size_t *);
1604 size_t length_KRB_PRIV(const KRB_PRIV
*);
1605 int copy_KRB_PRIV (const KRB_PRIV
*, KRB_PRIV
*);
1606 void free_KRB_PRIV (KRB_PRIV
*);
1610 EncKrbPrivPart ::= [APPLICATION 28] SEQUENCE {
1611 user-data [0] OCTET STRING,
1612 timestamp [1] KerberosTime OPTIONAL,
1613 usec [2] krb5int32 OPTIONAL,
1614 seq-number [3] krb5uint32 OPTIONAL,
1615 s-address [4] HostAddress OPTIONAL,
1616 r-address [5] HostAddress OPTIONAL,
1620 typedef struct EncKrbPrivPart
{
1621 heim_octet_string user_data
;
1622 KerberosTime
*timestamp
;
1624 krb5uint32
*seq_number
;
1625 HostAddress
*s_address
;
1626 HostAddress
*r_address
;
1629 int decode_EncKrbPrivPart(const unsigned char *, size_t, EncKrbPrivPart
*, size_t *);
1630 int encode_EncKrbPrivPart(unsigned char *, size_t, const EncKrbPrivPart
*, size_t *);
1631 size_t length_EncKrbPrivPart(const EncKrbPrivPart
*);
1632 int copy_EncKrbPrivPart (const EncKrbPrivPart
*, EncKrbPrivPart
*);
1633 void free_EncKrbPrivPart (EncKrbPrivPart
*);
1637 KRB-CRED ::= [APPLICATION 22] SEQUENCE {
1639 msg-type [1] MESSAGE-TYPE,
1640 tickets [2] SEQUENCE OF Ticket,
1641 enc-part [3] EncryptedData,
1645 typedef struct KRB_CRED
{
1647 MESSAGE_TYPE msg_type
;
1648 struct KRB_CRED_tickets
{
1652 EncryptedData enc_part
;
1655 int decode_KRB_CRED(const unsigned char *, size_t, KRB_CRED
*, size_t *);
1656 int encode_KRB_CRED(unsigned char *, size_t, const KRB_CRED
*, size_t *);
1657 size_t length_KRB_CRED(const KRB_CRED
*);
1658 int copy_KRB_CRED (const KRB_CRED
*, KRB_CRED
*);
1659 void free_KRB_CRED (KRB_CRED
*);
1663 KrbCredInfo ::= SEQUENCE {
1664 key [0] EncryptionKey,
1665 prealm [1] Realm OPTIONAL,
1666 pname [2] PrincipalName OPTIONAL,
1667 flags [3] TicketFlags OPTIONAL,
1668 authtime [4] KerberosTime OPTIONAL,
1669 starttime [5] KerberosTime OPTIONAL,
1670 endtime [6] KerberosTime OPTIONAL,
1671 renew-till [7] KerberosTime OPTIONAL,
1672 srealm [8] Realm OPTIONAL,
1673 sname [9] PrincipalName OPTIONAL,
1674 caddr [10] HostAddresses OPTIONAL,
1678 typedef struct KrbCredInfo
{
1681 PrincipalName
*pname
;
1683 KerberosTime
*authtime
;
1684 KerberosTime
*starttime
;
1685 KerberosTime
*endtime
;
1686 KerberosTime
*renew_till
;
1688 PrincipalName
*sname
;
1689 HostAddresses
*caddr
;
1692 int decode_KrbCredInfo(const unsigned char *, size_t, KrbCredInfo
*, size_t *);
1693 int encode_KrbCredInfo(unsigned char *, size_t, const KrbCredInfo
*, size_t *);
1694 size_t length_KrbCredInfo(const KrbCredInfo
*);
1695 int copy_KrbCredInfo (const KrbCredInfo
*, KrbCredInfo
*);
1696 void free_KrbCredInfo (KrbCredInfo
*);
1700 EncKrbCredPart ::= [APPLICATION 29] SEQUENCE {
1701 ticket-info [0] SEQUENCE OF KrbCredInfo,
1702 nonce [1] krb5int32 OPTIONAL,
1703 timestamp [2] KerberosTime OPTIONAL,
1704 usec [3] krb5int32 OPTIONAL,
1705 s-address [4] HostAddress OPTIONAL,
1706 r-address [5] HostAddress OPTIONAL,
1710 typedef struct EncKrbCredPart
{
1711 struct EncKrbCredPart_ticket_info
{
1716 KerberosTime
*timestamp
;
1718 HostAddress
*s_address
;
1719 HostAddress
*r_address
;
1722 int decode_EncKrbCredPart(const unsigned char *, size_t, EncKrbCredPart
*, size_t *);
1723 int encode_EncKrbCredPart(unsigned char *, size_t, const EncKrbCredPart
*, size_t *);
1724 size_t length_EncKrbCredPart(const EncKrbCredPart
*);
1725 int copy_EncKrbCredPart (const EncKrbCredPart
*, EncKrbCredPart
*);
1726 void free_EncKrbCredPart (EncKrbCredPart
*);
1730 KRB-ERROR ::= [APPLICATION 30] SEQUENCE {
1732 msg-type [1] MESSAGE-TYPE,
1733 ctime [2] KerberosTime OPTIONAL,
1734 cusec [3] krb5int32 OPTIONAL,
1735 stime [4] KerberosTime,
1736 susec [5] krb5int32,
1737 error-code [6] krb5int32,
1738 crealm [7] Realm OPTIONAL,
1739 cname [8] PrincipalName OPTIONAL,
1741 sname [10] PrincipalName,
1742 e-text [11] GeneralString OPTIONAL,
1743 e-data [12] OCTET STRING OPTIONAL,
1747 typedef struct KRB_ERROR
{
1749 MESSAGE_TYPE msg_type
;
1750 KerberosTime
*ctime
;
1754 krb5int32 error_code
;
1756 PrincipalName
*cname
;
1758 PrincipalName sname
;
1759 heim_general_string
*e_text
;
1760 heim_octet_string
*e_data
;
1763 int decode_KRB_ERROR(const unsigned char *, size_t, KRB_ERROR
*, size_t *);
1764 int encode_KRB_ERROR(unsigned char *, size_t, const KRB_ERROR
*, size_t *);
1765 size_t length_KRB_ERROR(const KRB_ERROR
*);
1766 int copy_KRB_ERROR (const KRB_ERROR
*, KRB_ERROR
*);
1767 void free_KRB_ERROR (KRB_ERROR
*);
1771 ChangePasswdDataMS ::= SEQUENCE {
1772 newpasswd [0] OCTET STRING,
1773 targname [1] PrincipalName OPTIONAL,
1774 targrealm [2] Realm OPTIONAL,
1778 typedef struct ChangePasswdDataMS
{
1779 heim_octet_string newpasswd
;
1780 PrincipalName
*targname
;
1782 } ChangePasswdDataMS
;
1784 int decode_ChangePasswdDataMS(const unsigned char *, size_t, ChangePasswdDataMS
*, size_t *);
1785 int encode_ChangePasswdDataMS(unsigned char *, size_t, const ChangePasswdDataMS
*, size_t *);
1786 size_t length_ChangePasswdDataMS(const ChangePasswdDataMS
*);
1787 int copy_ChangePasswdDataMS (const ChangePasswdDataMS
*, ChangePasswdDataMS
*);
1788 void free_ChangePasswdDataMS (ChangePasswdDataMS
*);
1792 EtypeList ::= SEQUENCE OF krb5int32
1795 typedef struct EtypeList
{
1800 int decode_EtypeList(const unsigned char *, size_t, EtypeList
*, size_t *);
1801 int encode_EtypeList(unsigned char *, size_t, const EtypeList
*, size_t *);
1802 size_t length_EtypeList(const EtypeList
*);
1803 int copy_EtypeList (const EtypeList
*, EtypeList
*);
1804 void free_EtypeList (EtypeList
*);
1807 enum { krb5_pvno
= 5 };
1809 enum { DOMAIN_X500_COMPRESS
= 1 };
1812 AD-IF-RELEVANT ::= AuthorizationData
1815 typedef AuthorizationData AD_IF_RELEVANT
;
1817 int decode_AD_IF_RELEVANT(const unsigned char *, size_t, AD_IF_RELEVANT
*, size_t *);
1818 int encode_AD_IF_RELEVANT(unsigned char *, size_t, const AD_IF_RELEVANT
*, size_t *);
1819 size_t length_AD_IF_RELEVANT(const AD_IF_RELEVANT
*);
1820 int copy_AD_IF_RELEVANT (const AD_IF_RELEVANT
*, AD_IF_RELEVANT
*);
1821 void free_AD_IF_RELEVANT (AD_IF_RELEVANT
*);
1825 AD-KDCIssued ::= SEQUENCE {
1826 ad-checksum [0] Checksum,
1827 i-realm [1] Realm OPTIONAL,
1828 i-sname [2] PrincipalName OPTIONAL,
1829 elements [3] AuthorizationData,
1833 typedef struct AD_KDCIssued
{
1834 Checksum ad_checksum
;
1836 PrincipalName
*i_sname
;
1837 AuthorizationData elements
;
1840 int decode_AD_KDCIssued(const unsigned char *, size_t, AD_KDCIssued
*, size_t *);
1841 int encode_AD_KDCIssued(unsigned char *, size_t, const AD_KDCIssued
*, size_t *);
1842 size_t length_AD_KDCIssued(const AD_KDCIssued
*);
1843 int copy_AD_KDCIssued (const AD_KDCIssued
*, AD_KDCIssued
*);
1844 void free_AD_KDCIssued (AD_KDCIssued
*);
1848 AD-AND-OR ::= SEQUENCE {
1849 condition-count [0] INTEGER,
1850 elements [1] AuthorizationData,
1854 typedef struct AD_AND_OR
{
1855 heim_integer condition_count
;
1856 AuthorizationData elements
;
1859 int decode_AD_AND_OR(const unsigned char *, size_t, AD_AND_OR
*, size_t *);
1860 int encode_AD_AND_OR(unsigned char *, size_t, const AD_AND_OR
*, size_t *);
1861 size_t length_AD_AND_OR(const AD_AND_OR
*);
1862 int copy_AD_AND_OR (const AD_AND_OR
*, AD_AND_OR
*);
1863 void free_AD_AND_OR (AD_AND_OR
*);
1867 AD-MANDATORY-FOR-KDC ::= AuthorizationData
1870 typedef AuthorizationData AD_MANDATORY_FOR_KDC
;
1872 int decode_AD_MANDATORY_FOR_KDC(const unsigned char *, size_t, AD_MANDATORY_FOR_KDC
*, size_t *);
1873 int encode_AD_MANDATORY_FOR_KDC(unsigned char *, size_t, const AD_MANDATORY_FOR_KDC
*, size_t *);
1874 size_t length_AD_MANDATORY_FOR_KDC(const AD_MANDATORY_FOR_KDC
*);
1875 int copy_AD_MANDATORY_FOR_KDC (const AD_MANDATORY_FOR_KDC
*, AD_MANDATORY_FOR_KDC
*);
1876 void free_AD_MANDATORY_FOR_KDC (AD_MANDATORY_FOR_KDC
*);
1880 PA-SAM-TYPE ::= INTEGER {
1881 PA_SAM_TYPE_ENIGMA(1),
1882 PA_SAM_TYPE_DIGI_PATH(2),
1883 PA_SAM_TYPE_SKEY_K0(3),
1884 PA_SAM_TYPE_SKEY(4),
1885 PA_SAM_TYPE_SECURID(5),
1886 PA_SAM_TYPE_CRYPTOCARD(6)
1890 typedef enum PA_SAM_TYPE
{
1891 PA_SAM_TYPE_ENIGMA
= 1,
1892 PA_SAM_TYPE_DIGI_PATH
= 2,
1893 PA_SAM_TYPE_SKEY_K0
= 3,
1894 PA_SAM_TYPE_SKEY
= 4,
1895 PA_SAM_TYPE_SECURID
= 5,
1896 PA_SAM_TYPE_CRYPTOCARD
= 6
1899 int decode_PA_SAM_TYPE(const unsigned char *, size_t, PA_SAM_TYPE
*, size_t *);
1900 int encode_PA_SAM_TYPE(unsigned char *, size_t, const PA_SAM_TYPE
*, size_t *);
1901 size_t length_PA_SAM_TYPE(const PA_SAM_TYPE
*);
1902 int copy_PA_SAM_TYPE (const PA_SAM_TYPE
*, PA_SAM_TYPE
*);
1903 void free_PA_SAM_TYPE (PA_SAM_TYPE
*);
1907 PA-SAM-REDIRECT ::= HostAddresses
1910 typedef HostAddresses PA_SAM_REDIRECT
;
1912 int decode_PA_SAM_REDIRECT(const unsigned char *, size_t, PA_SAM_REDIRECT
*, size_t *);
1913 int encode_PA_SAM_REDIRECT(unsigned char *, size_t, const PA_SAM_REDIRECT
*, size_t *);
1914 size_t length_PA_SAM_REDIRECT(const PA_SAM_REDIRECT
*);
1915 int copy_PA_SAM_REDIRECT (const PA_SAM_REDIRECT
*, PA_SAM_REDIRECT
*);
1916 void free_PA_SAM_REDIRECT (PA_SAM_REDIRECT
*);
1920 SAMFlags ::= BIT STRING {
1922 send-encrypted-sad(1),
1923 must-pk-encrypt-sad(2)
1927 typedef struct SAMFlags
{
1928 unsigned int use_sad_as_key
:1;
1929 unsigned int send_encrypted_sad
:1;
1930 unsigned int must_pk_encrypt_sad
:1;
1931 unsigned int _unused3
:1;
1932 unsigned int _unused4
:1;
1933 unsigned int _unused5
:1;
1934 unsigned int _unused6
:1;
1935 unsigned int _unused7
:1;
1936 unsigned int _unused8
:1;
1937 unsigned int _unused9
:1;
1938 unsigned int _unused10
:1;
1939 unsigned int _unused11
:1;
1940 unsigned int _unused12
:1;
1941 unsigned int _unused13
:1;
1942 unsigned int _unused14
:1;
1943 unsigned int _unused15
:1;
1944 unsigned int _unused16
:1;
1945 unsigned int _unused17
:1;
1946 unsigned int _unused18
:1;
1947 unsigned int _unused19
:1;
1948 unsigned int _unused20
:1;
1949 unsigned int _unused21
:1;
1950 unsigned int _unused22
:1;
1951 unsigned int _unused23
:1;
1952 unsigned int _unused24
:1;
1953 unsigned int _unused25
:1;
1954 unsigned int _unused26
:1;
1955 unsigned int _unused27
:1;
1956 unsigned int _unused28
:1;
1957 unsigned int _unused29
:1;
1958 unsigned int _unused30
:1;
1959 unsigned int _unused31
:1;
1963 unsigned SAMFlags2int(SAMFlags
);
1964 SAMFlags
int2SAMFlags(unsigned);
1965 int decode_SAMFlags(const unsigned char *, size_t, SAMFlags
*, size_t *);
1966 int encode_SAMFlags(unsigned char *, size_t, const SAMFlags
*, size_t *);
1967 size_t length_SAMFlags(const SAMFlags
*);
1968 int copy_SAMFlags (const SAMFlags
*, SAMFlags
*);
1969 void free_SAMFlags (SAMFlags
*);
1973 PA-SAM-CHALLENGE-2-BODY ::= SEQUENCE {
1974 sam-type [0] krb5int32,
1975 sam-flags [1] SAMFlags,
1976 sam-type-name [2] GeneralString OPTIONAL,
1977 sam-track-id [3] GeneralString OPTIONAL,
1978 sam-challenge-label [4] GeneralString OPTIONAL,
1979 sam-challenge [5] GeneralString OPTIONAL,
1980 sam-response-prompt [6] GeneralString OPTIONAL,
1981 sam-pk-for-sad [7] EncryptionKey OPTIONAL,
1982 sam-nonce [8] krb5int32,
1983 sam-etype [9] krb5int32,
1988 typedef struct PA_SAM_CHALLENGE_2_BODY
{
1991 heim_general_string
*sam_type_name
;
1992 heim_general_string
*sam_track_id
;
1993 heim_general_string
*sam_challenge_label
;
1994 heim_general_string
*sam_challenge
;
1995 heim_general_string
*sam_response_prompt
;
1996 EncryptionKey
*sam_pk_for_sad
;
1997 krb5int32 sam_nonce
;
1998 krb5int32 sam_etype
;
1999 } PA_SAM_CHALLENGE_2_BODY
;
2001 int decode_PA_SAM_CHALLENGE_2_BODY(const unsigned char *, size_t, PA_SAM_CHALLENGE_2_BODY
*, size_t *);
2002 int encode_PA_SAM_CHALLENGE_2_BODY(unsigned char *, size_t, const PA_SAM_CHALLENGE_2_BODY
*, size_t *);
2003 size_t length_PA_SAM_CHALLENGE_2_BODY(const PA_SAM_CHALLENGE_2_BODY
*);
2004 int copy_PA_SAM_CHALLENGE_2_BODY (const PA_SAM_CHALLENGE_2_BODY
*, PA_SAM_CHALLENGE_2_BODY
*);
2005 void free_PA_SAM_CHALLENGE_2_BODY (PA_SAM_CHALLENGE_2_BODY
*);
2009 PA-SAM-CHALLENGE-2 ::= SEQUENCE {
2010 sam-body [0] PA-SAM-CHALLENGE-2-BODY,
2011 sam-cksum [1] SEQUENCE OF Checksum,
2016 typedef struct PA_SAM_CHALLENGE_2
{
2017 PA_SAM_CHALLENGE_2_BODY sam_body
;
2018 struct PA_SAM_CHALLENGE_2_sam_cksum
{
2022 } PA_SAM_CHALLENGE_2
;
2024 int decode_PA_SAM_CHALLENGE_2(const unsigned char *, size_t, PA_SAM_CHALLENGE_2
*, size_t *);
2025 int encode_PA_SAM_CHALLENGE_2(unsigned char *, size_t, const PA_SAM_CHALLENGE_2
*, size_t *);
2026 size_t length_PA_SAM_CHALLENGE_2(const PA_SAM_CHALLENGE_2
*);
2027 int copy_PA_SAM_CHALLENGE_2 (const PA_SAM_CHALLENGE_2
*, PA_SAM_CHALLENGE_2
*);
2028 void free_PA_SAM_CHALLENGE_2 (PA_SAM_CHALLENGE_2
*);
2032 PA-SAM-RESPONSE-2 ::= SEQUENCE {
2033 sam-type [0] krb5int32,
2034 sam-flags [1] SAMFlags,
2035 sam-track-id [2] GeneralString OPTIONAL,
2036 sam-enc-nonce-or-sad [3] EncryptedData,
2037 sam-nonce [4] krb5int32,
2042 typedef struct PA_SAM_RESPONSE_2
{
2045 heim_general_string
*sam_track_id
;
2046 EncryptedData sam_enc_nonce_or_sad
;
2047 krb5int32 sam_nonce
;
2048 } PA_SAM_RESPONSE_2
;
2050 int decode_PA_SAM_RESPONSE_2(const unsigned char *, size_t, PA_SAM_RESPONSE_2
*, size_t *);
2051 int encode_PA_SAM_RESPONSE_2(unsigned char *, size_t, const PA_SAM_RESPONSE_2
*, size_t *);
2052 size_t length_PA_SAM_RESPONSE_2(const PA_SAM_RESPONSE_2
*);
2053 int copy_PA_SAM_RESPONSE_2 (const PA_SAM_RESPONSE_2
*, PA_SAM_RESPONSE_2
*);
2054 void free_PA_SAM_RESPONSE_2 (PA_SAM_RESPONSE_2
*);
2058 PA-ENC-SAM-RESPONSE-ENC ::= SEQUENCE {
2059 sam-nonce [0] krb5int32,
2060 sam-sad [1] GeneralString OPTIONAL,
2065 typedef struct PA_ENC_SAM_RESPONSE_ENC
{
2066 krb5int32 sam_nonce
;
2067 heim_general_string
*sam_sad
;
2068 } PA_ENC_SAM_RESPONSE_ENC
;
2070 int decode_PA_ENC_SAM_RESPONSE_ENC(const unsigned char *, size_t, PA_ENC_SAM_RESPONSE_ENC
*, size_t *);
2071 int encode_PA_ENC_SAM_RESPONSE_ENC(unsigned char *, size_t, const PA_ENC_SAM_RESPONSE_ENC
*, size_t *);
2072 size_t length_PA_ENC_SAM_RESPONSE_ENC(const PA_ENC_SAM_RESPONSE_ENC
*);
2073 int copy_PA_ENC_SAM_RESPONSE_ENC (const PA_ENC_SAM_RESPONSE_ENC
*, PA_ENC_SAM_RESPONSE_ENC
*);
2074 void free_PA_ENC_SAM_RESPONSE_ENC (PA_ENC_SAM_RESPONSE_ENC
*);
2078 PA-S4U2Self ::= SEQUENCE {
2079 name [0] PrincipalName,
2082 auth [3] GeneralString,
2086 typedef struct PA_S4U2Self
{
2090 heim_general_string auth
;
2093 int decode_PA_S4U2Self(const unsigned char *, size_t, PA_S4U2Self
*, size_t *);
2094 int encode_PA_S4U2Self(unsigned char *, size_t, const PA_S4U2Self
*, size_t *);
2095 size_t length_PA_S4U2Self(const PA_S4U2Self
*);
2096 int copy_PA_S4U2Self (const PA_S4U2Self
*, PA_S4U2Self
*);
2097 void free_PA_S4U2Self (PA_S4U2Self
*);
2101 KRB5SignedPathData ::= SEQUENCE {
2102 client [0] Principal OPTIONAL,
2103 authtime [1] KerberosTime,
2104 delegated [2] Principals OPTIONAL,
2105 method_data [3] METHOD-DATA OPTIONAL,
2109 typedef struct KRB5SignedPathData
{
2111 KerberosTime authtime
;
2112 Principals
*delegated
;
2113 METHOD_DATA
*method_data
;
2114 } KRB5SignedPathData
;
2116 int decode_KRB5SignedPathData(const unsigned char *, size_t, KRB5SignedPathData
*, size_t *);
2117 int encode_KRB5SignedPathData(unsigned char *, size_t, const KRB5SignedPathData
*, size_t *);
2118 size_t length_KRB5SignedPathData(const KRB5SignedPathData
*);
2119 int copy_KRB5SignedPathData (const KRB5SignedPathData
*, KRB5SignedPathData
*);
2120 void free_KRB5SignedPathData (KRB5SignedPathData
*);
2124 KRB5SignedPath ::= SEQUENCE {
2127 delegated [2] Principals OPTIONAL,
2128 method_data [3] METHOD-DATA OPTIONAL,
2132 typedef struct KRB5SignedPath
{
2135 Principals
*delegated
;
2136 METHOD_DATA
*method_data
;
2139 int decode_KRB5SignedPath(const unsigned char *, size_t, KRB5SignedPath
*, size_t *);
2140 int encode_KRB5SignedPath(unsigned char *, size_t, const KRB5SignedPath
*, size_t *);
2141 size_t length_KRB5SignedPath(const KRB5SignedPath
*);
2142 int copy_KRB5SignedPath (const KRB5SignedPath
*, KRB5SignedPath
*);
2143 void free_KRB5SignedPath (KRB5SignedPath
*);
2147 PA-ClientCanonicalizedNames ::= SEQUENCE {
2148 requested-name [0] PrincipalName,
2149 mapped-name [1] PrincipalName,
2153 typedef struct PA_ClientCanonicalizedNames
{
2154 PrincipalName requested_name
;
2155 PrincipalName mapped_name
;
2156 } PA_ClientCanonicalizedNames
;
2158 int decode_PA_ClientCanonicalizedNames(const unsigned char *, size_t, PA_ClientCanonicalizedNames
*, size_t *);
2159 int encode_PA_ClientCanonicalizedNames(unsigned char *, size_t, const PA_ClientCanonicalizedNames
*, size_t *);
2160 size_t length_PA_ClientCanonicalizedNames(const PA_ClientCanonicalizedNames
*);
2161 int copy_PA_ClientCanonicalizedNames (const PA_ClientCanonicalizedNames
*, PA_ClientCanonicalizedNames
*);
2162 void free_PA_ClientCanonicalizedNames (PA_ClientCanonicalizedNames
*);
2166 PA-ClientCanonicalized ::= SEQUENCE {
2167 names [0] PA-ClientCanonicalizedNames,
2168 canon-checksum [1] Checksum,
2172 typedef struct PA_ClientCanonicalized
{
2173 PA_ClientCanonicalizedNames names
;
2174 Checksum canon_checksum
;
2175 } PA_ClientCanonicalized
;
2177 int decode_PA_ClientCanonicalized(const unsigned char *, size_t, PA_ClientCanonicalized
*, size_t *);
2178 int encode_PA_ClientCanonicalized(unsigned char *, size_t, const PA_ClientCanonicalized
*, size_t *);
2179 size_t length_PA_ClientCanonicalized(const PA_ClientCanonicalized
*);
2180 int copy_PA_ClientCanonicalized (const PA_ClientCanonicalized
*, PA_ClientCanonicalized
*);
2181 void free_PA_ClientCanonicalized (PA_ClientCanonicalized
*);
2185 AD-LoginAlias ::= SEQUENCE {
2186 login-alias [0] PrincipalName,
2187 checksum [1] Checksum,
2191 typedef struct AD_LoginAlias
{
2192 PrincipalName login_alias
;
2196 int decode_AD_LoginAlias(const unsigned char *, size_t, AD_LoginAlias
*, size_t *);
2197 int encode_AD_LoginAlias(unsigned char *, size_t, const AD_LoginAlias
*, size_t *);
2198 size_t length_AD_LoginAlias(const AD_LoginAlias
*);
2199 int copy_AD_LoginAlias (const AD_LoginAlias
*, AD_LoginAlias
*);
2200 void free_AD_LoginAlias (AD_LoginAlias
*);
2204 PA-SvrReferralData ::= SEQUENCE {
2205 referred-name [1] PrincipalName OPTIONAL,
2206 referred-realm [0] Realm,
2210 typedef struct PA_SvrReferralData
{
2211 PrincipalName
*referred_name
;
2212 Realm referred_realm
;
2213 } PA_SvrReferralData
;
2215 int decode_PA_SvrReferralData(const unsigned char *, size_t, PA_SvrReferralData
*, size_t *);
2216 int encode_PA_SvrReferralData(unsigned char *, size_t, const PA_SvrReferralData
*, size_t *);
2217 size_t length_PA_SvrReferralData(const PA_SvrReferralData
*);
2218 int copy_PA_SvrReferralData (const PA_SvrReferralData
*, PA_SvrReferralData
*);
2219 void free_PA_SvrReferralData (PA_SvrReferralData
*);
2223 PA-SERVER-REFERRAL-DATA ::= EncryptedData
2226 typedef EncryptedData PA_SERVER_REFERRAL_DATA
;
2228 int decode_PA_SERVER_REFERRAL_DATA(const unsigned char *, size_t, PA_SERVER_REFERRAL_DATA
*, size_t *);
2229 int encode_PA_SERVER_REFERRAL_DATA(unsigned char *, size_t, const PA_SERVER_REFERRAL_DATA
*, size_t *);
2230 size_t length_PA_SERVER_REFERRAL_DATA(const PA_SERVER_REFERRAL_DATA
*);
2231 int copy_PA_SERVER_REFERRAL_DATA (const PA_SERVER_REFERRAL_DATA
*, PA_SERVER_REFERRAL_DATA
*);
2232 void free_PA_SERVER_REFERRAL_DATA (PA_SERVER_REFERRAL_DATA
*);
2236 PA-ServerReferralData ::= SEQUENCE {
2237 referred-realm [0] Realm OPTIONAL,
2238 true-principal-name [1] PrincipalName OPTIONAL,
2239 requested-principal-name [2] PrincipalName OPTIONAL,
2240 referral-valid-until [3] KerberosTime OPTIONAL,
2245 typedef struct PA_ServerReferralData
{
2246 Realm
*referred_realm
;
2247 PrincipalName
*true_principal_name
;
2248 PrincipalName
*requested_principal_name
;
2249 KerberosTime
*referral_valid_until
;
2250 } PA_ServerReferralData
;
2252 int decode_PA_ServerReferralData(const unsigned char *, size_t, PA_ServerReferralData
*, size_t *);
2253 int encode_PA_ServerReferralData(unsigned char *, size_t, const PA_ServerReferralData
*, size_t *);
2254 size_t length_PA_ServerReferralData(const PA_ServerReferralData
*);
2255 int copy_PA_ServerReferralData (const PA_ServerReferralData
*, PA_ServerReferralData
*);
2256 void free_PA_ServerReferralData (PA_ServerReferralData
*);
2260 FastOptions ::= BIT STRING {
2262 hide-client-names(1),
2263 kdc-follow--referrals(16)
2267 typedef struct FastOptions
{
2268 unsigned int reserved
:1;
2269 unsigned int hide_client_names
:1;
2270 unsigned int _unused2
:1;
2271 unsigned int _unused3
:1;
2272 unsigned int _unused4
:1;
2273 unsigned int _unused5
:1;
2274 unsigned int _unused6
:1;
2275 unsigned int _unused7
:1;
2276 unsigned int _unused8
:1;
2277 unsigned int _unused9
:1;
2278 unsigned int _unused10
:1;
2279 unsigned int _unused11
:1;
2280 unsigned int _unused12
:1;
2281 unsigned int _unused13
:1;
2282 unsigned int _unused14
:1;
2283 unsigned int _unused15
:1;
2284 unsigned int kdc_follow__referrals
:1;
2285 unsigned int _unused17
:1;
2286 unsigned int _unused18
:1;
2287 unsigned int _unused19
:1;
2288 unsigned int _unused20
:1;
2289 unsigned int _unused21
:1;
2290 unsigned int _unused22
:1;
2291 unsigned int _unused23
:1;
2292 unsigned int _unused24
:1;
2293 unsigned int _unused25
:1;
2294 unsigned int _unused26
:1;
2295 unsigned int _unused27
:1;
2296 unsigned int _unused28
:1;
2297 unsigned int _unused29
:1;
2298 unsigned int _unused30
:1;
2299 unsigned int _unused31
:1;
2303 unsigned FastOptions2int(FastOptions
);
2304 FastOptions
int2FastOptions(unsigned);
2305 int decode_FastOptions(const unsigned char *, size_t, FastOptions
*, size_t *);
2306 int encode_FastOptions(unsigned char *, size_t, const FastOptions
*, size_t *);
2307 size_t length_FastOptions(const FastOptions
*);
2308 int copy_FastOptions (const FastOptions
*, FastOptions
*);
2309 void free_FastOptions (FastOptions
*);
2313 KrbFastReq ::= SEQUENCE {
2314 fast-options [0] FastOptions,
2315 padata [1] SEQUENCE OF PA-DATA,
2316 req-body [2] KDC-REQ-BODY,
2321 typedef struct KrbFastReq
{
2322 FastOptions fast_options
;
2323 struct KrbFastReq_padata
{
2327 KDC_REQ_BODY req_body
;
2330 int decode_KrbFastReq(const unsigned char *, size_t, KrbFastReq
*, size_t *);
2331 int encode_KrbFastReq(unsigned char *, size_t, const KrbFastReq
*, size_t *);
2332 size_t length_KrbFastReq(const KrbFastReq
*);
2333 int copy_KrbFastReq (const KrbFastReq
*, KrbFastReq
*);
2334 void free_KrbFastReq (KrbFastReq
*);
2338 KrbFastArmor ::= SEQUENCE {
2339 armor-type [0] krb5int32,
2340 armor-value [1] OCTET STRING,
2345 typedef struct KrbFastArmor
{
2346 krb5int32 armor_type
;
2347 heim_octet_string armor_value
;
2350 int decode_KrbFastArmor(const unsigned char *, size_t, KrbFastArmor
*, size_t *);
2351 int encode_KrbFastArmor(unsigned char *, size_t, const KrbFastArmor
*, size_t *);
2352 size_t length_KrbFastArmor(const KrbFastArmor
*);
2353 int copy_KrbFastArmor (const KrbFastArmor
*, KrbFastArmor
*);
2354 void free_KrbFastArmor (KrbFastArmor
*);
2358 KrbFastArmoredReq ::= SEQUENCE {
2359 armor [0] KrbFastArmor OPTIONAL,
2360 req-checksum [1] Checksum,
2361 enc-fast-req [2] EncryptedData,
2365 typedef struct KrbFastArmoredReq
{
2366 KrbFastArmor
*armor
;
2367 Checksum req_checksum
;
2368 EncryptedData enc_fast_req
;
2369 } KrbFastArmoredReq
;
2371 int decode_KrbFastArmoredReq(const unsigned char *, size_t, KrbFastArmoredReq
*, size_t *);
2372 int encode_KrbFastArmoredReq(unsigned char *, size_t, const KrbFastArmoredReq
*, size_t *);
2373 size_t length_KrbFastArmoredReq(const KrbFastArmoredReq
*);
2374 int copy_KrbFastArmoredReq (const KrbFastArmoredReq
*, KrbFastArmoredReq
*);
2375 void free_KrbFastArmoredReq (KrbFastArmoredReq
*);
2379 PA-FX-FAST-REQUEST ::= CHOICE {
2380 armored-data [0] KrbFastArmoredReq,
2385 typedef struct PA_FX_FAST_REQUEST
{
2387 choice_PA_FX_FAST_REQUEST_asn1_ellipsis
= 0,
2388 choice_PA_FX_FAST_REQUEST_armored_data
2392 KrbFastArmoredReq armored_data
;
2393 heim_octet_string asn1_ellipsis
;
2395 } PA_FX_FAST_REQUEST
;
2397 int decode_PA_FX_FAST_REQUEST(const unsigned char *, size_t, PA_FX_FAST_REQUEST
*, size_t *);
2398 int encode_PA_FX_FAST_REQUEST(unsigned char *, size_t, const PA_FX_FAST_REQUEST
*, size_t *);
2399 size_t length_PA_FX_FAST_REQUEST(const PA_FX_FAST_REQUEST
*);
2400 int copy_PA_FX_FAST_REQUEST (const PA_FX_FAST_REQUEST
*, PA_FX_FAST_REQUEST
*);
2401 void free_PA_FX_FAST_REQUEST (PA_FX_FAST_REQUEST
*);
2405 KrbFastFinished ::= SEQUENCE {
2406 timestamp [0] KerberosTime,
2409 cname [3] PrincipalName,
2410 checksum [4] Checksum,
2411 ticket-checksum [5] Checksum,
2416 typedef struct KrbFastFinished
{
2417 KerberosTime timestamp
;
2420 PrincipalName cname
;
2422 Checksum ticket_checksum
;
2425 int decode_KrbFastFinished(const unsigned char *, size_t, KrbFastFinished
*, size_t *);
2426 int encode_KrbFastFinished(unsigned char *, size_t, const KrbFastFinished
*, size_t *);
2427 size_t length_KrbFastFinished(const KrbFastFinished
*);
2428 int copy_KrbFastFinished (const KrbFastFinished
*, KrbFastFinished
*);
2429 void free_KrbFastFinished (KrbFastFinished
*);
2433 KrbFastResponse ::= SEQUENCE {
2434 padata [0] SEQUENCE OF PA-DATA,
2435 rep-key [1] EncryptionKey OPTIONAL,
2436 finished [2] KrbFastFinished OPTIONAL,
2441 typedef struct KrbFastResponse
{
2442 struct KrbFastResponse_padata
{
2446 EncryptionKey
*rep_key
;
2447 KrbFastFinished
*finished
;
2450 int decode_KrbFastResponse(const unsigned char *, size_t, KrbFastResponse
*, size_t *);
2451 int encode_KrbFastResponse(unsigned char *, size_t, const KrbFastResponse
*, size_t *);
2452 size_t length_KrbFastResponse(const KrbFastResponse
*);
2453 int copy_KrbFastResponse (const KrbFastResponse
*, KrbFastResponse
*);
2454 void free_KrbFastResponse (KrbFastResponse
*);
2458 KrbFastArmoredRep ::= SEQUENCE {
2459 enc-fast-rep [0] EncryptedData,
2464 typedef struct KrbFastArmoredRep
{
2465 EncryptedData enc_fast_rep
;
2466 } KrbFastArmoredRep
;
2468 int decode_KrbFastArmoredRep(const unsigned char *, size_t, KrbFastArmoredRep
*, size_t *);
2469 int encode_KrbFastArmoredRep(unsigned char *, size_t, const KrbFastArmoredRep
*, size_t *);
2470 size_t length_KrbFastArmoredRep(const KrbFastArmoredRep
*);
2471 int copy_KrbFastArmoredRep (const KrbFastArmoredRep
*, KrbFastArmoredRep
*);
2472 void free_KrbFastArmoredRep (KrbFastArmoredRep
*);
2476 PA-FX-FAST-REPLY ::= CHOICE {
2477 armored-data [0] KrbFastArmoredRep,
2482 typedef struct PA_FX_FAST_REPLY
{
2484 choice_PA_FX_FAST_REPLY_asn1_ellipsis
= 0,
2485 choice_PA_FX_FAST_REPLY_armored_data
2489 KrbFastArmoredRep armored_data
;
2490 heim_octet_string asn1_ellipsis
;
2494 int decode_PA_FX_FAST_REPLY(const unsigned char *, size_t, PA_FX_FAST_REPLY
*, size_t *);
2495 int encode_PA_FX_FAST_REPLY(unsigned char *, size_t, const PA_FX_FAST_REPLY
*, size_t *);
2496 size_t length_PA_FX_FAST_REPLY(const PA_FX_FAST_REPLY
*);
2497 int copy_PA_FX_FAST_REPLY (const PA_FX_FAST_REPLY
*, PA_FX_FAST_REPLY
*);
2498 void free_PA_FX_FAST_REPLY (PA_FX_FAST_REPLY
*);
2501 #endif /* __krb5_asn1_h__ */