7080b095f8f2d22094ba9331a7a3c767e6e1d73b
[abartlet/samba.git/.git] / source4 / heimdal / lib / asn1 / krb5.asn1
1 -- $Id$
2
3 KERBEROS5 DEFINITIONS ::=
4 BEGIN
5
6 NAME-TYPE ::= INTEGER {
7         KRB5_NT_UNKNOWN(0),     -- Name type not known
8         KRB5_NT_PRINCIPAL(1),   -- Just the name of the principal as in
9         KRB5_NT_SRV_INST(2),    -- Service and other unique instance (krbtgt)
10         KRB5_NT_SRV_HST(3),     -- Service with host name as instance
11         KRB5_NT_SRV_XHST(4),    -- Service with host as remaining components
12         KRB5_NT_UID(5),         -- Unique ID
13         KRB5_NT_X500_PRINCIPAL(6), -- PKINIT
14         KRB5_NT_SMTP_NAME(7),   -- Name in form of SMTP email name
15         KRB5_NT_ENTERPRISE_PRINCIPAL(10), -- Windows 2000 UPN
16         KRB5_NT_WELLKNOWN(11),  -- Wellknown
17         KRB5_NT_ENT_PRINCIPAL_AND_ID(-130), -- Windows 2000 UPN and SID
18         KRB5_NT_MS_PRINCIPAL(-128), -- NT 4 style name
19         KRB5_NT_MS_PRINCIPAL_AND_ID(-129), -- NT style name and SID
20         KRB5_NT_NTLM(-1200) -- NTLM name, realm is domain
21 }
22
23 -- message types
24
25 MESSAGE-TYPE ::= INTEGER {
26         krb-as-req(10), -- Request for initial authentication
27         krb-as-rep(11), -- Response to KRB_AS_REQ request
28         krb-tgs-req(12), -- Request for authentication based on TGT
29         krb-tgs-rep(13), -- Response to KRB_TGS_REQ request
30         krb-ap-req(14), -- application request to server
31         krb-ap-rep(15), -- Response to KRB_AP_REQ_MUTUAL
32         krb-safe(20), -- Safe (checksummed) application message
33         krb-priv(21), -- Private (encrypted) application message
34         krb-cred(22), -- Private (encrypted) message to forward credentials
35         krb-error(30) -- Error response
36 }
37
38
39 -- pa-data types
40
41 PADATA-TYPE ::= INTEGER {
42         KRB5-PADATA-NONE(0),
43         KRB5-PADATA-TGS-REQ(1),
44         KRB5-PADATA-AP-REQ(1),
45         KRB5-PADATA-ENC-TIMESTAMP(2),
46         KRB5-PADATA-PW-SALT(3),
47         KRB5-PADATA-ENC-UNIX-TIME(5),
48         KRB5-PADATA-SANDIA-SECUREID(6),
49         KRB5-PADATA-SESAME(7),
50         KRB5-PADATA-OSF-DCE(8),
51         KRB5-PADATA-CYBERSAFE-SECUREID(9),
52         KRB5-PADATA-AFS3-SALT(10),
53         KRB5-PADATA-ETYPE-INFO(11),
54         KRB5-PADATA-SAM-CHALLENGE(12), -- (sam/otp)
55         KRB5-PADATA-SAM-RESPONSE(13), -- (sam/otp)
56         KRB5-PADATA-PK-AS-REQ-19(14), -- (PKINIT-19)
57         KRB5-PADATA-PK-AS-REP-19(15), -- (PKINIT-19)
58         KRB5-PADATA-PK-AS-REQ-WIN(15), -- (PKINIT - old number)
59         KRB5-PADATA-PK-AS-REQ(16), -- (PKINIT-25)
60         KRB5-PADATA-PK-AS-REP(17), -- (PKINIT-25)
61         KRB5-PADATA-PA-PK-OCSP-RESPONSE(18),
62         KRB5-PADATA-ETYPE-INFO2(19),
63         KRB5-PADATA-USE-SPECIFIED-KVNO(20),
64         KRB5-PADATA-SVR-REFERRAL-INFO(20), --- old ms referral number
65         KRB5-PADATA-SAM-REDIRECT(21), -- (sam/otp)
66         KRB5-PADATA-GET-FROM-TYPED-DATA(22),
67         KRB5-PADATA-SAM-ETYPE-INFO(23),
68         KRB5-PADATA-SERVER-REFERRAL(25),
69         KRB5-PADATA-ALT-PRINC(24),              -- (crawdad@fnal.gov)
70         KRB5-PADATA-SAM-CHALLENGE2(30),         -- (kenh@pobox.com)
71         KRB5-PADATA-SAM-RESPONSE2(31),          -- (kenh@pobox.com)
72         KRB5-PA-EXTRA-TGT(41),                  -- Reserved extra TGT
73         KRB5-PADATA-TD-KRB-PRINCIPAL(102),      -- PrincipalName
74         KRB5-PADATA-PK-TD-TRUSTED-CERTIFIERS(104), -- PKINIT
75         KRB5-PADATA-PK-TD-CERTIFICATE-INDEX(105), -- PKINIT
76         KRB5-PADATA-TD-APP-DEFINED-ERROR(106),  -- application specific
77         KRB5-PADATA-TD-REQ-NONCE(107),          -- INTEGER
78         KRB5-PADATA-TD-REQ-SEQ(108),            -- INTEGER
79         KRB5-PADATA-PA-PAC-REQUEST(128),        -- jbrezak@exchange.microsoft.com
80         KRB5-PADATA-FOR-USER(129),              -- MS-KILE
81         KRB5-PADATA-FOR-X509-USER(130),         -- MS-KILE
82         KRB5-PADATA-FOR-CHECK-DUPS(131),        -- MS-KILE
83         KRB5-PADATA-AS-CHECKSUM(132),           -- MS-KILE
84         KRB5-PADATA-PK-AS-09-BINDING(132),      -- client send this to
85                                                 -- tell KDC that is supports
86                                                 -- the asCheckSum in the
87                                                 --  PK-AS-REP
88         KRB5-PADATA-CLIENT-CANONICALIZED(133),  -- referals
89         KRB5-PADATA-FX-COOKIE(133),             -- krb-wg-preauth-framework
90         KRB5-PADATA-AUTHENTICATION-SET(134),    -- krb-wg-preauth-framework
91         KRB5-PADATA-AUTH-SET-SELECTED(135),     -- krb-wg-preauth-framework
92         KRB5-PADATA-FX-FAST(136),               -- krb-wg-preauth-framework
93         KRB5-PADATA-FX-ERROR(137),              -- krb-wg-preauth-framework
94         KRB5-PADATA-ENCRYPTED-CHALLENGE(138),   -- krb-wg-preauth-framework
95         KRB5-PADATA-OTP-CHALLENGE(141),         -- (gareth.richards@rsa.com)
96         KRB5-PADATA-OTP-REQUEST(142),           -- (gareth.richards@rsa.com)
97         KBB5-PADATA-OTP-CONFIRM(143),           -- (gareth.richards@rsa.com)
98         KRB5-PADATA-OTP-PIN-CHANGE(144),        -- (gareth.richards@rsa.com)
99         KRB5-PADATA-EPAK-AS-REQ(145),
100         KRB5-PADATA-EPAK-AS-REP(146),
101         KRB5-PADATA-PKINIT-KX(147),             -- krb-wg-anon
102         KRB5-PADATA-PKU2U-NAME(148),            -- zhu-pku2u
103         KRB5-PADATA-SUPPORTED-ETYPES(165)       -- MS-KILE
104 }
105
106 AUTHDATA-TYPE ::= INTEGER {
107         KRB5-AUTHDATA-IF-RELEVANT(1),
108         KRB5-AUTHDATA-INTENDED-FOR_SERVER(2),
109         KRB5-AUTHDATA-INTENDED-FOR-APPLICATION-CLASS(3),
110         KRB5-AUTHDATA-KDC-ISSUED(4),
111         KRB5-AUTHDATA-AND-OR(5),
112         KRB5-AUTHDATA-MANDATORY-TICKET-EXTENSIONS(6),
113         KRB5-AUTHDATA-IN-TICKET-EXTENSIONS(7),
114         KRB5-AUTHDATA-MANDATORY-FOR-KDC(8),
115         KRB5-AUTHDATA-INITIAL-VERIFIED-CAS(9),
116         KRB5-AUTHDATA-OSF-DCE(64),
117         KRB5-AUTHDATA-SESAME(65),
118         KRB5-AUTHDATA-OSF-DCE-PKI-CERTID(66),
119         KRB5-AUTHDATA-WIN2K-PAC(128),
120         KRB5-AUTHDATA-GSS-API-ETYPE-NEGOTIATION(129), -- Authenticator only
121         KRB5-AUTHDATA-SIGNTICKET-OLD(-17),
122         KRB5-AUTHDATA-SIGNTICKET(142)
123 }
124
125 -- checksumtypes
126
127 CKSUMTYPE ::= INTEGER {
128         CKSUMTYPE_NONE(0),
129         CKSUMTYPE_CRC32(1),
130         CKSUMTYPE_RSA_MD4(2),
131         CKSUMTYPE_RSA_MD4_DES(3),
132         CKSUMTYPE_DES_MAC(4),
133         CKSUMTYPE_DES_MAC_K(5),
134         CKSUMTYPE_RSA_MD4_DES_K(6),
135         CKSUMTYPE_RSA_MD5(7),
136         CKSUMTYPE_RSA_MD5_DES(8),
137         CKSUMTYPE_RSA_MD5_DES3(9),
138         CKSUMTYPE_SHA1_OTHER(10),
139         CKSUMTYPE_HMAC_SHA1_DES3(12),
140         CKSUMTYPE_SHA1(14),
141         CKSUMTYPE_HMAC_SHA1_96_AES_128(15),
142         CKSUMTYPE_HMAC_SHA1_96_AES_256(16),
143         CKSUMTYPE_GSSAPI(0x8003),
144         CKSUMTYPE_HMAC_MD5(-138),       -- unofficial microsoft number
145         CKSUMTYPE_HMAC_MD5_ENC(-1138)   -- even more unofficial
146 }
147
148 --enctypes
149 ENCTYPE ::= INTEGER {
150         ETYPE_NULL(0),
151         ETYPE_DES_CBC_CRC(1),
152         ETYPE_DES_CBC_MD4(2),
153         ETYPE_DES_CBC_MD5(3),
154         ETYPE_DES3_CBC_MD5(5),
155         ETYPE_OLD_DES3_CBC_SHA1(7),
156         ETYPE_SIGN_DSA_GENERATE(8),
157         ETYPE_ENCRYPT_RSA_PRIV(9),
158         ETYPE_ENCRYPT_RSA_PUB(10),
159         ETYPE_DES3_CBC_SHA1(16),        -- with key derivation
160         ETYPE_AES128_CTS_HMAC_SHA1_96(17),
161         ETYPE_AES256_CTS_HMAC_SHA1_96(18),
162         ETYPE_ARCFOUR_HMAC_MD5(23),
163         ETYPE_ARCFOUR_HMAC_MD5_56(24),
164         ETYPE_ENCTYPE_PK_CROSS(48),
165 -- some "old" windows types
166         ETYPE_ARCFOUR_MD4(-128),
167         ETYPE_ARCFOUR_HMAC_OLD(-133),
168         ETYPE_ARCFOUR_HMAC_OLD_EXP(-135),
169 -- these are for Heimdal internal use
170         ETYPE_DES_CBC_NONE(-0x1000),
171         ETYPE_DES3_CBC_NONE(-0x1001),
172         ETYPE_DES_CFB64_NONE(-0x1002),
173         ETYPE_DES_PCBC_NONE(-0x1003),
174         ETYPE_DIGEST_MD5_NONE(-0x1004),         -- private use, lukeh@padl.com
175         ETYPE_CRAM_MD5_NONE(-0x1005)            -- private use, lukeh@padl.com
176 }
177
178
179
180
181 -- this is sugar to make something ASN1 does not have: unsigned
182
183 krb5uint32 ::= INTEGER (0..4294967295)
184 krb5int32 ::= INTEGER (-2147483648..2147483647)
185
186 KerberosString  ::= GeneralString
187
188 Realm ::= GeneralString
189 PrincipalName ::= SEQUENCE {
190         name-type[0]            NAME-TYPE,
191         name-string[1]          SEQUENCE OF GeneralString
192 }
193
194 -- this is not part of RFC1510
195 Principal ::= SEQUENCE {
196         name[0]                 PrincipalName,
197         realm[1]                Realm
198 }
199
200 Principals ::= SEQUENCE OF Principal
201
202 HostAddress ::= SEQUENCE  {
203         addr-type[0]            krb5int32,
204         address[1]              OCTET STRING
205 }
206
207 -- This is from RFC1510.
208 --
209 -- HostAddresses ::= SEQUENCE OF SEQUENCE {
210 --      addr-type[0]            krb5int32,
211 --      address[1]              OCTET STRING
212 -- }
213
214 -- This seems much better.
215 HostAddresses ::= SEQUENCE OF HostAddress
216
217
218 KerberosTime ::= GeneralizedTime -- Specifying UTC time zone (Z)
219
220 AuthorizationDataElement ::= SEQUENCE {
221         ad-type[0]              krb5int32,
222         ad-data[1]              OCTET STRING
223 }
224
225 AuthorizationData ::= SEQUENCE OF AuthorizationDataElement
226
227 APOptions ::= BIT STRING {
228         reserved(0),
229         use-session-key(1),
230         mutual-required(2)
231 }
232
233 TicketFlags ::= BIT STRING {
234         reserved(0),
235         forwardable(1),
236         forwarded(2),
237         proxiable(3),
238         proxy(4),
239         may-postdate(5),
240         postdated(6),
241         invalid(7),
242         renewable(8),
243         initial(9),
244         pre-authent(10),
245         hw-authent(11),
246         transited-policy-checked(12),
247         ok-as-delegate(13),
248         anonymous(14)
249 }
250
251 KDCOptions ::= BIT STRING {
252         reserved(0),
253         forwardable(1),
254         forwarded(2),
255         proxiable(3),
256         proxy(4),
257         allow-postdate(5),
258         postdated(6),
259         unused7(7),
260         renewable(8),
261         unused9(9),
262         unused10(10),
263         unused11(11),
264         request-anonymous(14),
265         canonicalize(15),
266         constrained-delegation(16), -- ms extension
267         disable-transited-check(26),
268         renewable-ok(27),
269         enc-tkt-in-skey(28),
270         renew(30),
271         validate(31)
272 }
273
274 LR-TYPE ::= INTEGER {
275         LR_NONE(0),             -- no information
276         LR_INITIAL_TGT(1),      -- last initial TGT request
277         LR_INITIAL(2),          -- last initial request
278         LR_ISSUE_USE_TGT(3),    -- time of newest TGT used
279         LR_RENEWAL(4),          -- time of last renewal
280         LR_REQUEST(5),          -- time of last request (of any type)
281         LR_PW_EXPTIME(6),       -- expiration time of password
282         LR_ACCT_EXPTIME(7)      -- expiration time of account
283 }
284
285 LastReq ::= SEQUENCE OF SEQUENCE {
286         lr-type[0]              LR-TYPE,
287         lr-value[1]             KerberosTime
288 }
289
290
291 EncryptedData ::= SEQUENCE {
292         etype[0]                ENCTYPE, -- EncryptionType
293         kvno[1]                 krb5int32 OPTIONAL,
294         cipher[2]               OCTET STRING -- ciphertext
295 }
296
297 EncryptionKey ::= SEQUENCE {
298         keytype[0]              krb5int32,
299         keyvalue[1]             OCTET STRING
300 }
301
302 -- encoded Transited field
303 TransitedEncoding ::= SEQUENCE {
304         tr-type[0]              krb5int32, -- must be registered
305         contents[1]             OCTET STRING
306 }
307
308 Ticket ::= [APPLICATION 1] SEQUENCE {
309         tkt-vno[0]              krb5int32,
310         realm[1]                Realm,
311         sname[2]                PrincipalName,
312         enc-part[3]             EncryptedData
313 }
314 -- Encrypted part of ticket
315 EncTicketPart ::= [APPLICATION 3] SEQUENCE {
316         flags[0]                TicketFlags,
317         key[1]                  EncryptionKey,
318         crealm[2]               Realm,
319         cname[3]                PrincipalName,
320         transited[4]            TransitedEncoding,
321         authtime[5]             KerberosTime,
322         starttime[6]            KerberosTime OPTIONAL,
323         endtime[7]              KerberosTime,
324         renew-till[8]           KerberosTime OPTIONAL,
325         caddr[9]                HostAddresses OPTIONAL,
326         authorization-data[10]  AuthorizationData OPTIONAL
327 }
328
329 Checksum ::= SEQUENCE {
330         cksumtype[0]            CKSUMTYPE,
331         checksum[1]             OCTET STRING
332 }
333
334 Authenticator ::= [APPLICATION 2] SEQUENCE    {
335         authenticator-vno[0]    krb5int32,
336         crealm[1]               Realm,
337         cname[2]                PrincipalName,
338         cksum[3]                Checksum OPTIONAL,
339         cusec[4]                krb5int32,
340         ctime[5]                KerberosTime,
341         subkey[6]               EncryptionKey OPTIONAL,
342         seq-number[7]           krb5uint32 OPTIONAL,
343         authorization-data[8]   AuthorizationData OPTIONAL
344 }
345
346 PA-DATA ::= SEQUENCE {
347         -- might be encoded AP-REQ
348         padata-type[1]          PADATA-TYPE,
349         padata-value[2]         OCTET STRING
350 }
351
352 ETYPE-INFO-ENTRY ::= SEQUENCE {
353         etype[0]                ENCTYPE,
354         salt[1]                 OCTET STRING OPTIONAL,
355         salttype[2]             krb5int32 OPTIONAL
356 }
357
358 ETYPE-INFO ::= SEQUENCE OF ETYPE-INFO-ENTRY
359
360 ETYPE-INFO2-ENTRY ::= SEQUENCE {
361         etype[0]                ENCTYPE,
362         salt[1]                 KerberosString OPTIONAL,
363         s2kparams[2]            OCTET STRING OPTIONAL
364 }
365
366 ETYPE-INFO2 ::= SEQUENCE SIZE (1..MAX) OF ETYPE-INFO2-ENTRY
367
368 METHOD-DATA ::= SEQUENCE OF PA-DATA
369
370 TypedData ::=   SEQUENCE {
371         data-type[0]            krb5int32,
372         data-value[1]           OCTET STRING OPTIONAL
373 }
374
375 TYPED-DATA ::= SEQUENCE SIZE (1..MAX) OF TypedData
376
377 KDC-REQ-BODY ::= SEQUENCE {
378         kdc-options[0]          KDCOptions,
379         cname[1]                PrincipalName OPTIONAL, -- Used only in AS-REQ
380         realm[2]                Realm,  -- Server's realm
381                                         -- Also client's in AS-REQ
382         sname[3]                PrincipalName OPTIONAL,
383         from[4]                 KerberosTime OPTIONAL,
384         till[5]                 KerberosTime OPTIONAL,
385         rtime[6]                KerberosTime OPTIONAL,
386         nonce[7]                krb5int32,
387         etype[8]                SEQUENCE OF ENCTYPE, -- EncryptionType,
388                                         -- in preference order
389         addresses[9]            HostAddresses OPTIONAL,
390         enc-authorization-data[10] EncryptedData OPTIONAL,
391                                         -- Encrypted AuthorizationData encoding
392         additional-tickets[11]  SEQUENCE OF Ticket OPTIONAL
393 }
394
395 KDC-REQ ::= SEQUENCE {
396         pvno[1]                 krb5int32,
397         msg-type[2]             MESSAGE-TYPE,
398         padata[3]               METHOD-DATA OPTIONAL,
399         req-body[4]             KDC-REQ-BODY
400 }
401
402 AS-REQ ::= [APPLICATION 10] KDC-REQ
403 TGS-REQ ::= [APPLICATION 12] KDC-REQ
404
405 -- padata-type ::= PA-ENC-TIMESTAMP
406 -- padata-value ::= EncryptedData - PA-ENC-TS-ENC
407
408 PA-ENC-TS-ENC ::= SEQUENCE {
409         patimestamp[0]          KerberosTime, -- client's time
410         pausec[1]               krb5int32 OPTIONAL
411 }
412
413 -- draft-brezak-win2k-krb-authz-01
414 PA-PAC-REQUEST ::= SEQUENCE {
415         include-pac[0]          BOOLEAN -- Indicates whether a PAC
416                                         -- should be included or not
417 }
418
419 -- PacketCable provisioning server location, PKT-SP-SEC-I09-030728.pdf
420 PROV-SRV-LOCATION ::= GeneralString
421
422 KDC-REP ::= SEQUENCE {
423         pvno[0]                 krb5int32,
424         msg-type[1]             MESSAGE-TYPE,
425         padata[2]               METHOD-DATA OPTIONAL,
426         crealm[3]               Realm,
427         cname[4]                PrincipalName,
428         ticket[5]               Ticket,
429         enc-part[6]             EncryptedData
430 }
431
432 AS-REP ::= [APPLICATION 11] KDC-REP
433 TGS-REP ::= [APPLICATION 13] KDC-REP
434
435 EncKDCRepPart ::= SEQUENCE {
436         key[0]                  EncryptionKey,
437         last-req[1]             LastReq,
438         nonce[2]                krb5int32,
439         key-expiration[3]       KerberosTime OPTIONAL,
440         flags[4]                TicketFlags,
441         authtime[5]             KerberosTime,
442         starttime[6]            KerberosTime OPTIONAL,
443         endtime[7]              KerberosTime,
444         renew-till[8]           KerberosTime OPTIONAL,
445         srealm[9]               Realm,
446         sname[10]               PrincipalName,
447         caddr[11]               HostAddresses OPTIONAL,
448         encrypted-pa-data[12]   METHOD-DATA OPTIONAL
449 }
450
451 EncASRepPart ::= [APPLICATION 25] EncKDCRepPart
452 EncTGSRepPart ::= [APPLICATION 26] EncKDCRepPart
453
454 AP-REQ ::= [APPLICATION 14] SEQUENCE {
455         pvno[0]                 krb5int32,
456         msg-type[1]             MESSAGE-TYPE,
457         ap-options[2]           APOptions,
458         ticket[3]               Ticket,
459         authenticator[4]        EncryptedData
460 }
461
462 AP-REP ::= [APPLICATION 15] SEQUENCE {
463         pvno[0]                 krb5int32,
464         msg-type[1]             MESSAGE-TYPE,
465         enc-part[2]             EncryptedData
466 }
467
468 EncAPRepPart ::= [APPLICATION 27]     SEQUENCE {
469         ctime[0]                KerberosTime,
470         cusec[1]                krb5int32,
471         subkey[2]               EncryptionKey OPTIONAL,
472         seq-number[3]           krb5uint32 OPTIONAL
473 }
474
475 KRB-SAFE-BODY ::= SEQUENCE {
476         user-data[0]            OCTET STRING,
477         timestamp[1]            KerberosTime OPTIONAL,
478         usec[2]                 krb5int32 OPTIONAL,
479         seq-number[3]           krb5uint32 OPTIONAL,
480         s-address[4]            HostAddress OPTIONAL,
481         r-address[5]            HostAddress OPTIONAL
482 }
483
484 KRB-SAFE ::= [APPLICATION 20] SEQUENCE {
485         pvno[0]                 krb5int32,
486         msg-type[1]             MESSAGE-TYPE,
487         safe-body[2]            KRB-SAFE-BODY,
488         cksum[3]                Checksum
489 }
490
491 KRB-PRIV ::= [APPLICATION 21] SEQUENCE {
492         pvno[0]                 krb5int32,
493         msg-type[1]             MESSAGE-TYPE,
494         enc-part[3]             EncryptedData
495 }
496 EncKrbPrivPart ::= [APPLICATION 28] SEQUENCE {
497         user-data[0]            OCTET STRING,
498         timestamp[1]            KerberosTime OPTIONAL,
499         usec[2]                 krb5int32 OPTIONAL,
500         seq-number[3]           krb5uint32 OPTIONAL,
501         s-address[4]            HostAddress OPTIONAL, -- sender's addr
502         r-address[5]            HostAddress OPTIONAL  -- recip's addr
503 }
504
505 KRB-CRED ::= [APPLICATION 22]   SEQUENCE {
506         pvno[0]                 krb5int32,
507         msg-type[1]             MESSAGE-TYPE, -- KRB_CRED
508         tickets[2]              SEQUENCE OF Ticket,
509         enc-part[3]             EncryptedData
510 }
511
512 KrbCredInfo ::= SEQUENCE {
513         key[0]                  EncryptionKey,
514         prealm[1]               Realm OPTIONAL,
515         pname[2]                PrincipalName OPTIONAL,
516         flags[3]                TicketFlags OPTIONAL,
517         authtime[4]             KerberosTime OPTIONAL,
518         starttime[5]            KerberosTime OPTIONAL,
519         endtime[6]              KerberosTime OPTIONAL,
520         renew-till[7]           KerberosTime OPTIONAL,
521         srealm[8]               Realm OPTIONAL,
522         sname[9]                PrincipalName OPTIONAL,
523         caddr[10]               HostAddresses OPTIONAL
524 }
525
526 EncKrbCredPart ::= [APPLICATION 29]   SEQUENCE {
527         ticket-info[0]          SEQUENCE OF KrbCredInfo,
528         nonce[1]                krb5int32 OPTIONAL,
529         timestamp[2]            KerberosTime OPTIONAL,
530         usec[3]                 krb5int32 OPTIONAL,
531         s-address[4]            HostAddress OPTIONAL,
532         r-address[5]            HostAddress OPTIONAL
533 }
534
535 KRB-ERROR ::= [APPLICATION 30] SEQUENCE {
536         pvno[0]                 krb5int32,
537         msg-type[1]             MESSAGE-TYPE,
538         ctime[2]                KerberosTime OPTIONAL,
539         cusec[3]                krb5int32 OPTIONAL,
540         stime[4]                KerberosTime,
541         susec[5]                krb5int32,
542         error-code[6]           krb5int32,
543         crealm[7]               Realm OPTIONAL,
544         cname[8]                PrincipalName OPTIONAL,
545         realm[9]                Realm, -- Correct realm
546         sname[10]               PrincipalName, -- Correct name
547         e-text[11]              GeneralString OPTIONAL,
548         e-data[12]              OCTET STRING OPTIONAL
549 }
550
551 ChangePasswdDataMS ::= SEQUENCE {
552         newpasswd[0]            OCTET STRING,
553         targname[1]             PrincipalName OPTIONAL,
554         targrealm[2]            Realm OPTIONAL
555 }
556
557 EtypeList ::= SEQUENCE OF krb5int32
558         -- the client's proposed enctype list in
559         -- decreasing preference order, favorite choice first
560
561 krb5-pvno krb5int32 ::= 5 -- current Kerberos protocol version number
562
563 -- transited encodings
564
565 DOMAIN-X500-COMPRESS    krb5int32 ::= 1
566
567 -- authorization data primitives
568
569 AD-IF-RELEVANT ::= AuthorizationData
570
571 AD-KDCIssued ::= SEQUENCE {
572         ad-checksum[0]          Checksum,
573         i-realm[1]              Realm OPTIONAL,
574         i-sname[2]              PrincipalName OPTIONAL,
575         elements[3]             AuthorizationData
576 }
577
578 AD-AND-OR ::= SEQUENCE {
579         condition-count[0]      INTEGER,
580         elements[1]             AuthorizationData
581 }
582
583 AD-MANDATORY-FOR-KDC ::= AuthorizationData
584
585 -- PA-SAM-RESPONSE-2/PA-SAM-RESPONSE-2
586
587 PA-SAM-TYPE ::= INTEGER {
588         PA_SAM_TYPE_ENIGMA(1),          -- Enigma Logic
589         PA_SAM_TYPE_DIGI_PATH(2),       -- Digital Pathways
590         PA_SAM_TYPE_SKEY_K0(3),         -- S/key where  KDC has key 0
591         PA_SAM_TYPE_SKEY(4),            -- Traditional S/Key
592         PA_SAM_TYPE_SECURID(5),         -- Security Dynamics
593         PA_SAM_TYPE_CRYPTOCARD(6)       -- CRYPTOCard
594 }
595
596 PA-SAM-REDIRECT ::= HostAddresses
597
598 SAMFlags ::= BIT STRING {
599         use-sad-as-key(0),
600         send-encrypted-sad(1),
601         must-pk-encrypt-sad(2)
602 }
603
604 PA-SAM-CHALLENGE-2-BODY ::= SEQUENCE {
605         sam-type[0]             krb5int32,
606         sam-flags[1]            SAMFlags,
607         sam-type-name[2]        GeneralString OPTIONAL,
608         sam-track-id[3]         GeneralString OPTIONAL,
609         sam-challenge-label[4]  GeneralString OPTIONAL,
610         sam-challenge[5]        GeneralString OPTIONAL,
611         sam-response-prompt[6]  GeneralString OPTIONAL,
612         sam-pk-for-sad[7]       EncryptionKey OPTIONAL,
613         sam-nonce[8]            krb5int32,
614         sam-etype[9]            krb5int32,
615         ...
616 }
617
618 PA-SAM-CHALLENGE-2 ::= SEQUENCE {
619         sam-body[0]             PA-SAM-CHALLENGE-2-BODY,
620         sam-cksum[1]            SEQUENCE OF Checksum, -- (1..MAX)
621         ...
622 }
623
624 PA-SAM-RESPONSE-2 ::= SEQUENCE {
625         sam-type[0]             krb5int32,
626         sam-flags[1]            SAMFlags,
627         sam-track-id[2]         GeneralString OPTIONAL,
628         sam-enc-nonce-or-sad[3] EncryptedData, -- PA-ENC-SAM-RESPONSE-ENC
629         sam-nonce[4]            krb5int32,
630         ...
631 }
632
633 PA-ENC-SAM-RESPONSE-ENC ::= SEQUENCE {
634         sam-nonce[0]            krb5int32,
635         sam-sad[1]              GeneralString OPTIONAL,
636         ...
637 }
638
639 PA-S4U2Self ::= SEQUENCE {
640         name[0]         PrincipalName,
641         realm[1]        Realm,
642         cksum[2]        Checksum,
643         auth[3]         GeneralString
644 }
645
646 -- never encoded on the wire, just used to checksum over
647 KRB5SignedPathData ::= SEQUENCE {
648         encticket[0]    EncTicketPart,
649         delegated[1]    Principals OPTIONAL
650 }
651
652 KRB5SignedPath ::= SEQUENCE {
653         -- DERcoded KRB5SignedPathData
654         -- krbtgt key (etype), KeyUsage = XXX
655         etype[0]        ENCTYPE,
656         cksum[1]        Checksum,
657         -- srvs delegated though
658         delegated[2]    Principals OPTIONAL
659 }
660
661 PA-ClientCanonicalizedNames ::= SEQUENCE{
662         requested-name  [0] PrincipalName,
663         mapped-name     [1] PrincipalName
664 }
665
666 PA-ClientCanonicalized ::= SEQUENCE {
667         names           [0] PA-ClientCanonicalizedNames,
668         canon-checksum  [1] Checksum
669 }
670
671 AD-LoginAlias ::= SEQUENCE { -- ad-type number TBD --
672         login-alias     [0] PrincipalName,
673         checksum        [1] Checksum
674 }
675
676 -- old ms referral
677 PA-SvrReferralData ::= SEQUENCE {
678         referred-name   [1] PrincipalName OPTIONAL,
679         referred-realm  [0] Realm
680 }
681
682 PA-SERVER-REFERRAL-DATA ::= EncryptedData
683
684 PA-ServerReferralData ::= SEQUENCE {
685         referred-realm          [0] Realm OPTIONAL,
686         true-principal-name     [1] PrincipalName OPTIONAL,
687         requested-principal-name [2] PrincipalName OPTIONAL,
688         referral-valid-until     [3] KerberosTime OPTIONAL,
689         ...
690 }
691
692 FastOptions ::= BIT STRING {
693             reserved(0),
694             hide-client-names(1),
695             kdc-follow--referrals(16)
696 }
697
698 KrbFastReq ::= SEQUENCE {
699         fast-options [0] FastOptions,
700         padata       [1] SEQUENCE OF PA-DATA,
701         req-body     [2] KDC-REQ-BODY,
702         ...
703 }
704
705 KrbFastArmor ::= SEQUENCE {
706         armor-type   [0] krb5int32,
707         armor-value  [1] OCTET STRING,
708         ...
709 }
710
711 KrbFastArmoredReq ::= SEQUENCE {
712         armor        [0] KrbFastArmor OPTIONAL,
713         req-checksum [1] Checksum,
714         enc-fast-req [2] EncryptedData -- KrbFastReq --
715 }
716
717 PA-FX-FAST-REQUEST ::= CHOICE {
718         armored-data [0] KrbFastArmoredReq,
719         ...
720 }
721
722 KrbFastFinished ::= SEQUENCE {
723         timestamp   [0] KerberosTime,
724         usec        [1] krb5int32,
725         crealm      [2] Realm,
726         cname       [3] PrincipalName,
727         checksum    [4] Checksum,
728         ticket-checksum [5] Checksum,
729         ...
730 }
731
732 KrbFastResponse ::= SEQUENCE {
733         padata      [0] SEQUENCE OF PA-DATA,
734         rep-key     [1] EncryptionKey OPTIONAL,
735         finished    [2] KrbFastFinished OPTIONAL,
736         ...
737 }
738
739 KrbFastArmoredRep ::= SEQUENCE {
740         enc-fast-rep      [0] EncryptedData, -- KrbFastResponse --
741         ...
742 }
743
744 PA-FX-FAST-REPLY ::= CHOICE {
745         armored-data [0] KrbFastArmoredRep,
746         ...
747 }
748
749 END
750
751 -- etags -r '/\([A-Za-z][-A-Za-z0-9]*\).*::=/\1/' k5.asn1