blob: 8e5d5cc4a3901ad71806fbe0286bf353a063d9ea [file]
// Copyright 2026 Google LLC
//
// 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 THIRD_PARTY_CREDENTIO_VALIDATOR_VALIDATOR_OPTIONS_H_
#define THIRD_PARTY_CREDENTIO_VALIDATOR_VALIDATOR_OPTIONS_H_
#include <cstdint>
#include <memory>
#include <string>
#include "absl/base/nullability.h"
#include "absl/time/clock_interface.h"
#include "constants/spec_version.h"
#include "crypto/crypto_read_handler.h"
#include "validator/validator_metrics.h"
namespace credentio {
// Options controlling validator behavior.
struct ValidatorOptions {
// REQUIRED. Crypto read handler to use.
std::unique_ptr<CryptoReadHandler> absl_nonnull crypto_read_handler;
// Clock to use (e.g., for certificate validity checks).
absl::Clock* clock = &absl::Clock::GetRealClock();
// Maximum size of chunks read from input files.
//
// If the C2PA metadata (manifest store) is larger than this limit, validation
// will fail.
int64_t max_chunk_bytes = 10 * 1024 * 1024; // 10 MiB
// Enables the validator to process legacy manifests based on C2PA standards
// prior to version 2.1 (i.e. those with labels that do not begin with the
// prefix introduced in v2.1, `urn:c2pa`). This option bypasses the label
// check and the redaction of custom, deprecated, and gathered assertions;
// various pre-2.1 features are not supported. This option should only be used
// for testing.
// NOTE: This option is for testing only and cannot be used with
// CreateValidator.
bool accept_legacy_manifest_for_test = false;
// Whether to collect metrics.
ValidatorMetrics* absl_nullable metrics = nullptr;
// The C2PA specification version the product conforms to.
SpecVersion spec_version = SpecVersion::kUnspecified;
// URI reference (including version/timestamp) to the trust list used.
std::string trust_list_uri;
};
} // namespace credentio
#endif // THIRD_PARTY_CREDENTIO_VALIDATOR_VALIDATOR_OPTIONS_H_