| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef HWSEC_TEST_UTILS_FAKE_PCA_AGENT_PCA_CERTIFY_V2_H_ |
| #define HWSEC_TEST_UTILS_FAKE_PCA_AGENT_PCA_CERTIFY_V2_H_ |
| |
| #include "hwsec-test-utils/fake_pca_agent/pca_base.h" |
| |
| #include <string> |
| |
| #include <attestation/proto_bindings/attestation_ca.pb.h> |
| |
| namespace hwsec_test_utils { |
| namespace fake_pca_agent { |
| |
| // Certification implementation for TPM2.0. |
| class PcaCertifyV2 |
| : public PcaBase<attestation::AttestationCertificateRequest, |
| attestation::AttestationCertificateResponse> { |
| public: |
| PcaCertifyV2() = delete; |
| // Expose base's constructor so we can initialize the request. |
| using PcaBase::PcaBase; |
| ~PcaCertifyV2() override = default; |
| |
| // Not copyable or movable. |
| PcaCertifyV2(const PcaCertifyV2&) = delete; |
| PcaCertifyV2& operator=(const PcaCertifyV2&) = delete; |
| PcaCertifyV2(PcaCertifyV2&&) = delete; |
| PcaCertifyV2& operator=(PcaCertifyV2&&) = delete; |
| |
| bool Preprocess() override; |
| bool Verify() override; |
| bool Generate() override; |
| bool Write(attestation::AttestationCertificateResponse* response) override; |
| |
| private: |
| crypto::ScopedEVP_PKEY identity_key_; |
| crypto::ScopedEVP_PKEY certified_key_; |
| std::string certified_key_name_; |
| base::Optional<std::string> issued_certificate_der_; |
| }; |
| |
| } // namespace fake_pca_agent |
| } // namespace hwsec_test_utils |
| |
| #endif // HWSEC_TEST_UTILS_FAKE_PCA_AGENT_PCA_CERTIFY_V2_H_ |