Skip to content

Commit 3858de6

Browse files
committed
test long validity period
1 parent 4e0db54 commit 3858de6

File tree

3 files changed

+40
-6
lines changed

3 files changed

+40
-6
lines changed

rustls-platform-verifier/src/tests/verification_mock/ca.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func doIt() error {
6969

7070
var err error = nil
7171

72-
root1_key, err := generateRoot("root1", now, "", true)
72+
root1_key, err := generateRoot("root1", now, "", true, 365)
7373
if err != nil {
7474
return err
7575
}
@@ -96,12 +96,17 @@ func doIt() error {
9696
}
9797
}
9898

99-
_, err = generateRoot("root2", now, "example.com", true)
99+
_, err = generateRoot("root2", now, "example.com", true, 365)
100100
if err != nil {
101101
return err
102102
}
103103

104-
_, err = generateRoot("root3", now, "example.com", false)
104+
_, err = generateRoot("root3", now, "example.com", false, 365)
105+
if err != nil {
106+
return err
107+
}
108+
109+
_, err = generateRoot("root4", now, "example.com", false, 400)
105110
if err != nil {
106111
return err
107112
}
@@ -220,7 +225,7 @@ func generateInt(intName string, serial int64, now time.Time, caKey crypto.Signe
220225
return intKey, nil
221226
}
222227

223-
func generateRoot(name string, now time.Time, commonName string, IsCA bool) (crypto.Signer, error) {
228+
func generateRoot(name string, now time.Time, commonName string, IsCA bool, validDays int64) (crypto.Signer, error) {
224229
caKey, err := generateKey()
225230
if err != nil {
226231
return nil, err
@@ -232,7 +237,7 @@ func generateRoot(name string, now time.Time, commonName string, IsCA bool) (cry
232237
Organization: []string{name},
233238
},
234239
NotBefore: now.Add(-OneDay),
235-
NotAfter: now.Add(OneYear),
240+
NotAfter: now.Add(time.Duration(validDays) * 24 * time.Hour),
236241
IsCA: IsCA,
237242
KeyUsage: x509.KeyUsageCertSign,
238243
BasicConstraintsValid: true,

rustls-platform-verifier/src/tests/verification_mock/mod.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ const ROOT2: CertificateDer = CertificateDer::from_slice(include_bytes!("root2.c
9595
#[cfg(not(target_os = "android"))]
9696
const ROOT3: CertificateDer = CertificateDer::from_slice(include_bytes!("root3.crt"));
9797

98+
#[cfg_attr(feature = "ffi-testing", allow(unused))]
99+
#[cfg(not(target_os = "android"))]
100+
const ROOT4: CertificateDer = CertificateDer::from_slice(include_bytes!("root4.crt"));
101+
98102
const EXAMPLE_COM: &str = "example.com";
99103
const LOCALHOST_IPV4: &str = "127.0.0.1";
100104
const LOCALHOST_IPV6: &str = "::1";
@@ -154,7 +158,12 @@ fn test_selfsigned_cert_with_extra_roots() {
154158

155159
let selfsigned = ROOT2;
156160
let selfsigned_as_leaf = ROOT3;
157-
let roots = vec![selfsigned.clone(), selfsigned_as_leaf.clone()];
161+
let selfsigned_as_leaf_long_validity = ROOT4;
162+
let roots = vec![
163+
selfsigned.clone(),
164+
selfsigned_as_leaf.clone(),
165+
selfsigned_as_leaf_long_validity.clone(),
166+
];
158167
let server_name = pki_types::ServerName::try_from(EXAMPLE_COM).unwrap();
159168

160169
let verifier = Verifier::new_with_extra_roots(roots, crypto_provider).unwrap();
@@ -193,6 +202,26 @@ fn test_selfsigned_cert_with_extra_roots() {
193202
result.is_err(),
194203
"self-signed leaf certificate is accepted unexpectly"
195204
);
205+
206+
let result = verifier.verify_server_cert(
207+
&selfsigned_as_leaf_long_validity,
208+
&[],
209+
&server_name,
210+
&[],
211+
verification_time(),
212+
);
213+
214+
#[cfg(target_vendor = "apple")]
215+
assert!(
216+
result.is_err(),
217+
"self-signed leaf certificate with long validity period is accepted unexpectly"
218+
);
219+
220+
#[cfg(not(target_vendor = "apple"))]
221+
assert!(
222+
result.is_ok(),
223+
"failed to validate self-signed leaf certificate with long validity period"
224+
);
196225
}
197226

198227
#[cfg(not(target_os = "android"))]
441 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)