179a732c7Sopenharmony_ci/* 279a732c7Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 379a732c7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 479a732c7Sopenharmony_ci * you may not use this file except in compliance with the License. 579a732c7Sopenharmony_ci * You may obtain a copy of the License at 679a732c7Sopenharmony_ci * 779a732c7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 879a732c7Sopenharmony_ci * 979a732c7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1079a732c7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1179a732c7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1279a732c7Sopenharmony_ci * See the License for the specific language governing permissions and 1379a732c7Sopenharmony_ci * limitations under the License. 1479a732c7Sopenharmony_ci */ 1579a732c7Sopenharmony_ci 1679a732c7Sopenharmony_ci#include "pin_auth.h" 1779a732c7Sopenharmony_ci 1879a732c7Sopenharmony_ci#include <memory> 1979a732c7Sopenharmony_ci#include <string> 2079a732c7Sopenharmony_ci 2179a732c7Sopenharmony_ci#include "dm_anonymous.h" 2279a732c7Sopenharmony_ci#include "dm_constants.h" 2379a732c7Sopenharmony_ci#include "dm_log.h" 2479a732c7Sopenharmony_ci#include "nlohmann/json.hpp" 2579a732c7Sopenharmony_ci 2679a732c7Sopenharmony_cinamespace OHOS { 2779a732c7Sopenharmony_cinamespace DistributedHardware { 2879a732c7Sopenharmony_ciPinAuth::PinAuth() 2979a732c7Sopenharmony_ci{ 3079a732c7Sopenharmony_ci pinAuthUi_ = std::make_shared<PinAuthUi>(); 3179a732c7Sopenharmony_ci LOGI("PinAuth constructor"); 3279a732c7Sopenharmony_ci} 3379a732c7Sopenharmony_ci 3479a732c7Sopenharmony_ciPinAuth::~PinAuth() 3579a732c7Sopenharmony_ci{ 3679a732c7Sopenharmony_ci} 3779a732c7Sopenharmony_ci 3879a732c7Sopenharmony_ciint32_t PinAuth::ShowAuthInfo(std::string &authToken, std::shared_ptr<DmAuthManager> authManager) 3979a732c7Sopenharmony_ci{ 4079a732c7Sopenharmony_ci nlohmann::json jsonObject = nlohmann::json::parse(authToken, nullptr, false); 4179a732c7Sopenharmony_ci if (jsonObject.is_discarded()) { 4279a732c7Sopenharmony_ci LOGE("DecodeRequestAuth jsonStr error"); 4379a732c7Sopenharmony_ci return ERR_DM_FAILED; 4479a732c7Sopenharmony_ci } 4579a732c7Sopenharmony_ci if (!IsInt32(jsonObject, PIN_CODE_KEY)) { 4679a732c7Sopenharmony_ci LOGE("err json string, first time"); 4779a732c7Sopenharmony_ci return ERR_DM_FAILED; 4879a732c7Sopenharmony_ci } 4979a732c7Sopenharmony_ci return pinAuthUi_->ShowPinDialog(jsonObject[PIN_CODE_KEY].get<int32_t>(), authManager); 5079a732c7Sopenharmony_ci} 5179a732c7Sopenharmony_ci 5279a732c7Sopenharmony_ciint32_t PinAuth::StartAuth(std::string &authToken, std::shared_ptr<DmAuthManager> authManager) 5379a732c7Sopenharmony_ci{ 5479a732c7Sopenharmony_ci return pinAuthUi_->InputPinDialog(authManager); 5579a732c7Sopenharmony_ci} 5679a732c7Sopenharmony_ci 5779a732c7Sopenharmony_ciextern "C" IAuthentication *CreatePinAuthObject(void) 5879a732c7Sopenharmony_ci{ 5979a732c7Sopenharmony_ci return new PinAuth; 6079a732c7Sopenharmony_ci} 6179a732c7Sopenharmony_ci} // namespace DistributedHardware 6279a732c7Sopenharmony_ci} // namespace OHOS 63