#ifndef COMPONENTS_DEVICE_REAUTH_DEVICE_AUTHENTICATOR_H_
#define COMPONENTS_DEVICE_REAUTH_DEVICE_AUTHENTICATOR_H_
#include <string>
#include "base/functional/callback_forward.h"
#include "base/time/time.h"
#include "components/device_reauth/device_reauth_metrics_util.h"
namespace device_reauth {
class DeviceAuthParams {
public:
DeviceAuthParams(base::TimeDelta auth_validity_period,
device_reauth::DeviceAuthSource source,
std::string auth_result_histogram = std::string())
: auth_validity_period_(auth_validity_period),
source_(source),
auth_result_histogram_(auth_result_histogram) {}
base::TimeDelta GetAuthenticationValidityPeriod() const {
return auth_validity_period_;
}
device_reauth::DeviceAuthSource GetDeviceAuthSource() const {
return source_;
}
const std::string& GetAuthResultHistogram() const {
return auth_result_histogram_;
}
private:
base::TimeDelta auth_validity_period_;
device_reauth::DeviceAuthSource source_;
std::string auth_result_histogram_;
};
#if BUILDFLAG(IS_ANDROID)
enum class BiometricStatus {
kBiometricsAvailable,
kOnlyLskfAvailable,
kUnavailable,
};
#endif
class DeviceAuthenticator {
public:
using AuthenticateCallback = base::OnceCallback<void(bool)>;
DeviceAuthenticator();
DeviceAuthenticator(const DeviceAuthenticator&) = delete;
virtual ~DeviceAuthenticator() = default;
DeviceAuthenticator& operator=(const DeviceAuthenticator&) = delete;
virtual bool CanAuthenticateWithBiometrics() = 0;
virtual bool CanAuthenticateWithBiometricOrScreenLock() = 0;
virtual void AuthenticateWithMessage(const std::u16string& message,
AuthenticateCallback callback) = 0;
#if BUILDFLAG(IS_ANDROID)
virtual BiometricStatus GetBiometricAvailabilityStatus() = 0;
#endif
virtual void Cancel() = 0;
};
}
#endif