blob: 005872aaf651e754d770d1ceba4ee9fc837eb03d [file] [edit]
// 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_CRYPTO_DEFAULT_DEFAULT_CRYPTO_READ_HANDLER_H_
#define THIRD_PARTY_CREDENTIO_CRYPTO_DEFAULT_DEFAULT_CRYPTO_READ_HANDLER_H_
#include <memory>
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "crypto/crypto_read_handler.h"
namespace credentio {
struct DefaultCryptoReadHandlerOptions {
// The content of the PEM file containing claim signer trust anchors,
// trusted for claim signer certs containing the `c2pa-kp-claimSigning` EKU.
//
// At least one of `claim_signer_trust_anchors_pem` or
// `legacy_claim_signer_trust_anchors_pem` must be nonempty unless
// `skip_claim_signer_trust_checks_for_test` is true.
absl::string_view claim_signer_trust_anchors_pem;
// The content of the PEM file containing legacy claim signer trust anchors,
// trusted for claim signer certs containing any of the EKUs
// `id-kp-emailProtection`, `id-kp-documentSigning`, and
// `c2pa-kp-claimSigning`.
absl::string_view legacy_claim_signer_trust_anchors_pem;
// The content of the PEM file containing TSA trust anchors.
// Required unless `skip_tsa_trust_checks` is true.
absl::string_view tsa_trust_anchors_pem;
// Skips claim signer trust checks.
bool skip_claim_signer_trust_checks_for_test = false;
// Skips timestamp trust checks.
bool skip_tsa_trust_checks_for_test = false;
// The trust level of the handler.
CryptoReadHandler::TrustEnvironment trust_environment =
CryptoReadHandler::TrustEnvironment::kUnspecified;
};
// Creates an implementation of CryptoReadHandler intended for use in
// production. It uses Tink, BoringSSL, and SimpleCmsParser.
absl::StatusOr<std::unique_ptr<CryptoReadHandler>>
CreateDefaultCryptoReadHandler(const DefaultCryptoReadHandlerOptions& options);
} // namespace credentio
#endif // THIRD_PARTY_CREDENTIO_CRYPTO_DEFAULT_DEFAULT_CRYPTO_READ_HANDLER_H_