1cc290419Sopenharmony_ci/* 2cc290419Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd. 3cc290419Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4cc290419Sopenharmony_ci * you may not use this file except in compliance with the License. 5cc290419Sopenharmony_ci * You may obtain a copy of the License at 6cc290419Sopenharmony_ci * 7cc290419Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8cc290419Sopenharmony_ci * 9cc290419Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10cc290419Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11cc290419Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12cc290419Sopenharmony_ci * See the License for the specific language governing permissions and 13cc290419Sopenharmony_ci * limitations under the License. 14cc290419Sopenharmony_ci*/ 15cc290419Sopenharmony_ci 16cc290419Sopenharmony_ci#include "sudo_iam.h" 17cc290419Sopenharmony_ci#include "account_iam_client.h" 18cc290419Sopenharmony_ci#include "account_iam_info.h" 19cc290419Sopenharmony_ci#include "account_iam_client_callback.h" 20cc290419Sopenharmony_ci#include "i_inputer.h" 21cc290419Sopenharmony_ci 22cc290419Sopenharmony_cistd::condition_variable g_condVarForAuth; 23cc290419Sopenharmony_cibool g_authFinish; 24cc290419Sopenharmony_cistd::mutex g_mutexForAuth; 25cc290419Sopenharmony_ci 26cc290419Sopenharmony_cinamespace OHOS { 27cc290419Sopenharmony_cinamespace UserIam { 28cc290419Sopenharmony_cinamespace PinAuth { 29cc290419Sopenharmony_ci 30cc290419Sopenharmony_civoid SudoIInputer::OnGetData(int32_t authSubType, std::vector<uint8_t> challenge, 31cc290419Sopenharmony_ci std::shared_ptr<IInputerData> inputerData) 32cc290419Sopenharmony_ci{ 33cc290419Sopenharmony_ci inputerData->OnSetData(authSubType, passwd_); 34cc290419Sopenharmony_ci} 35cc290419Sopenharmony_ci 36cc290419Sopenharmony_civoid SudoIInputer::SetPasswd(char *pwd, int len) 37cc290419Sopenharmony_ci{ 38cc290419Sopenharmony_ci passwd_.resize(len); 39cc290419Sopenharmony_ci for (int i = 0; i < len; i++) { 40cc290419Sopenharmony_ci passwd_[i] = *pwd++; 41cc290419Sopenharmony_ci } 42cc290419Sopenharmony_ci} 43cc290419Sopenharmony_ci 44cc290419Sopenharmony_ciSudoIInputer::~SudoIInputer() 45cc290419Sopenharmony_ci{ 46cc290419Sopenharmony_ci for (int i = 0; i < (int)passwd_.size(); i++) { 47cc290419Sopenharmony_ci passwd_[i] = 0; 48cc290419Sopenharmony_ci } 49cc290419Sopenharmony_ci} 50cc290419Sopenharmony_ci 51cc290419Sopenharmony_ci} //PinAuth 52cc290419Sopenharmony_ci} //UserIam 53cc290419Sopenharmony_ci 54cc290419Sopenharmony_cinamespace AccountSA { 55cc290419Sopenharmony_ci 56cc290419Sopenharmony_ciSudoIDMCallback::SudoIDMCallback() 57cc290419Sopenharmony_ci{ 58cc290419Sopenharmony_ci verifyResult_ = false; 59cc290419Sopenharmony_ci} 60cc290419Sopenharmony_ci 61cc290419Sopenharmony_civoid SudoIDMCallback::OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) 62cc290419Sopenharmony_ci{ 63cc290419Sopenharmony_ci return; 64cc290419Sopenharmony_ci} 65cc290419Sopenharmony_ci 66cc290419Sopenharmony_civoid SudoIDMCallback::OnResult(int32_t result, const Attributes &extraInfo) 67cc290419Sopenharmony_ci{ 68cc290419Sopenharmony_ci verifyResult_ = false; 69cc290419Sopenharmony_ci if (result == 0) { 70cc290419Sopenharmony_ci verifyResult_ = true; 71cc290419Sopenharmony_ci } 72cc290419Sopenharmony_ci 73cc290419Sopenharmony_ci std::unique_lock<std::mutex> lock { g_mutexForAuth }; 74cc290419Sopenharmony_ci g_authFinish = true; 75cc290419Sopenharmony_ci g_condVarForAuth.notify_all(); 76cc290419Sopenharmony_ci} 77cc290419Sopenharmony_ci 78cc290419Sopenharmony_cibool SudoIDMCallback::GetVerifyResult(void) 79cc290419Sopenharmony_ci{ 80cc290419Sopenharmony_ci return verifyResult_; 81cc290419Sopenharmony_ci} 82cc290419Sopenharmony_ci 83cc290419Sopenharmony_ci} // AccountSA 84cc290419Sopenharmony_ci} //OHOS 85