From cfb5499a45df3ce206e7c652822acc8e32ec45cb Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 17 Nov 2020 13:06:23 -0800 Subject: [PATCH] Update default face implementation Note that we're configuring this default HAL as "STRONG" so that the framework can eventually test multi-sensor authenticatorId invalidation Bug: 173453845 Test: atest CtsBiometricsTestCases Change-Id: Idd7b74f0a22c5078dc5c2b0b99f62fdc4b51e25d --- biometrics/face/aidl/default/Face.cpp | 2 +- biometrics/face/aidl/default/Session.cpp | 44 ++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/biometrics/face/aidl/default/Face.cpp b/biometrics/face/aidl/default/Face.cpp index 929c7e7703..d3883d64c9 100644 --- a/biometrics/face/aidl/default/Face.cpp +++ b/biometrics/face/aidl/default/Face.cpp @@ -20,7 +20,7 @@ namespace aidl::android::hardware::biometrics::face { const int kSensorId = 0; -const common::SensorStrength kSensorStrength = common::SensorStrength::WEAK; +const common::SensorStrength kSensorStrength = common::SensorStrength::STRONG; const int kMaxEnrollmentsPerUser = 5; const FaceSensorType kSensorType = FaceSensorType::RGB; const bool kHalControlsPreview = true; diff --git a/biometrics/face/aidl/default/Session.cpp b/biometrics/face/aidl/default/Session.cpp index 2b1d4a7637..c5d7d23ecb 100644 --- a/biometrics/face/aidl/default/Session.cpp +++ b/biometrics/face/aidl/default/Session.cpp @@ -21,17 +21,35 @@ namespace aidl::android::hardware::biometrics::face { class CancellationSignal : public common::BnCancellationSignal { + private: + std::shared_ptr cb_; public: - ndk::ScopedAStatus cancel() override { return ndk::ScopedAStatus::ok(); } + explicit CancellationSignal(std::shared_ptr cb) : cb_(std::move(cb)) {} + + ndk::ScopedAStatus cancel() override { + cb_->onError(Error::CANCELED, 0 /* vendorCode */); + cb_->onStateChanged(0, SessionState::IDLING); + return ndk::ScopedAStatus::ok(); + } }; Session::Session(std::shared_ptr cb) : cb_(std::move(cb)) {} ndk::ScopedAStatus Session::generateChallenge(int32_t /*cookie*/, int32_t /*timeoutSec*/) { + if (cb_) { + cb_->onStateChanged(0, SessionState::GENERATING_CHALLENGE); + cb_->onChallengeGenerated(0); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } -ndk::ScopedAStatus Session::revokeChallenge(int32_t /*cookie*/, int64_t /*challenge*/) { +ndk::ScopedAStatus Session::revokeChallenge(int32_t /*cookie*/, int64_t challenge) { + if (cb_) { + cb_->onStateChanged(0, SessionState::REVOKING_CHALLENGE); + cb_->onChallengeRevoked(challenge); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } @@ -47,7 +65,7 @@ ndk::ScopedAStatus Session::authenticate(int32_t /*cookie*/, int64_t /*keystoreO if (cb_) { cb_->onStateChanged(0, SessionState::AUTHENTICATING); } - *return_val = SharedRefBase::make(); + *return_val = SharedRefBase::make(cb_); return ndk::ScopedAStatus::ok(); } @@ -57,15 +75,30 @@ ndk::ScopedAStatus Session::detectInteraction( } ndk::ScopedAStatus Session::enumerateEnrollments(int32_t /*cookie*/) { + if (cb_) { + cb_->onStateChanged(0, SessionState::ENUMERATING_ENROLLMENTS); + cb_->onEnrollmentsEnumerated(std::vector()); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } ndk::ScopedAStatus Session::removeEnrollments(int32_t /*cookie*/, const std::vector& /*enrollmentIds*/) { + if (cb_) { + cb_->onStateChanged(0, SessionState::REMOVING_ENROLLMENTS); + cb_->onEnrollmentsRemoved(std::vector()); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } ndk::ScopedAStatus Session::getAuthenticatorId(int32_t /*cookie*/) { + if (cb_) { + cb_->onStateChanged(0, SessionState::GETTING_AUTHENTICATOR_ID); + cb_->onAuthenticatorIdRetrieved(0 /* authenticatorId */); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } @@ -75,6 +108,11 @@ ndk::ScopedAStatus Session::invalidateAuthenticatorId(int32_t /*cookie*/) { ndk::ScopedAStatus Session::resetLockout(int32_t /*cookie*/, const keymaster::HardwareAuthToken& /*hat*/) { + if (cb_) { + cb_->onStateChanged(0, SessionState::RESETTING_LOCKOUT); + cb_->onLockoutCleared(); + cb_->onStateChanged(0, SessionState::IDLING); + } return ndk::ScopedAStatus::ok(); } } // namespace aidl::android::hardware::biometrics::face