// Copyright 2019 The Chromium Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef BSSL_PKI_REVOCATION_UTIL_H_
#define BSSL_PKI_REVOCATION_UTIL_H_

#include <cstdint>
#include <optional>

#include <openssl/base.h>

BSSL_NAMESPACE_BEGIN

namespace der {
struct GeneralizedTime;
}

// Returns true if a revocation status with `this_update` field and potentially
// a `next_update` field, is valid at POSIX time `verify_time_epoch_seconds` and
// not older than `max_age_seconds` seconds, if specified. Expressed
// differently, returns true if `this_update <= verify_time < next_update`, and
// `this_update >= verify_time - max_age`.
[[nodiscard]] OPENSSL_EXPORT bool CheckRevocationDateValid(
    const der::GeneralizedTime &this_update,
    const der::GeneralizedTime *next_update, int64_t verify_time_epoch_seconds,
    std::optional<int64_t> max_age_seconds);

BSSL_NAMESPACE_END

#endif  // BSSL_PKI_REVOCATION_UTIL_H_
