Skip to main content

picky_krb/
constants.rs

1pub mod types {
2    //= [Kerberos Message Types](https://datatracker.ietf.org/doc/html/rfc4120#section-7.5.7) =//
3    pub const AS_REQ_MSG_TYPE: u8 = 0x0a;
4    pub const AS_REP_MSG_TYPE: u8 = 0x0b;
5    pub const TGS_REQ_MSG_TYPE: u8 = 0x0c;
6    pub const TGS_REP_MSG_TYPE: u8 = 0x0d;
7    pub const AP_REQ_MSG_TYPE: u8 = 0x0e;
8    pub const AP_REP_MSG_TYPE: u8 = 0x0f;
9    pub const TGT_REQ_MSG_TYPE: u8 = 0x10;
10    pub const TGT_REP_MSG_TYPE: u8 = 0x11;
11
12    pub const KRB_PRIV: u8 = 21;
13    pub const KRB_PRIV_ENC_PART: u8 = 28;
14
15    pub const KRB_ERROR_MSG_TYPE: u8 = 0x1e;
16
17    //= [Principal Names](https://datatracker.ietf.org/doc/html/rfc4120#section-6.2) =//
18    pub const NT_UNKNOWN: u8 = 0x00;
19    pub const NT_PRINCIPAL: u8 = 0x01;
20    pub const NT_SRV_INST: u8 = 0x02;
21    pub const NT_SRV_HST: u8 = 0x03;
22    pub const NT_SRV_XHST: u8 = 0x04;
23    pub const NT_UID: u8 = 0x05;
24    pub const NT_X500_PRINCIPAL: u8 = 0x06;
25    pub const NT_SMTP_NAME: u8 = 0x07;
26    pub const NT_ENTERPRISE: u8 = 0x0A;
27
28    //= [PreAuthentication Data Types](https://datatracker.ietf.org/doc/html/rfc4120#section-7.5.2) =//
29    pub const PA_ENC_TIMESTAMP: [u8; 1] = [0x02];
30    pub const PA_ENC_TIMESTAMP_KEY_USAGE: i32 = 1;
31    pub const PA_PAC_REQUEST_TYPE: [u8; 2] = [0x00, 0x80];
32    pub const PA_ETYPE_INFO2_TYPE: [u8; 1] = [0x13];
33    pub const PA_TGS_REQ_TYPE: [u8; 1] = [0x01];
34    pub const PA_PAC_OPTIONS_TYPE: [u8; 2] = [0x00, 0xa7];
35    //= [PKINIT](https://www.rfc-editor.org/rfc/rfc4556.html#section-3.1.3) =//
36    pub const PA_PK_AS_REQ: [u8; 1] = [0x10];
37    pub const PA_PK_AS_REP: [u8; 1] = [17];
38
39    //= [Application Tag Numbers](https://www.rfc-editor.org/rfc/rfc4120#section-5.10) =//
40    pub const TICKET_TYPE: u8 = 1;
41    pub const AUTHENTICATOR_TYPE: u8 = 2;
42    pub const ENC_TICKET_PART_TYPE: u8 = 3;
43    pub const ENC_AS_REP_PART_TYPE: u8 = 25;
44    pub const ENC_TGS_REP_PART_TYPE: u8 = 26;
45    pub const ENC_AP_REP_PART_TYPE: u8 = 27;
46
47    //= [Address Types](https://datatracker.ietf.org/doc/html/rfc4120#section-7.5.3) =//
48    pub const IP_V4_ADDR_TYPE: u8 = 2;
49    pub const DIRECTIONAL_ADDR_TYPE: u8 = 3;
50    pub const CHAOS_NET_ADDR_TYPE: u8 = 5;
51    pub const XNS_ADDR_TYPE: u8 = 6;
52    pub const ISO_ADDR_TYPE: u8 = 7;
53    pub const DECNET_PHASE_IV_ADDR_TYPE: u8 = 12;
54    pub const APPLETALK_DDP_ADDR_TYPE: u8 = 16;
55    pub const NET_BIOS_ADDR_TYPE: u8 = 20;
56    pub const IP_V6_ADDR_TYPE: u8 = 24;
57
58    //= [3.2.5.8 AP Exchange](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-kile/b15648e2-439a-4d04-b8a2-2f34c45690f9) =//
59    pub const AD_AUTH_DATA_AP_OPTION_TYPE: [u8; 2] = [0x00, 0x8f];
60    pub const KERB_AP_OPTIONS_CBT: [u8; 2] = [0x40, 0x00];
61}
62
63pub mod key_usages {
64    //= [GSS API Key Usages](https://datatracker.ietf.org/doc/html/rfc4121#section-2) =//
65    pub const ACCEPTOR_SEAL: i32 = 22;
66    pub const ACCEPTOR_SIGN: i32 = 23;
67    pub const INITIATOR_SEAL: i32 = 24;
68    pub const INITIATOR_SIGN: i32 = 25;
69
70    //= [Key Usage Numbers](https://datatracker.ietf.org/doc/html/rfc4120#section-7.5.1) =//
71    pub const AS_REQ_TIMESTAMP: i32 = 1;
72    pub const TICKET_REP: i32 = 2;
73    pub const AS_REP_ENC: i32 = 3;
74    pub const TGS_REQ_AUTH_DATA_SESSION_KEY: i32 = 4;
75    pub const TGS_REQ_AUTH_DATA_SUB_KEY: i32 = 5;
76    pub const TGS_REQ_PA_DATA_AP_REQ_AUTHENTICATOR_CKSUM: i32 = 6;
77    pub const TGS_REQ_PA_DATA_AP_REQ_AUTHENTICATOR: i32 = 7;
78    pub const TGS_REP_ENC_SESSION_KEY: i32 = 8;
79    pub const TGS_REP_ENC_SUB_KEY: i32 = 9;
80    pub const AP_REQ_AUTHENTICATOR_CKSUM: i32 = 10;
81    pub const AP_REQ_AUTHENTICATOR: i32 = 11;
82    pub const AP_REP_ENC: i32 = 12;
83    pub const KRB_PRIV_ENC_PART: i32 = 13;
84
85    //= [The GSS-API Binding for PKU2U](https://datatracker.ietf.org/doc/html/draft-zhu-pku2u-04#section-6) =//
86    pub const KEY_USAGE_FINISHED: i32 = 41;
87}
88
89//= [The Kerberos Version 5 GSS API](https://datatracker.ietf.org/doc/html/rfc4121) =//
90pub mod gss_api {
91    pub const AP_REQ_TOKEN_ID: [u8; 2] = [0x01, 0x00];
92    pub const AP_REP_TOKEN_ID: [u8; 2] = [0x02, 0x00];
93    pub const TGT_REQ_TOKEN_ID: [u8; 2] = [0x04, 0x00];
94    pub const TGT_REP_TOKEN_ID: [u8; 2] = [0x04, 0x01];
95
96    /// [The Protocol Description](https://datatracker.ietf.org/doc/html/draft-zhu-pku2u-09#section-6)
97    /// KRB_AS_REQ          05 00
98    pub const AS_REQ_TOKEN_ID: [u8; 2] = [0x05, 0x00];
99    /// [The Protocol Description](https://datatracker.ietf.org/doc/html/draft-zhu-pku2u-09#section-6)
100    /// KRB_AS_REP          06 00
101    pub const AS_REP_TOKEN_ID: [u8; 2] = [0x06, 0x00];
102
103    pub const ACCEPT_COMPLETE: [u8; 3] = [0x0a, 0x01, 0x00];
104    pub const ACCEPT_INCOMPLETE: [u8; 3] = [0x0a, 0x01, 0x01];
105
106    pub const MIC_TOKEN_ID: [u8; 2] = [0x04, 0x04];
107    pub const MIC_FILLER: [u8; 5] = [0xff, 0xff, 0xff, 0xff, 0xff];
108
109    pub const WRAP_TOKEN_ID: [u8; 2] = [0x05, 0x04];
110    pub const WRAP_FILLER: u8 = 0xff;
111
112    //= [Authenticator Checksum](https://datatracker.ietf.org/doc/html/rfc4121#section-4.1.1) =//
113    pub const AUTHENTICATOR_CHECKSUM_TYPE: [u8; 3] = [0x00, 0x80, 0x03];
114}
115
116//= [Kerberos Change Password and Set Password Protocols](https://datatracker.ietf.org/doc/html/rfc3244) =//
117pub mod krb_priv {
118    pub const KRB_PRIV_VERSION: [u8; 2] = [0x00, 0x01];
119}
120
121//= [Assigned Numbers](https://datatracker.ietf.org/doc/html/rfc3961#section-8) =//
122pub mod etypes {
123    pub const DES3_CBC_MD5: usize = 5;
124    pub const DES3_CBC_SHA1: usize = 7;
125    pub const DES3_CBC_SHA1_KD: usize = 16;
126    pub const AES128_CTS_HMAC_SHA1_96: usize = 17;
127    pub const AES256_CTS_HMAC_SHA1_96: usize = 18;
128    pub const RC4_HMA: usize = 23;
129}
130
131//= [Assigned Numbers](https://datatracker.ietf.org/doc/html/rfc3961#section-8) =//
132pub mod cksum_types {
133    pub const CRC32: usize = 1;
134    pub const RSA_MD4: usize = 2;
135    pub const RSA_MD4_DES: usize = 3;
136    pub const DES_MAC: usize = 4;
137    pub const DES_MAC_K: usize = 5;
138    pub const RSA_MD4_DES_K: usize = 6;
139    pub const RSA_MD5: usize = 7;
140    pub const RSA_MD5_DES: usize = 8;
141    pub const RSA_MD5_DES3: usize = 9;
142    pub const HMAC_SHA1_DES3_KD: usize = 12;
143    pub const HMAC_SHA1_DES3: usize = 13;
144    pub const HMAC_SHA1_96_AES128: usize = 15;
145    pub const HMAC_SHA1_96_AES256: usize = 16;
146}
147
148//= [2.2.1.2 TSCredentials](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cssp/94a1ab00-5500-42fd-8d3d-7a84e6c2cf03) =//
149pub mod cred_ssp {
150    pub const TS_PASSWORD_CREDS: u8 = 1;
151    pub const TS_SMART_CARD_CREDS: u8 = 2;
152    pub const TS_REMOTE_GUARD_CREDS: u8 = 6;
153
154    // [KeySpec values](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/ad-fs-and-keyspec-property#keyspec-values-and-associated-meanings)
155    pub const AT_KEYEXCHANGE: u8 = 1;
156    pub const AT_SIGNATURE: u8 = 2;
157}
158
159pub mod error_codes {
160    //= [Error Codes](https://datatracker.ietf.org/doc/html/rfc4120#section-7.5.9) =//
161    pub const KDC_ERR_NONE: u32 = 0;
162    pub const KDC_ERR_NAME_EXP: u32 = 1;
163    pub const KDC_ERR_SERVICE_EXP: u32 = 2;
164    pub const KDC_ERR_BAD_PVNO: u32 = 3;
165    pub const KDC_ERR_C_OLD_MAST_KVNO: u32 = 4;
166    pub const KDC_ERR_S_OLD_MAST_KVNO: u32 = 5;
167    pub const KDC_ERR_C_PRINCIPAL_UNKNOWN: u32 = 6;
168    pub const KDC_ERR_S_PRINCIPAL_UNKNOWN: u32 = 7;
169    pub const KDC_ERR_PRINCIPAL_NOT_UNIQUE: u32 = 8;
170    pub const KDC_ERR_NULL_KEY: u32 = 9;
171    pub const KDC_ERR_CANNOT_POSTDATE: u32 = 10;
172    pub const KDC_ERR_NEVER_VALID: u32 = 11;
173    pub const KDC_ERR_POLICY: u32 = 12;
174    pub const KDC_ERR_BADOPTION: u32 = 13;
175    pub const KDC_ERR_ETYPE_NOSUPP: u32 = 14;
176    pub const KDC_ERR_SUMTYPE_NOSUPP: u32 = 15;
177    pub const KDC_ERR_PADATA_TYPE_NOSUPP: u32 = 16;
178    pub const KDC_ERR_TRTYPE_NOSUPP: u32 = 17;
179    pub const KDC_ERR_CLIENT_REVOKED: u32 = 18;
180    pub const KDC_ERR_SERVICE_REVOKED: u32 = 19;
181    pub const KDC_ERR_TGT_REVOKED: u32 = 20;
182    pub const KDC_ERR_CLIENT_NOTYET: u32 = 21;
183    pub const KDC_ERR_SERVICE_NOTYET: u32 = 22;
184    pub const KDC_ERR_KEY_EXPIRED: u32 = 23;
185    pub const KDC_ERR_PREAUTH_FAILED: u32 = 24;
186    pub const KDC_ERR_PREAUTH_REQUIRED: u32 = 25;
187    pub const KDC_ERR_SERVER_NOMATCH: u32 = 26;
188    pub const KDC_ERR_MUST_USE_USER2USER: u32 = 27;
189    pub const KDC_ERR_PATH_NOT_ACCEPTED: u32 = 28;
190    pub const KDC_ERR_SVC_UNAVAILABLE: u32 = 29;
191    pub const KRB_AP_ERR_BAD_INTEGRITY: u32 = 31;
192    pub const KRB_AP_ERR_TKT_EXPIRED: u32 = 32;
193    pub const KRB_AP_ERR_TKT_NYV: u32 = 33;
194    pub const KRB_AP_ERR_REPEAT: u32 = 34;
195    pub const KRB_AP_ERR_NOT_US: u32 = 35;
196    pub const KRB_AP_ERR_BADMATCH: u32 = 36;
197    pub const KRB_AP_ERR_SKEW: u32 = 37;
198    pub const KRB_AP_ERR_BADADDR: u32 = 38;
199    pub const KRB_AP_ERR_BADVERSION: u32 = 39;
200    pub const KRB_AP_ERR_MSG_TYPE: u32 = 40;
201    pub const KRB_AP_ERR_MODIFIED: u32 = 41;
202    pub const KRB_AP_ERR_BADORDER: u32 = 42;
203    pub const KRB_AP_ERR_BADKEYVER: u32 = 44;
204    pub const KRB_AP_ERR_NOKEY: u32 = 45;
205    pub const KRB_AP_ERR_MUT_FAIL: u32 = 46;
206    pub const KRB_AP_ERR_BADDIRECTION: u32 = 47;
207    pub const KRB_AP_ERR_METHOD: u32 = 48;
208    pub const KRB_AP_ERR_BADSEQ: u32 = 49;
209    pub const KRB_AP_ERR_INAPP_CKSUM: u32 = 50;
210    pub const KRB_AP_PATH_NOT_ACCEPTED: u32 = 51;
211    pub const KRB_ERR_RESPONSE_TOO_BIG: u32 = 52;
212    pub const KRB_ERR_GENERIC: u32 = 60;
213    pub const KRB_ERR_FIELD_TOOLONG: u32 = 61;
214    pub const KDC_ERROR_CLIENT_NOT_TRUSTED: u32 = 62;
215    pub const KDC_ERROR_KDC_NOT_TRUSTED: u32 = 63;
216    pub const KDC_ERROR_INVALID_SIG: u32 = 64;
217    pub const KDC_ERR_KEY_TOO_WEAK: u32 = 65;
218    pub const KDC_ERR_CERTIFICATE_MISMATCH: u32 = 66;
219    pub const KRB_AP_ERR_NO_TGT: u32 = 67;
220    pub const KDC_ERR_WRONG_REALM: u32 = 68;
221    pub const KRB_AP_ERR_USER_TO_USER_REQUIRED: u32 = 69;
222    pub const KDC_ERR_CANT_VERIFY_CERTIFICATE: u32 = 70;
223    pub const KDC_ERR_INVALID_CERTIFICATE: u32 = 71;
224    pub const KDC_ERR_REVOKED_CERTIFICATE: u32 = 72;
225    pub const KDC_ERR_REVOCATION_STATUS_UNKNOWN: u32 = 73;
226    pub const KDC_ERR_REVOCATION_STATUS_UNAVAILABLE: u32 = 74;
227    pub const KDC_ERR_CLIENT_NAME_MISMATCH: u32 = 75;
228    pub const KDC_ERR_KDC_NAME_MISMATCH: u32 = 76;
229}