// 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_KDF_H_
#define HWSEC_TEST_UTILS_FAKE_PCA_AGENT_KDF_H_

#include <string>

#include <base/optional.h>

namespace hwsec_test_utils {
namespace fake_pca_agent {

// TPM2.0 spec part 1, 11.4.10.3. The bit length is hardcoded to 256 and the
// digest algorithm to SHA-256 considering the limited use-cases in practice.
std::string KDFe(const std::string& z,
                 const std::string& use,
                 const std::string& party_u_info,
                 const std::string& party_v_info);

// TPM2.0 spec part 1, 11.4.10.2. The bit length of 128 and 256 are supported
// and the digest algorithm is hardcoded to SHA-256 considering the limited
// use-cases in practice.
base::Optional<std::string> KDFa(const std::string& key,
                                 const std::string& label,
                                 const std::string& context_u,
                                 const std::string& context_v,
                                 int bits);

}  // namespace fake_pca_agent
}  // namespace hwsec_test_utils

#endif  // HWSEC_TEST_UTILS_FAKE_PCA_AGENT_KDF_H_
