/* ** ** Copyright 2017, 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 "ConfirmationUI.h" #include "PlatformSpecifics.h" #include <android/hardware/confirmationui/support/cbor.h> #include <android/hardware/confirmationui/support/confirmationui_utils.h> #include <android/hardware/confirmationui/1.0/generic/GenericOperation.h> #include <time.h> namespace android { namespace hardware { namespace confirmationui { namespace V1_0 { namespace implementation { using ::android::hardware::confirmationui::V1_0::generic::Operation; using ::android::hardware::keymaster::V4_0::HardwareAuthToken; uint8_t hmacKey[32]; // Methods from ::android::hardware::confirmationui::V1_0::IConfirmationUI follow. Return<ResponseCode> ConfirmationUI::promptUserConfirmation( const sp<IConfirmationResultCallback>& resultCB, const hidl_string& promptText, const hidl_vec<uint8_t>& extraData, const hidl_string& locale, const hidl_vec<UIOption>& uiOptions) { auto& operation = MyOperation::get(); auto result = operation.init(resultCB, promptText, extraData, locale, uiOptions); if (result == ResponseCode::OK) { // This is where implementation start the UI and then call setPending on success. operation.setPending(); } return result; } Return<ResponseCode> ConfirmationUI::deliverSecureInputEvent( const HardwareAuthToken& secureInputToken) { auto& operation = MyOperation::get(); return operation.deliverSecureInputEvent(secureInputToken); } Return<void> ConfirmationUI::abort() { auto& operation = MyOperation::get(); operation.abort(); operation.finalize(hmacKey); return Void(); } } // namespace implementation } // namespace V1_0 } // namespace confirmationui } // namespace hardware } // namespace android