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