1use red_asn1::SequenceOf;
2use crate::EtypeInfo2Entry;
3
4pub type EtypeInfo2 = SequenceOf<EtypeInfo2Entry>;
11
12#[cfg(test)]
13mod test {
14 use super::*;
15 use kerberos_constants::etypes::*;
16 use crate::KerberosString;
17 use red_asn1::Asn1Object;
18
19 #[test]
20 fn test_parse_etypeinfo2() {
21 let entry1 = EtypeInfo2Entry::new(
22 AES256_CTS_HMAC_SHA1_96,
23 Some(KerberosString::from("KINGDOM.HEARTSmickey")),
24 None
25 );
26
27 let entry2 = EtypeInfo2Entry::new(RC4_HMAC, None, None);
28
29 let entry3 = EtypeInfo2Entry::new(
30 DES_CBC_MD5,
31 Some(KerberosString::from("KINGDOM.HEARTSmickey")),
32 None
33 );
34
35 let mut info2 = EtypeInfo2::default();
36 info2.push(entry1);
37 info2.push(entry2);
38 info2.push(entry3);
39
40 assert_eq!(
41 info2,
42 EtypeInfo2::parse(&[
43 0x30, 0x45, 0x30, 0x1d, 0xa0, 0x03, 0x02, 0x01, 0x12, 0xa1, 0x16, 0x1b, 0x14, 0x4b,
44 0x49, 0x4e, 0x47, 0x44, 0x4f, 0x4d, 0x2e, 0x48, 0x45, 0x41, 0x52, 0x54, 0x53, 0x6d,
45 0x69, 0x63, 0x6b, 0x65, 0x79, 0x30, 0x05, 0xa0, 0x03, 0x02, 0x01, 0x17, 0x30, 0x1d,
46 0xa0, 0x03, 0x02, 0x01, 0x03, 0xa1, 0x16, 0x1b, 0x14, 0x4b, 0x49, 0x4e, 0x47, 0x44,
47 0x4f, 0x4d, 0x2e, 0x48, 0x45, 0x41, 0x52, 0x54, 0x53, 0x6d, 0x69, 0x63, 0x6b, 0x65,
48 0x79,
49 ]).unwrap().1
50 );
51 }
52
53
54 #[test]
55 fn test_build_etypeinfo2() {
56 let entry1 = EtypeInfo2Entry::new(
57 AES256_CTS_HMAC_SHA1_96,
58 Some(KerberosString::from("KINGDOM.HEARTSmickey")),
59 None
60 );
61
62 let entry2 = EtypeInfo2Entry::new(RC4_HMAC, None, None);
63
64 let entry3 = EtypeInfo2Entry::new(
65 DES_CBC_MD5,
66 Some(KerberosString::from("KINGDOM.HEARTSmickey")),
67 None
68 );
69
70 let mut info2 = EtypeInfo2::default();
71 info2.push(entry1);
72 info2.push(entry2);
73 info2.push(entry3);
74
75 assert_eq!(
76 vec![
77 0x30, 0x45, 0x30, 0x1d, 0xa0, 0x03, 0x02, 0x01, 0x12, 0xa1, 0x16, 0x1b, 0x14, 0x4b,
78 0x49, 0x4e, 0x47, 0x44, 0x4f, 0x4d, 0x2e, 0x48, 0x45, 0x41, 0x52, 0x54, 0x53, 0x6d,
79 0x69, 0x63, 0x6b, 0x65, 0x79, 0x30, 0x05, 0xa0, 0x03, 0x02, 0x01, 0x17, 0x30, 0x1d,
80 0xa0, 0x03, 0x02, 0x01, 0x03, 0xa1, 0x16, 0x1b, 0x14, 0x4b, 0x49, 0x4e, 0x47, 0x44,
81 0x4f, 0x4d, 0x2e, 0x48, 0x45, 0x41, 0x52, 0x54, 0x53, 0x6d, 0x69, 0x63, 0x6b, 0x65,
82 0x79,
83 ],
84 info2.build()
85 );
86 }
87}