diff options
author | Michael Brown <mcb30@ipxe.org> | 2012-06-20 12:15:42 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2012-06-20 12:15:42 +0100 |
commit | 4010890a3940433927f34f71417719167ad58275 (patch) | |
tree | fbfaf3e01cb49b0cc2bd437fb417998ba6e98346 /src/crypto/x509.c | |
parent | c0942408b7ab30745952e801381e931b1b947e1f (diff) | |
download | ipxe-4010890a3940433927f34f71417719167ad58275.tar.gz |
[crypto] Allow an error margin on X.509 certificate validity periods
iPXE has no concept of the local time zone, mainly because there is no
viable way to obtain time zone information in the absence of local
state. This causes potential problems with newly-issued certificates
and certificates that are about to expire.
Avoid such problems by allowing an error margin of around 12 hours on
certificate validity periods, similar to the error margin already
allowed for OCSP response timestamps.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/crypto/x509.c')
-rw-r--r-- | src/crypto/x509.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/crypto/x509.c b/src/crypto/x509.c index 1a27eb24c..a99f6ab93 100644 --- a/src/crypto/x509.c +++ b/src/crypto/x509.c @@ -1264,12 +1264,12 @@ int x509_check_time ( struct x509_certificate *cert, time_t time ) { struct x509_validity *validity = &cert->validity; /* Check validity period */ - if ( time < validity->not_before.time ) { + if ( validity->not_before.time > ( time + X509_ERROR_MARGIN_TIME ) ) { DBGC ( cert, "X509 %p \"%s\" is not yet valid (at time %lld)\n", cert, cert->subject.name, time ); return -EACCES_EXPIRED; } - if ( time > validity->not_after.time ) { + if ( validity->not_after.time < ( time - X509_ERROR_MARGIN_TIME ) ) { DBGC ( cert, "X509 %p \"%s\" has expired (at time %lld)\n", cert, cert->subject.name, time ); return -EACCES_EXPIRED; |