// 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 TRUNKS_TPM_CACHE_H_
#define TRUNKS_TPM_CACHE_H_

#include <base/macros.h>

#include "trunks/tpm_generated.h"
#include "trunks/trunks_export.h"

namespace trunks {

// TpmCache is an interface which provides access to TPM cache information.
class TRUNKS_EXPORT TpmCache {
 public:
  TpmCache() = default;
  TpmCache(const TpmCache&) = delete;
  TpmCache& operator=(const TpmCache&) = delete;

  virtual ~TpmCache() = default;

  // Stores the cached salting key public area in |public_area|. If the cache
  // doesn't exist, gets the public area from TPM and caches it. |public_area|
  // is untouched if there's an error.
  virtual TPM_RC GetSaltingKeyPublicArea(TPMT_PUBLIC* public_area) = 0;

  // Returns the best supported key type for SRK and salting key, and it can
  // only be TPM_ALG_ECC or TPM_ALG_RSA. ECC is preferred to RSA. If the cache
  // doesn't exist, gets the info from TPM and caches it. In case neither ECC
  // nor RSA is supported, or there is an error, returns TPM_ALG_ERROR.
  virtual TPM_ALG_ID GetBestSupportedKeyType() = 0;
};

}  // namespace trunks

#endif  // TRUNKS_TPM_CACHE_H_
