@@ -53,6 +53,59 @@ pub fn netflix() {
5353 ) ;
5454}
5555
56+ /* This is notable because it is a popular use of IP address subjectAltNames. */
57+ #[ cfg( feature = "alloc" ) ]
58+ #[ test]
59+ pub fn cloudflare_dns ( ) {
60+ let ee: & [ u8 ] = include_bytes ! ( "cloudflare_dns/ee.der" ) ;
61+ let inter = include_bytes ! ( "cloudflare_dns/inter.der" ) ;
62+ let ca = include_bytes ! ( "cloudflare_dns/ca.der" ) ;
63+
64+ let anchors = vec ! [ webpki:: TrustAnchor :: try_from_cert_der( ca) . unwrap( ) ] ;
65+ let anchors = webpki:: TLSServerTrustAnchors ( & anchors) ;
66+
67+ #[ allow( clippy:: unreadable_literal) ]
68+ let time = webpki:: Time :: from_seconds_since_unix_epoch ( 1663495771 ) ;
69+
70+ let cert = webpki:: EndEntityCert :: try_from ( ee) . unwrap ( ) ;
71+ assert_eq ! (
72+ Ok ( ( ) ) ,
73+ cert. verify_is_valid_tls_server_cert( ALL_SIGALGS , & anchors, & [ inter] , time)
74+ ) ;
75+
76+ let check_name = |name : & str | {
77+ let dns_name_ref = webpki:: DnsNameRef :: try_from_ascii_str ( name) . unwrap ( ) ;
78+ assert_eq ! ( Ok ( ( ) ) , cert. verify_is_valid_for_dns_name( dns_name_ref) ) ;
79+ let subject_name_ref = webpki:: SubjectNameRef :: from ( dns_name_ref) ;
80+ assert_eq ! (
81+ Ok ( ( ) ) ,
82+ cert. verify_is_valid_for_subject_name( subject_name_ref)
83+ ) ;
84+ println ! ( "{:?} ok as name" , name) ;
85+ } ;
86+
87+ let check_addr = |addr : & str | {
88+ let subject_name_ref = webpki:: SubjectNameRef :: try_from_ascii ( addr. as_bytes ( ) ) . unwrap ( ) ;
89+ assert_eq ! (
90+ Ok ( ( ) ) ,
91+ cert. verify_is_valid_for_subject_name( subject_name_ref)
92+ ) ;
93+ println ! ( "{:?} ok as address" , addr) ;
94+ } ;
95+
96+ check_name ( "cloudflare-dns.com" ) ;
97+ check_name ( "wildcard.cloudflare-dns.com" ) ;
98+ check_name ( "one.one.one.one" ) ;
99+ check_addr ( "1.1.1.1" ) ;
100+ check_addr ( "1.0.0.1" ) ;
101+ check_addr ( "162.159.36.1" ) ;
102+ check_addr ( "162.159.46.1" ) ;
103+ check_addr ( "2606:4700:4700:0000:0000:0000:0000:1111" ) ;
104+ check_addr ( "2606:4700:4700:0000:0000:0000:0000:1001" ) ;
105+ check_addr ( "2606:4700:4700:0000:0000:0000:0000:0064" ) ;
106+ check_addr ( "2606:4700:4700:0000:0000:0000:0000:6400" ) ;
107+ }
108+
56109#[ test]
57110pub fn ed25519 ( ) {
58111 let ee: & [ u8 ] = include_bytes ! ( "ed25519/ee.der" ) ;
0 commit comments