| // 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 |