@@ -19,6 +19,7 @@ use core::slice;
1919use core:: time:: Duration ;
2020
2121use pki_types:: { CertificateDer , UnixTime } ;
22+ use webpki:: sct:: LogIdAndTimestamp ;
2223use webpki:: { ExtendedKeyUsage , anchor_from_trusted_cert} ;
2324
2425/* Checks we can verify netflix's cert chain. This is notable
@@ -463,3 +464,52 @@ fn cert_time_validity() {
463464 } )
464465 ) ;
465466}
467+
468+ #[ test]
469+ fn with_scts ( ) {
470+ let ee: & [ u8 ] = include_bytes ! ( "cloudflare_dns/ee.der" ) ;
471+ let ee = CertificateDer :: from ( ee) ;
472+ let cert = webpki:: EndEntityCert :: try_from ( & ee) . unwrap ( ) ;
473+
474+ let expect_scts = vec ! [
475+ LogIdAndTimestamp {
476+ log_id: [
477+ 41 , 121 , 190 , 240 , 158 , 57 , 57 , 33 , 240 , 86 , 115 , 159 , 99 , 165 , 119 , 229 , 190 , 87 ,
478+ 125 , 156 , 96 , 10 , 248 , 249 , 77 , 93 , 38 , 92 , 37 , 93 , 199 , 132 ,
479+ ] ,
480+ timestamp: 1635197764079 ,
481+ } ,
482+ LogIdAndTimestamp {
483+ log_id: [
484+ 81 , 163 , 176 , 245 , 253 , 1 , 121 , 156 , 86 , 109 , 184 , 55 , 120 , 143 , 12 , 164 , 122 , 204 ,
485+ 27 , 39 , 203 , 247 , 158 , 136 , 66 , 154 , 13 , 254 , 212 , 139 , 5 , 229 ,
486+ ] ,
487+ timestamp: 1635197764090 ,
488+ } ,
489+ LogIdAndTimestamp {
490+ log_id: [
491+ 65 , 200 , 202 , 177 , 223 , 34 , 70 , 74 , 16 , 198 , 161 , 58 , 9 , 66 , 135 , 94 , 78 , 49 , 139 ,
492+ 27 , 3 , 235 , 235 , 75 , 199 , 104 , 240 , 144 , 98 , 150 , 6 , 246 ,
493+ ] ,
494+ timestamp: 1635197764024 ,
495+ } ,
496+ ] ;
497+ assert_eq ! (
498+ Ok ( expect_scts) ,
499+ cert. sct_log_timestamps( )
500+ . unwrap( )
501+ . collect:: <Result <Vec <_>, _>>( )
502+ ) ;
503+ }
504+
505+ #[ test]
506+ fn no_scts ( ) {
507+ let der = CertificateDer :: from ( & include_bytes ! ( "misc/uri_san_ee.der" ) [ ..] ) ;
508+ let cert = webpki:: EndEntityCert :: try_from ( & der) . unwrap ( ) ;
509+ assert_eq ! (
510+ Ok ( vec![ ] ) ,
511+ cert. sct_log_timestamps( )
512+ . unwrap( )
513+ . collect:: <Result <Vec <_>, _>>( )
514+ ) ;
515+ }
0 commit comments