Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9a3c850 authored by Ilya Matyukhin's avatar Ilya Matyukhin
Browse files

Default implementation for IFingerprint

Bug: 152416783
Test: atest VtsHalBiometricsFingerprintTargetTest
Test: atest vts_treble_vintf_vendor_test
Test: atest hal_implementation_test
Change-Id: I67efda2d5418147a7cac9cc54920005a199fcbe3
parent 14412df8
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
cc_binary {
    name: "android.hardware.biometrics.fingerprint-service.example",
    relative_install_path: "hw",
    init_rc: ["fingerprint-default.rc"],
    vintf_fragments: ["fingerprint-default.xml"],
    vendor: true,
    shared_libs: [
        "libbase",
        "libbinder_ndk",
        "android.hardware.biometrics.fingerprint-ndk_platform",
    ],
    srcs: [
        "main.cpp",
        "Fingerprint.cpp",
        "Session.cpp",
    ],
}
+50 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "Fingerprint.h"
#include "Session.h"

namespace aidl::android::hardware::biometrics::fingerprint {

ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* /*return_val*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Fingerprint::createSession(int32_t /*sensorId*/, int32_t /*userId*/,
                                              const std::shared_ptr<ISessionCallback>& cb,
                                              std::shared_ptr<ISession>* return_val) {
    *return_val = SharedRefBase::make<Session>(cb);
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Fingerprint::setResetLockoutCallback(
        const std::shared_ptr<IResetLockoutCallback>& /*cb*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Fingerprint::generateChallenge(
        int32_t /*sensorId*/, int32_t /*userId*/, int64_t /*keystoreOperationId*/,
        int32_t /*timeoutSec*/, const std::shared_ptr<IGenerateChallengeCallback>& /*cb*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Fingerprint::revokeChallenge(
        int32_t /*sensorId*/, int32_t /*userId*/,
        const std::shared_ptr<IRevokeChallengeCallback>& /*cb*/) {
    return ndk::ScopedAStatus::ok();
}

}  // namespace aidl::android::hardware::biometrics::fingerprint
+43 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <aidl/android/hardware/biometrics/fingerprint/BnFingerprint.h>

namespace aidl::android::hardware::biometrics::fingerprint {

class Fingerprint : public BnFingerprint {
  public:
    ndk::ScopedAStatus getSensorProps(std::vector<SensorProps>* _aidl_return) override;

    ndk::ScopedAStatus createSession(int32_t sensorId, int32_t userId,
                                     const std::shared_ptr<ISessionCallback>& cb,
                                     std::shared_ptr<ISession>* _aidl_return) override;

    ndk::ScopedAStatus setResetLockoutCallback(
            const std::shared_ptr<IResetLockoutCallback>& cb) override;

    ndk::ScopedAStatus generateChallenge(
            int32_t sensorId, int32_t userId, int64_t keystoreOperationId, int32_t timeoutSec,
            const std::shared_ptr<IGenerateChallengeCallback>& cb) override;

    ndk::ScopedAStatus revokeChallenge(
            int32_t sensorId, int32_t userId,
            const std::shared_ptr<IRevokeChallengeCallback>& cb) override;
};

}  // namespace aidl::android::hardware::biometrics::fingerprint
+80 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <aidl/android/hardware/biometrics/fingerprint/BnCancellationSignal.h>

#include "Session.h"

namespace aidl::android::hardware::biometrics::fingerprint {

class CancellationSignal : public BnCancellationSignal {
  public:
    ndk::ScopedAStatus cancel() override { return ndk::ScopedAStatus::ok(); }
};

Session::Session(std::shared_ptr<ISessionCallback> cb) : cb_(std::move(cb)) {}

ndk::ScopedAStatus Session::enroll(int32_t /*cookie*/, const keymaster::HardwareAuthToken& /*hat*/,
                                   std::shared_ptr<ICancellationSignal>* /*return_val*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::authenticate(int32_t /*cookie*/, int64_t /*keystoreOperationId*/,
                                         std::shared_ptr<ICancellationSignal>* return_val) {
    if (cb_) {
        cb_->onStateChanged(0, SessionState::AUTHENTICATING);
    }
    *return_val = SharedRefBase::make<CancellationSignal>();
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::detectInteraction(
        int32_t /*cookie*/, std::shared_ptr<ICancellationSignal>* /*return_val*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::enumerateEnrollments(int32_t /*cookie*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::removeEnrollments(int32_t /*cookie*/,
                                              const std::vector<int32_t>& /*enrollmentIds*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::getAuthenticatorId(int32_t /*cookie*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::resetLockout(int32_t /*cookie*/,
                                         const keymaster::HardwareAuthToken& /*hat*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::onPointerDown(int32_t /*pointerId*/, int32_t /*x*/, int32_t /*y*/,
                                          float /*minor*/, float /*major*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::onPointerUp(int32_t /*pointerId*/) {
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus Session::onUiReady() {
    return ndk::ScopedAStatus::ok();
}

}  // namespace aidl::android::hardware::biometrics::fingerprint
+60 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <aidl/android/hardware/biometrics/fingerprint/BnSession.h>
#include <aidl/android/hardware/biometrics/fingerprint/ISessionCallback.h>

namespace aidl::android::hardware::biometrics::fingerprint {

namespace aidl::android::hardware::keymaster = keymaster;

class Session : public BnSession {
  public:
    explicit Session(std::shared_ptr<ISessionCallback> cb);

    ndk::ScopedAStatus enroll(int32_t cookie, const keymaster::HardwareAuthToken& hat,
                              std::shared_ptr<ICancellationSignal>* return_val) override;

    ndk::ScopedAStatus authenticate(int32_t cookie, int64_t keystoreOperationId,
                                    std::shared_ptr<ICancellationSignal>* return_val) override;

    ndk::ScopedAStatus detectInteraction(int32_t cookie,
                                         std::shared_ptr<ICancellationSignal>* return_val) override;

    ndk::ScopedAStatus enumerateEnrollments(int32_t cookie) override;

    ndk::ScopedAStatus removeEnrollments(int32_t cookie,
                                         const std::vector<int32_t>& enrollmentIds) override;

    ndk::ScopedAStatus getAuthenticatorId(int32_t cookie) override;

    ndk::ScopedAStatus resetLockout(int32_t cookie,
                                    const keymaster::HardwareAuthToken& hat) override;

    ndk::ScopedAStatus onPointerDown(int32_t pointerId, int32_t x, int32_t y, float minor,
                                     float major) override;

    ndk::ScopedAStatus onPointerUp(int32_t pointerId) override;

    ndk::ScopedAStatus onUiReady() override;

  private:
    std::shared_ptr<ISessionCallback> cb_;
};

}  // namespace aidl::android::hardware::biometrics::fingerprint
Loading