blob: 786ec8697ac172309aaeb3706673e5496c0ed6ad [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/cert/internal/revocation_util.h"
#include "base/time/time.h"
#include "net/der/encode_values.h"
#include "net/der/parse_values.h"
namespace net {
bool CheckRevocationDateValid(const der::GeneralizedTime& this_update,
const der::GeneralizedTime* next_update,
const base::Time& verify_time,
const base::TimeDelta& max_age) {
der::GeneralizedTime verify_time_der;
if (!der::EncodeTimeAsGeneralizedTime(verify_time, &verify_time_der))
return false;
if (this_update > verify_time_der)
return false; // Response is not yet valid.
if (next_update && (*next_update <= verify_time_der))
return false; // Response is no longer valid.
der::GeneralizedTime earliest_this_update;
if (!der::EncodeTimeAsGeneralizedTime(verify_time - max_age,
&earliest_this_update)) {
return false;
}
if (this_update < earliest_this_update)
return false; // Response is too old.
return true;
}
} // namespace net