1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#include "se_impl.h" 17094332d3Sopenharmony_ci#include <hdf_base.h> 18094332d3Sopenharmony_ci#include <hdf_log.h> 19094332d3Sopenharmony_ci#include <vector> 20094332d3Sopenharmony_ci 21094332d3Sopenharmony_ci#define HDF_LOG_TAG hdf_se 22094332d3Sopenharmony_ci 23094332d3Sopenharmony_ci#ifdef LOG_DOMAIN 24094332d3Sopenharmony_ci#undef LOG_DOMAIN 25094332d3Sopenharmony_ci#endif 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ci#define LOG_DOMAIN 0xD000305 28094332d3Sopenharmony_ci 29094332d3Sopenharmony_cinamespace OHOS { 30094332d3Sopenharmony_cinamespace HDI { 31094332d3Sopenharmony_cinamespace SecureElement { 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ciextern "C" ISecureElementInterface *SecureElementInterfaceImplGetInstance(void) 34094332d3Sopenharmony_ci{ 35094332d3Sopenharmony_ci using OHOS::HDI::SecureElement::SeImpl; 36094332d3Sopenharmony_ci SeImpl* service = new (std::nothrow) SeImpl(); 37094332d3Sopenharmony_ci if (service == nullptr) { 38094332d3Sopenharmony_ci return nullptr; 39094332d3Sopenharmony_ci } 40094332d3Sopenharmony_ci return service; 41094332d3Sopenharmony_ci} 42094332d3Sopenharmony_ci 43094332d3Sopenharmony_ciint32_t SeImpl::init(const sptr<ISecureElementCallback>& clientCallback, SecureElementStatus& status) 44094332d3Sopenharmony_ci{ 45094332d3Sopenharmony_ci return adaptor_.init(clientCallback, status); 46094332d3Sopenharmony_ci} 47094332d3Sopenharmony_ci 48094332d3Sopenharmony_ciint32_t SeImpl::getAtr(std::vector<uint8_t>& response) 49094332d3Sopenharmony_ci{ 50094332d3Sopenharmony_ci return adaptor_.getAtr(response); 51094332d3Sopenharmony_ci} 52094332d3Sopenharmony_ci 53094332d3Sopenharmony_ciint32_t SeImpl::isSecureElementPresent(bool& present) 54094332d3Sopenharmony_ci{ 55094332d3Sopenharmony_ci return adaptor_.isSecureElementPresent(present); 56094332d3Sopenharmony_ci} 57094332d3Sopenharmony_ci 58094332d3Sopenharmony_ciint32_t SeImpl::openLogicalChannel(const std::vector<uint8_t>& aid, uint8_t p2, std::vector<uint8_t>& response, 59094332d3Sopenharmony_ci uint8_t& channelNumber, SecureElementStatus& status) 60094332d3Sopenharmony_ci{ 61094332d3Sopenharmony_ci return adaptor_.openLogicalChannel(aid, p2, response, channelNumber, status); 62094332d3Sopenharmony_ci} 63094332d3Sopenharmony_ci 64094332d3Sopenharmony_ciint32_t SeImpl::openBasicChannel(const std::vector<uint8_t>& aid, uint8_t p2, std::vector<uint8_t>& response, 65094332d3Sopenharmony_ci SecureElementStatus& status) 66094332d3Sopenharmony_ci{ 67094332d3Sopenharmony_ci return adaptor_.openBasicChannel(aid, p2, response, status); 68094332d3Sopenharmony_ci} 69094332d3Sopenharmony_ci 70094332d3Sopenharmony_ciint32_t SeImpl::closeChannel(uint8_t channelNumber, SecureElementStatus& status) 71094332d3Sopenharmony_ci{ 72094332d3Sopenharmony_ci return adaptor_.closeChannel(channelNumber, status); 73094332d3Sopenharmony_ci} 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_ciint32_t SeImpl::transmit(const std::vector<uint8_t>& command, std::vector<uint8_t>& response, 76094332d3Sopenharmony_ci SecureElementStatus& status) 77094332d3Sopenharmony_ci{ 78094332d3Sopenharmony_ci return adaptor_.transmit(command, response, status); 79094332d3Sopenharmony_ci} 80094332d3Sopenharmony_ci 81094332d3Sopenharmony_ciint32_t SeImpl::reset(SecureElementStatus& status) 82094332d3Sopenharmony_ci{ 83094332d3Sopenharmony_ci return adaptor_.reset(status); 84094332d3Sopenharmony_ci} 85094332d3Sopenharmony_ci} // SecureElement 86094332d3Sopenharmony_ci} // HDI 87094332d3Sopenharmony_ci} // OHOS 88