// Copyright 2021 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 LIBHWSEC_FOUNDATION_DA_RESET_DA_RESETTER_H_
#define LIBHWSEC_FOUNDATION_DA_RESET_DA_RESETTER_H_

#include <memory>

#include <metrics/metrics_library.h>
#include <tpm_manager/proto_bindings/tpm_manager.pb.h>

// This has to go after tpm_manager.pb.h.
#include <tpm_manager-client/tpm_manager/dbus-proxies.h>

#include "libhwsec-foundation/hwsec-foundation_export.h"

namespace hwsec_foundation {

// `DAResetter` resets the DA counter. The underlying implementation uses tpm
// manager D-Bus proxy.
class HWSEC_FOUNDATION_EXPORT DAResetter {
 public:
  DAResetter();
  explicit DAResetter(
      std::unique_ptr<org::chromium::TpmManagerProxyInterface> proxy);
  ~DAResetter() = default;

  // Not copyable or movable.
  DAResetter(const DAResetter&) = delete;
  DAResetter& operator=(const DAResetter&) = delete;
  DAResetter(DAResetter&&) = delete;
  DAResetter& operator=(DAResetter&&) = delete;

  // Resets the DA counter of the TPM; returns `false` if the operation fails.
  // Otherwise, returns `true`.
  bool ResetDictionaryAttackLock();

 private:
  std::unique_ptr<org::chromium::TpmManagerProxyInterface> proxy_;
};

}  // namespace hwsec_foundation

#endif  // LIBHWSEC_FOUNDATION_DA_RESET_DA_RESETTER_H_
