// 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_TPM1_STRUCT_UTILS_H_
#define HWSEC_TEST_UTILS_FAKE_PCA_AGENT_TPM1_STRUCT_UTILS_H_

#if USE_TPM2
#error "This file is used for TPM1.2 only"
#endif

#include <string>

#include <base/optional.h>
#include <crypto/scoped_openssl_types.h>
#include <trousers/tss.h>

namespace hwsec_test_utils {
namespace fake_pca_agent {

// Parse |serialized_tpm_pubkey| into |TPM_PUBKEY| and return the public key in
// |crypto::ScopedEVP_PKEY|. If |public_key_digest|, it is set to the SHA-1
// digest of the public key.
crypto::ScopedEVP_PKEY TpmPublicKeyToEVP(
    const std::string& serialized_tpm_pubkey, std::string* public_key_digest);

// Builds the serialized TPM_PCR_COMPOSITE stream with |pcr_value| at
// |pcr_index|.
std::string ToPcrComposite(uint32_t pcr_index, const std::string& pcr_value);

// Serialize |contents| of |TPM_ASYM_CA_CONTENTS| type.
std::string Serialize(TPM_ASYM_CA_CONTENTS* contents);

// Serialize |contents| of |TPM_SYM_CA_ATTESTATION| type.
std::string Serialize(TPM_SYM_CA_ATTESTATION* contents);

// Parse |serialized| into |TPM_CERTIFY_INFO| and get the public key digest
// stored in it.
base::Optional<std::string> ParseDigestFromTpmCertifyInfo(
    const std::string& serialized);

}  // namespace fake_pca_agent
}  // namespace hwsec_test_utils

#endif  // HWSEC_TEST_UTILS_FAKE_PCA_AGENT_TPM1_STRUCT_UTILS_H_
