verdict_parser/x509/
name.rs

1use super::*;
2use vstd::prelude::*;
3
4verus! {
5
6// In X.509: Name ::= SEQUENCE OF RelativeDistinguishedName
7asn1! {
8    seq of Name(ASN1(RDN)): ASN1<RDN>;
9}
10
11}
12
13#[cfg(test)]
14mod test {
15    use super::*;
16
17    verus! {
18        /// Check that all trait bounds and preconditions are satisfied
19        #[test]
20        fn is_combinator() {
21            let _ = ASN1(Name).parse(&[]);
22        }
23    }
24
25    #[test]
26    fn sanity() {
27        assert!(ASN1(Name)
28            .parse(&[
29                0x30, 0x81, 0xA4, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
30                0x50, 0x41, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x06, 0x50,
31                0x61, 0x6E, 0x61, 0x6D, 0x61, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07,
32                0x0C, 0x0B, 0x50, 0x61, 0x6E, 0x61, 0x6D, 0x61, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31,
33                0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x1B, 0x54, 0x72, 0x75, 0x73,
34                0x74, 0x43, 0x6F, 0x72, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x53,
35                0x2E, 0x20, 0x64, 0x65, 0x20, 0x52, 0x2E, 0x4C, 0x2E, 0x31, 0x27, 0x30, 0x25, 0x06,
36                0x03, 0x55, 0x04, 0x0B, 0x0C, 0x1E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x6F, 0x72,
37                0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41,
38                0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03,
39                0x55, 0x04, 0x03, 0x0C, 0x16, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x6F, 0x72, 0x20,
40                0x52, 0x6F, 0x6F, 0x74, 0x43, 0x65, 0x72, 0x74, 0x20, 0x43, 0x41, 0x2D, 0x32,
41            ])
42            .is_ok());
43    }
44}