blob: 946cf4e296c6ffa511d669c323f47114dffd7cc5 [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.
//
// Utilities for testing crypto code.
#ifndef THIRD_PARTY_CREDENTIO_TESTING_CRYPTO_TESTING_H_
#define THIRD_PARTY_CREDENTIO_TESTING_CRYPTO_TESTING_H_
#include <cstddef>
#include <string>
#include "absl/time/time.h"
#include "openssl/base.h"
#include "openssl/x509.h"
namespace credentio {
struct TestCertificateOptions {
std::string subject_common_name;
std::string issuer_common_name;
absl::Time not_before = absl::FromUnixSeconds(1);
absl::Time not_after = absl::FromUnixSeconds(86400L * 365 * 100);
EVP_PKEY* signing_key = nullptr;
EVP_PKEY* private_key = nullptr;
};
// Generates an X.509 certificate based on `options`.
bssl::UniquePtr<X509> CreateTestCertificate(
const TestCertificateOptions& options);
bssl::UniquePtr<EVP_PKEY> CreateTestEcKey(int nid);
bssl::UniquePtr<EVP_PKEY> CreateTestRsaKey(size_t num_bits);
bssl::UniquePtr<EVP_PKEY> CreateTestEdKey();
} // namespace credentio
#endif // THIRD_PARTY_CREDENTIO_TESTING_CRYPTO_TESTING_H_