[SecureElement] Adjusted to new native api - part 1. 26/84826/1
authorTomasz Marciniak <t.marciniak@samsung.com>
Thu, 18 Aug 2016 08:49:14 +0000 (10:49 +0200)
committerTomasz Marciniak <t.marciniak@samsung.com>
Mon, 22 Aug 2016 12:54:35 +0000 (14:54 +0200)
[Verification] Code compiles.

Change-Id: Ic598a7a54d38fbf77ff38ab206c5e47aaf033541
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
13 files changed:
packaging/webapi-plugins.spec
src/secureelement/secureelement.gyp
src/secureelement/secureelement_api.js
src/secureelement/secureelement_channel.cc [deleted file]
src/secureelement/secureelement_channel.h [deleted file]
src/secureelement/secureelement_instance.cc
src/secureelement/secureelement_instance.h
src/secureelement/secureelement_reader.cc [deleted file]
src/secureelement/secureelement_reader.h [deleted file]
src/secureelement/secureelement_seservice.cc [deleted file]
src/secureelement/secureelement_seservice.h [deleted file]
src/secureelement/secureelement_session.cc [deleted file]
src/secureelement/secureelement_session.h [deleted file]

index 128205ac2f7f8caa5bd8725fff7f526b152e8ec2..8b9c4ff5033f5856245466dd144f5e1426629df1 100644 (file)
@@ -477,8 +477,7 @@ BuildRequires: pkgconfig(feedback)
 %endif
 
 %if 0%{?tizen_feature_se_support}
-BuildRequires:  pkgconfig(smartcard-service)
-BuildRequires:  pkgconfig(smartcard-service-common)
+BuildRequires:  pkgconfig(capi-network-smartcard)
 %endif
 
 %if 0%{?tizen_feature_message_port_support}
index a302c6a30c990f1fa79704fdc7bad2fe791a2054..9c9bf00596ff19a95e4abaf4eac563cc74190ac0 100644 (file)
         'secureelement_extension.h',
         'secureelement_instance.cc',
         'secureelement_instance.h',
-        'secureelement_seservice.cc',
-        'secureelement_seservice.h',
-        'secureelement_reader.cc',
-        'secureelement_reader.h',
-        'secureelement_session.cc',
-        'secureelement_session.h',
-        'secureelement_channel.cc',
-        'secureelement_channel.h',
       ],
       'includes': [
         '../common/pkg-config.gypi',
       ],
       'conditions': [
         [ 'tizen == 1', {
-            'variables': { 'packages': ['smartcard-service', 'smartcard-service-common'] },
+            'variables': { 'packages': ['capi-network-smartcard'] },
         }],
       ],
     },
index ccbcde282a7342a99712ffe9bd46d3ad5f0caa80..9a55298a910a24db906a0eadd406a43f9e178b6a 100644 (file)
@@ -184,7 +184,7 @@ function Reader(reader_handle) {
                               console.log('SEReader_isPresent error: ' + native_.getErrorObject(result));
                               return false;
                             } else {
-                              return native_.getResultObject(result).isPresent;
+                              return native_.getResultObject(result);
                             }
                         }},
         _handle:    {   configurable: false,
@@ -202,7 +202,7 @@ Reader.prototype.getName = function() {
         throw native_.getErrorObject(result);
     }
 
-    return native_.getResultObject(result).name;
+    return native_.getResultObject(result);
 };
 
 Reader.prototype.openSession = function() {
diff --git a/src/secureelement/secureelement_channel.cc b/src/secureelement/secureelement_channel.cc
deleted file mode 100644 (file)
index e7355d3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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 "common/picojson.h"
-#include "common/logger.h"
-#include "secureelement_channel.h"
-
-using namespace smartcard_service_api;
-
-namespace extension {
-namespace secureelement {
-
-void SEChannel::close() {
-    LoggerD("Entered");
-    if (m_channel_ptr && !m_channel_ptr->isClosed()) {
-        m_channel_ptr->closeSync();
-    }
-}
-
-
-ByteArray SEChannel::transmit(const picojson::array& v_command) {
-    LoggerD("Entered");
-    ByteArray response;
-    if ( m_channel_ptr) {
-        size_t v_command_size = v_command.size();
-        uint8_t* command = new uint8_t[v_command_size];
-        for (size_t i = 0; i < v_command_size; i++) {
-            command[i] = (uint8_t) static_cast<long>(v_command[i].get<double>());
-        }
-        ByteArray ba_command(command, v_command.size());
-        delete [] command;
-        m_channel_ptr->transmitSync( ba_command, response);
-    }
-    return response;
-}
-
-
-ByteArray SEChannel::getSelectResponse() {
-    LoggerD("Entered");
-    ByteArray response;
-    if ( m_channel_ptr) {
-        response = m_channel_ptr->getSelectResponse();
-    }
-    return response;
-}
-
-} // secureelement
-} // extension
diff --git a/src/secureelement/secureelement_channel.h b/src/secureelement/secureelement_channel.h
deleted file mode 100644 (file)
index 4d62643..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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.
- */
-
-#ifndef SECUREELEMENT_CHANNEL_H_
-#define SECUREELEMENT_CHANNEL_H_
-
-#include <ClientChannel.h>
-#include "common/picojson.h"
-
-namespace extension {
-namespace secureelement {
-
-class SEChannel {
-public:
-    SEChannel( smartcard_service_api::ClientChannel* channel_ptr) : m_channel_ptr(channel_ptr) {};
-    virtual ~SEChannel() {};
-    void close();
-    smartcard_service_api::ByteArray transmit(const picojson::array& v_command);
-    smartcard_service_api::ByteArray getSelectResponse();
-private:
-    smartcard_service_api::ClientChannel* m_channel_ptr;
-};
-
-} // secureelement
-} // extension
-
-#endif // SECUREELEMENT_CHANNEL_H_
index 3b78716124698dfd8e8f295f1afa8a5bee90e879..75063a781fd0cdba4b38c6849d6919d077ab3d85 100644 (file)
 
 #include "secureelement/secureelement_instance.h"
 
-#include <SEService.h>
-#include <Reader.h>
-#include "common/picojson.h"
-#include "common/logger.h"
-#include "common/task-queue.h"
-#include "common/tools.h"
+#include <thread>
+#include <smartcard.h>
 
-#include "secureelement_reader.h"
-#include "secureelement_session.h"
-#include "secureelement_channel.h"
+#include "common/tools.h"
+#include "common/scope_exit.h"
 
 namespace extension {
 namespace secureelement {
 
-using namespace common;
-using namespace smartcard_service_api;
+using common::TizenResult;
+using common::TizenSuccess;
 
 namespace {
 const std::string kPrivilegeSecureElement = "http://tizen.org/privilege/secureelement";
+
+const std::string kHandle = "handle";
+
+TizenResult ConvertErrorCode(int error) {
+  switch (error) {
+    case SMARTCARD_ERROR_NONE:
+      return TizenSuccess();
+    case SMARTCARD_ERROR_INVALID_PARAMETER:
+      return common::InvalidValuesError(error);
+    case SMARTCARD_ERROR_IO_ERROR:
+      return common::IoError(error);
+    case SMARTCARD_ERROR_ILLEGAL_STATE:
+    case SMARTCARD_ERROR_CHANNEL_NOT_AVAILABLE:
+      return common::InvalidStateError(error);
+    case SMARTCARD_ERROR_NO_SUCH_ELEMENT:
+      return common::NotFoundError(error);
+    case SMARTCARD_ERROR_GENERAL:
+    case SMARTCARD_ERROR_ILLEGAL_REFERENCE:
+    case SMARTCARD_ERROR_OPERATION_NOT_SUPPORTED:
+    case SMARTCARD_ERROR_PERMISSION_DENIED:
+    case SMARTCARD_ERROR_NOT_INITIALIZED:
+    case SMARTCARD_ERROR_NOT_SUPPORTED:
+    default:
+      return common::UnknownError(error);
+  }
 }
 
-SecureElementInstance::SecureElementInstance()
-    : service_(*this) {
-    LoggerD("Entered");
+} //namespace
+
+SecureElementInstance::SecureElementInstance() :
+  is_initialized_(false) {
+  ScopeLogger();
 
-    using std::placeholders::_1;
-    using std::placeholders::_2;
+  using std::placeholders::_1;
+  using std::placeholders::_2;
 
 #define REGISTER_SYNC(c,x) \
-    RegisterSyncHandler(c, std::bind(&SecureElementInstance::x, this, _1, _2));
-
-    REGISTER_SYNC("SEService_registerSEListener", RegisterSEListener);
-    REGISTER_SYNC("SEService_unregisterSEListener", UnregisterSEListener);
-    REGISTER_SYNC("SEService_shutdown", Shutdown);
-    REGISTER_SYNC("SEReader_getName", GetName);
-    REGISTER_SYNC("SEReader_isPresent", IsPresent);
-    REGISTER_SYNC("SEReader_closeSessions", CloseSessions);
-    REGISTER_SYNC("SESession_getATR", GetATR);
-    REGISTER_SYNC("SESession_isClosed", IsSessionClosed);
-    REGISTER_SYNC("SESession_close", CloseSession);
-    REGISTER_SYNC("SESession_closeChannels", CloseChannels);
-    REGISTER_SYNC("SEChannel_close", CloseChannel);
-    REGISTER_SYNC("SEChannel_getSelectResponse", GetSelectResponse);
+  RegisterSyncHandler(c, std::bind(&SecureElementInstance::x, this, _1));
+
+  REGISTER_SYNC("SEService_registerSEListener", RegisterSEListener);
+  REGISTER_SYNC("SEService_unregisterSEListener", UnregisterSEListener);
+  REGISTER_SYNC("SEService_shutdown", Shutdown);
+  REGISTER_SYNC("SEReader_getName", GetName);
+  REGISTER_SYNC("SEReader_isPresent", IsPresent);
+  REGISTER_SYNC("SEReader_closeSessions", CloseSessions);
+  REGISTER_SYNC("SESession_getATR", GetATR);
+  REGISTER_SYNC("SESession_isClosed", IsSessionClosed);
+  REGISTER_SYNC("SESession_close", CloseSession);
+  REGISTER_SYNC("SESession_closeChannels", CloseChannels);
+  REGISTER_SYNC("SEChannel_close", CloseChannel);
+  REGISTER_SYNC("SEChannel_getSelectResponse", GetSelectResponse);
 #undef REGISTER_SYNC
 
 #define REGISTER(c,x) \
-    RegisterSyncHandler(c, std::bind(&SecureElementInstance::x, this, _1, _2));
+  RegisterHandler(c, std::bind(&SecureElementInstance::x, this, _1, _2));
 
-    REGISTER("SEService_getReaders", GetReaders);
-    REGISTER("SEReader_openSession", OpenSession);
-    REGISTER("SESession_openBasicChannel", OpenBasicChannel);
-    REGISTER("SESession_openLogicalChannel", OpenLogicalChannel);
-    REGISTER("SEChannel_transmit", Transmit);
+  REGISTER("SEService_getReaders", GetReaders);
+  REGISTER("SEReader_openSession", OpenSession);
+  REGISTER("SESession_openBasicChannel", OpenBasicChannel);
+  REGISTER("SESession_openLogicalChannel", OpenLogicalChannel);
+  REGISTER("SEChannel_transmit", Transmit);
 #undef REGISTER
+
+  if (SMARTCARD_ERROR_NONE == smartcard_initialize()) {
+    is_initialized_ = true;
+  }
 }
 
 SecureElementInstance::~SecureElementInstance() {
+  ScopeLogger();
+
+  if (is_initialized_) {
+    if (SMARTCARD_ERROR_NONE != smartcard_deinitialize()) {
+      LoggerE("Failed to deinitilize smartcard service");
+    }
+    is_initialized_ = false;
+  }
 }
 
-void SecureElementInstance::GetReaders(const picojson::value& args, picojson::object& out) {
-  LoggerD("Entered");
+// Service methods
+TizenResult SecureElementInstance::GetReaders(picojson::object const& args, const common::AsyncToken& token) {
+  ScopeLogger();
 
-  CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-  double callback_id = 0.0;
-  if (args.contains("callbackId")) {
-    callback_id = args.get("callbackId").get<double>();
-  }
+  auto get_readers = [this](const common::AsyncToken& token) -> void {
+    TizenResult result = TizenSuccess();
 
-  service_.GetReaders(callback_id);
-  ReportSuccess(out);
-}
+    int* readers = nullptr;
+    int count = 0;
 
-void SecureElementInstance::RegisterSEListener(const picojson::value& args, picojson::object& out) {
-  LoggerD("Entered");
+    int ret = smartcard_get_readers(&readers, &count);
+    SCOPE_EXIT {
+      free(readers);
+    };
 
-  CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+    if (SMARTCARD_ERROR_NONE != ret) {
+      LoggerE("smartcard_get_readers() failed");
+      result = ConvertErrorCode(ret);
+    } else {
+      picojson::value response{picojson::array{}};
+      auto& array = response.get<picojson::array>();
+      bool is_present = false;
+
+      for (int i = 0; i < count; i++) {
+        ret = smartcard_reader_is_secure_element_present(readers[i], &is_present);
+        if (SMARTCARD_ERROR_NONE == ret && is_present) {
+            array.push_back(picojson::value(static_cast<double>(readers[i])));
+        }
+      }
 
-  service_.RegisterSEListener();
-  ReportSuccess(out);
-}
+      result = TizenSuccess(response);
+    }
 
-void SecureElementInstance::UnregisterSEListener(
-    const picojson::value& args, picojson::object& out) {
-  LoggerD("Entered");
+    this->Post(token, result);
+  };
 
-  CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  std::thread(get_readers, token).detach();
 
-  service_.UnregisterSEListener();
-  ReportSuccess(out);
+  return TizenSuccess();
 }
 
-void SecureElementInstance::Shutdown(const picojson::value& args, picojson::object& out) {
-  LoggerD("Entered");
+TizenResult SecureElementInstance::RegisterSEListener(picojson::object const& args) {
+  ScopeLogger();
 
-  CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-  service_.Shutdown();
-  ReportSuccess(out);
+  return common::NotSupportedError();
 }
 
-void SecureElementInstance::GetName(
-        const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
+TizenResult SecureElementInstance::UnregisterSEListener(picojson::object const& args) {
+  ScopeLogger();
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    Reader* reader_ptr = (Reader*) static_cast<long>(args.get("handle").get<double>());
-    SEReader seReader(reader_ptr);
-    picojson::value result = seReader.getName();
-    ReportSuccess(result, out);
+  return common::NotSupportedError();
 }
 
-void SecureElementInstance::IsPresent(
-        const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
+TizenResult SecureElementInstance::Shutdown(picojson::object const& args) {
+  ScopeLogger();
+
+  if (is_initialized_) {
+    int ret = smartcard_deinitialize();
+    if (SMARTCARD_ERROR_NONE != ret) {
+      LogAndReturnTizenError(ConvertErrorCode(ret), ("smartcard_deinitialize() failed"));
+    }
 
-    Reader* reader_ptr = (Reader*) static_cast<long>(args.get("handle").get<double>());
-    SEReader seReader(reader_ptr);
-    picojson::value result = seReader.isPresent();
-    ReportSuccess(result, out);
+    is_initialized_ = false;
+  }
+
+  return TizenSuccess();
 }
 
-void SecureElementInstance::CloseSessions(
-        const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
+// Reader methods
+TizenResult SecureElementInstance::GetName(picojson::object const& args) {
+  ScopeLogger();
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    Reader* reader_ptr = (Reader*) static_cast<long>(args.get("handle").get<double>());
-    SEReader seReader(reader_ptr);
-    seReader.closeSessions();
-    ReportSuccess(out);
-}
+  int reader = static_cast<int>(args.find(kHandle)->second.get<double>());
+  char* name = nullptr;
 
-void SecureElementInstance::CloseChannel( const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  int ret = smartcard_reader_get_name(reader, &name);
+  SCOPE_EXIT {
+    free(name);
+  };
 
-    ClientChannel* channel_ptr = (ClientChannel*) static_cast<long>(args.get("handle").get<double>());
-    SEChannel seChannel(channel_ptr);
-    seChannel.close();
-    ReportSuccess(out);
-}
+  if (SMARTCARD_ERROR_NONE != ret) {
+    LogAndReturnTizenError(ConvertErrorCode(ret), ("smartcard_reader_get_name() failed"));
+  }
 
-void SecureElementInstance::GetSelectResponse( const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  return TizenSuccess(picojson::value(name));
+}
 
-    ClientChannel* channel_ptr = (ClientChannel*) static_cast<long>(args.get("handle").get<double>());
-    SEChannel seChannel(channel_ptr);
+TizenResult SecureElementInstance::IsPresent(picojson::object const& args) {
+  ScopeLogger();
 
-    ByteArray select_response = seChannel.getSelectResponse();
-    picojson::value result = picojson::value(picojson::array());
-    picojson::array& arr = result.get<picojson::array>();
-    size_t select_response_size = select_response.size();
-    for (size_t i = 0; i < select_response_size; i++) {
-        arr.push_back(picojson::value(static_cast<double>(select_response[i])));
-    }
-    ReportSuccess( result, out);
+  return common::NotSupportedError();
 }
 
-void SecureElementInstance::OpenSession(
-        const picojson::value& args, picojson::object& out) {
-    LoggerD("Entered");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
-
-    const double callback_id = args.get("callbackId").get<double>();
-    Reader* reader_ptr = (Reader*) static_cast<long>(args.get("handle").get<double>());
-
-    auto open_session = [this, reader_ptr](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Opening session");
-        try {
-            SEReader seReader(reader_ptr);
-            picojson::value result = seReader.openSession();
-            ReportSuccess(result, response->get<picojson::object>());
-        } catch (const ErrorIO& err) {
-            LogAndReportError(PlatformResult(ErrorCode::IO_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalState& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalParameter& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR), &response->get<picojson::object>());
-        } catch (const ErrorSecurity& err) {
-            LogAndReportError(PlatformResult(ErrorCode::SECURITY_ERR), &response->get<picojson::object>());
-        } catch (const ExceptionBase& err) {
-            LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR), &response->get<picojson::object>());
-        }
-    };
+TizenResult SecureElementInstance::OpenSession(picojson::object const& args, const common::AsyncToken& token) {
+  ScopeLogger();
 
-    auto open_session_response = [this, callback_id](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Getting response");
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-        picojson::object& obj = response->get<picojson::object>();
-        obj.insert(std::make_pair("callbackId", picojson::value(callback_id)));
-        Instance::PostMessage(this, response->serialize().c_str());
-    };
+  return common::NotSupportedError();
+}
 
-    auto data = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
+TizenResult SecureElementInstance::CloseSessions(picojson::object const& args) {
+  ScopeLogger();
 
-    TaskQueue::GetInstance().Queue<picojson::value>(
-            open_session,
-            open_session_response,
-            data);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
+
+  return common::NotSupportedError();
 }
 
 // Session functions
+TizenResult SecureElementInstance::OpenBasicChannel(picojson::object const& args, const common::AsyncToken& token) {
+  ScopeLogger();
 
-void SecureElementInstance::OpenBasicChannel( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
-
-    const double callback_id = args.get("callbackId").get<double>();
-    const picojson::array v_aid = args.get("aid").get<picojson::value::array>();
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-
-    auto open = [this, v_aid, session_ptr](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Opening basic channel");
-        try {
-            SESession seSession(session_ptr);
-            picojson::value result = seSession.openBasicChannel(v_aid);
-            ReportSuccess(result, response->get<picojson::object>());
-        } catch (const ErrorIO& err) {
-            LogAndReportError(PlatformResult(ErrorCode::IO_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalState& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalParameter& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR), &response->get<picojson::object>());
-        } catch (const ErrorSecurity& err) {
-            LogAndReportError(PlatformResult(ErrorCode::SECURITY_ERR), &response->get<picojson::object>());
-        } catch (const ExceptionBase& err) {
-            LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR), &response->get<picojson::object>());
-        }
-    };
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    auto get_response = [this, callback_id](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Getting response");
-        picojson::object& obj = response->get<picojson::object>();
-        obj.insert(std::make_pair("callbackId", picojson::value(callback_id)));
-        Instance::PostMessage(this, response->serialize().c_str());
-    };
+  return common::NotSupportedError();
+}
+
+TizenResult SecureElementInstance::OpenLogicalChannel(picojson::object const& args, const common::AsyncToken& token) {
+  ScopeLogger();
 
-    auto data = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    TaskQueue::GetInstance().Queue<picojson::value>(open, get_response, data);
+  return common::NotSupportedError();
 }
 
+TizenResult SecureElementInstance::GetATR(picojson::object const& args) {
+  ScopeLogger();
 
-void SecureElementInstance::OpenLogicalChannel( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
-
-    const double callback_id = args.get("callbackId").get<double>();
-    const picojson::array v_aid = args.get("aid").get<picojson::value::array>();
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-
-    auto open = [this, v_aid, session_ptr](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Opening basic channel");
-        try {
-            SESession seSession(session_ptr);
-            picojson::value result = seSession.openLogicalChannel(v_aid);
-            ReportSuccess(result, response->get<picojson::object>());
-        } catch (const ErrorIO& err) {
-            LogAndReportError(PlatformResult(ErrorCode::IO_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalState& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR), &response->get<picojson::object>());
-        } catch (const ErrorIllegalParameter& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR), &response->get<picojson::object>());
-        } catch (const ErrorSecurity& err) {
-            LogAndReportError(PlatformResult(ErrorCode::SECURITY_ERR), &response->get<picojson::object>());
-        } catch (const ExceptionBase& err) {
-            LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR), &response->get<picojson::object>());
-        }
-    };
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    auto get_response = [this, callback_id](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Getting response");
-        picojson::object& obj = response->get<picojson::object>();
-        obj.insert(std::make_pair("callbackId", picojson::value(callback_id)));
-        Instance::PostMessage(this, response->serialize().c_str());
-    };
+  return common::NotSupportedError();
+}
 
-    auto data = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
+TizenResult SecureElementInstance::IsSessionClosed(picojson::object const& args) {
+  ScopeLogger();
 
-    TaskQueue::GetInstance().Queue<picojson::value>(open, get_response, data);
+  return common::NotSupportedError();
 }
 
+TizenResult SecureElementInstance::CloseSession(picojson::object const& args) {
+  ScopeLogger();
 
-void SecureElementInstance::GetATR( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
-
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-    SESession seSession(session_ptr);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    ByteArray atr_result = seSession.getATR();
-    picojson::value result = picojson::value(picojson::array());
-    picojson::array& arr = result.get<picojson::array>();
-    size_t atr_result_size = atr_result.size();
-    for (size_t i = 0; i < atr_result_size; i++) {
-        arr.push_back(picojson::value(static_cast<double>(atr_result[i])));
-    }
-    ReportSuccess( result, out);
+  return common::NotSupportedError();
 }
 
+TizenResult SecureElementInstance::CloseChannels(picojson::object const& args) {
+  ScopeLogger();
 
-void SecureElementInstance::IsSessionClosed( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-    SESession seSession(session_ptr);
-    picojson::value result = seSession.isClosed();
-    ReportSuccess( result, out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
+
+  return common::NotSupportedError();
 }
 
+// Channel methods
+TizenResult SecureElementInstance::CloseChannel(picojson::object const& args) {
+  ScopeLogger();
 
-void SecureElementInstance::CloseSession( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-    SESession seSession(session_ptr);
-    seSession.close();
-    ReportSuccess(out);
+  return common::NotSupportedError();
 }
 
+TizenResult SecureElementInstance::Transmit(picojson::object const& args, const common::AsyncToken& token) {
+  ScopeLogger();
 
-void SecureElementInstance::CloseChannels( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    Session* session_ptr = (Session*) static_cast<long>(args.get("handle").get<double>());
-    SESession seSession(session_ptr);
-    seSession.closeChannels();
-    ReportSuccess(out);
+  return common::NotSupportedError();
 }
 
-void SecureElementInstance::Transmit( const picojson::value& args, picojson::object& out) {
-    LoggerD("Enter");
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeSecureElement, &out);
-
-    const double callback_id = args.get("callbackId").get<double>();
-    const picojson::array v_command = args.get("command").get<picojson::value::array>();
-    ClientChannel* channel_ptr = (ClientChannel*) static_cast<long>(args.get("handle").get<double>());
-
-    auto open = [this, v_command, channel_ptr](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Transmit APDDU command to secure element");
-        try {
-            SEChannel seChannel(channel_ptr);
-            ByteArray transmit_response = seChannel.transmit(v_command);
-            picojson::value result = picojson::value(picojson::array());
-            picojson::array& arr = result.get<picojson::array>();
-            size_t transmit_response_size = transmit_response.size();
-            for (size_t i = 0; i < transmit_response_size; i++) {
-                arr.push_back(picojson::value(static_cast<double>(transmit_response[i])));
-            }
-            ReportSuccess( result, response->get<picojson::object>());
-        } catch (const ErrorIO& err) {
-            LogAndReportError(PlatformResult(ErrorCode::IO_ERR, "Failed to transmit command."), &response->get<picojson::object>());
-        } catch (const ErrorIllegalState& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR, "Failed to transmit command."), &response->get<picojson::object>());
-        } catch (const ErrorIllegalParameter& err) {
-            LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Failed to transmit command."), &response->get<picojson::object>());
-        } catch (const ErrorSecurity& err) {
-            LogAndReportError(PlatformResult(ErrorCode::SECURITY_ERR, "Failed to transmit command."), &response->get<picojson::object>());
-        } catch (const ExceptionBase& err) {
-            LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to transmit command."), &response->get<picojson::object>());
-        }
-    };
-
-    auto get_response = [this, callback_id](const std::shared_ptr<picojson::value>& response) -> void {
-        LoggerD("Getting response");
-        picojson::object& obj = response->get<picojson::object>();
-        obj.insert(std::make_pair("callbackId", picojson::value(callback_id)));
-        Instance::PostMessage(this, response->serialize().c_str());
-    };
+TizenResult SecureElementInstance::GetSelectResponse(picojson::object const& args) {
+  ScopeLogger();
 
-    auto data = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
+  CHECK_PRIVILEGE(kPrivilegeSecureElement);
 
-    TaskQueue::GetInstance().Queue<picojson::value>(open, get_response, data);
+  return common::NotSupportedError();
 }
 
 } // namespace secureelement
index 1f0ff9c8577ef1e7d90a829808b61e674a9516e5..21a9bcc0e3e05a8894a169496cece160e995c994 100644 (file)
 #ifndef SECUREELEMENT_SECUREELEMENT_INSTANCE_H_
 #define SECUREELEMENT_SECUREELEMENT_INSTANCE_H_
 
-#include "common/extension.h"
-#include "secureelement_seservice.h"
+#include "common/tizen_instance.h"
 
 namespace extension {
 namespace secureelement {
 
-class SecureElementInstance: public common::ParsedInstance {
+class SecureElementInstance: public common::TizenInstance {
 public:
     SecureElementInstance();
     virtual ~SecureElementInstance();
 
 private:
-    /* SEService methods */
-    void GetReaders(const picojson::value& args, picojson::object& out);
-    void RegisterSEListener(const picojson::value& args, picojson::object& out);
-    void UnregisterSEListener(const picojson::value& args, picojson::object& out);
-    void Shutdown(const picojson::value& args, picojson::object& out);
+    /* Service methods */
+    common::TizenResult GetReaders(picojson::object const& args, const common::AsyncToken& token);
+    common::TizenResult RegisterSEListener(picojson::object const& args);
+    common::TizenResult UnregisterSEListener(picojson::object const& args);
+    common::TizenResult Shutdown(picojson::object const& args);
 
     /* Reader methods */
-    void GetName(const picojson::value& args, picojson::object& out);
-    void IsPresent(const picojson::value& args, picojson::object& out);
-    void OpenSession(const picojson::value& args, picojson::object& out);
-    void CloseSessions(const picojson::value& args, picojson::object& out);
+    common::TizenResult GetName(picojson::object const& args);
+    common::TizenResult IsPresent(picojson::object const& args);
+    common::TizenResult OpenSession(picojson::object const& args, const common::AsyncToken& token);
+    common::TizenResult CloseSessions(picojson::object const& args);
 
     /* Session methods */
-    void OpenBasicChannel(const picojson::value& args, picojson::object& out);
-    void OpenLogicalChannel(const picojson::value& args, picojson::object& out);
-    void GetATR(const picojson::value& args, picojson::object& out);
-    void IsSessionClosed(const picojson::value& args, picojson::object& out);
-    void CloseSession(const picojson::value& args, picojson::object& out);
-    void CloseChannels(const picojson::value& args, picojson::object& out);
+    common::TizenResult OpenBasicChannel(picojson::object const& args, const common::AsyncToken& token);
+    common::TizenResult OpenLogicalChannel(picojson::object const& args, const common::AsyncToken& token);
+    common::TizenResult GetATR(picojson::object const& args);
+    common::TizenResult IsSessionClosed(picojson::object const& args);
+    common::TizenResult CloseSession(picojson::object const& args);
+    common::TizenResult CloseChannels(picojson::object const& args);
 
     /* Channel methods */
-    void CloseChannel(const picojson::value& args, picojson::object& out);
-    void Transmit(const picojson::value& args, picojson::object& out);
-    void GetSelectResponse(const picojson::value& args, picojson::object& out);
+    common::TizenResult CloseChannel(picojson::object const& args);
+    common::TizenResult Transmit(picojson::object const& args, const common::AsyncToken& token);
+    common::TizenResult GetSelectResponse(picojson::object const& args);
 
-    SEService service_;
+    bool is_initialized_;
 };
 
 } // namespace secureelement
diff --git a/src/secureelement/secureelement_reader.cc b/src/secureelement/secureelement_reader.cc
deleted file mode 100644 (file)
index 3ad2845..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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 "secureelement_reader.h"
-
-#include <Session.h>
-#include <Reader.h>
-#include "common/picojson.h"
-#include "common/logger.h"
-
-using namespace smartcard_service_api;
-using namespace std;
-
-namespace extension {
-namespace secureelement {
-
-
-picojson::value SEReader::getName() {
-    LoggerD("Entered");
-
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-
-    if(m_reader) {
-        obj.insert(std::make_pair("name", picojson::value(m_reader->getName())));
-    }
-
-    return result;
-}
-
-picojson::value SEReader::isPresent() {
-    LoggerD("Entered");
-
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-
-    if(m_reader) {
-        obj.insert(std::make_pair("isPresent", picojson::value(m_reader->isSecureElementPresent())));
-    }
-
-    return result;
-}
-
-picojson::value SEReader::openSession() {
-    LoggerD("Entered");
-
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-
-    if(m_reader) {
-        Session *session_ptr = static_cast<Session*>(m_reader->openSessionSync());
-
-        obj.insert(std::make_pair("handle", picojson::value((double) (long) session_ptr)));
-        obj.insert(std::make_pair("isClosed", picojson::value(session_ptr->isClosed())));
-    }
-
-    return result;
-}
-
-void SEReader::closeSessions() {
-    LoggerD("Entered");
-
-    if(m_reader) {
-        m_reader->closeSessions();
-    }
-}
-
-}// secureelement
-}// extension
diff --git a/src/secureelement/secureelement_reader.h b/src/secureelement/secureelement_reader.h
deleted file mode 100644 (file)
index fc2d777..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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.
- */
-
-#ifndef SECUREELEMENT_READER_H_
-#define SECUREELEMENT_READER_H_
-
-#include "common/picojson.h"
-#include <Reader.h>
-
-namespace extension {
-namespace secureelement {
-
-class SEReader {
-public:
-    SEReader(smartcard_service_api::Reader* reader_ptr) : m_reader(reader_ptr) {};
-    ~SEReader() {};
-
-    picojson::value getName();
-    picojson::value isPresent();
-    picojson::value openSession();
-    void closeSessions();
-private:
-    smartcard_service_api::Reader* m_reader;
-};
-
-} // secureelement
-} // extension
-
-#endif // SECUREELEMENT_READER_H_
diff --git a/src/secureelement/secureelement_seservice.cc b/src/secureelement/secureelement_seservice.cc
deleted file mode 100644 (file)
index 15fe491..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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 "secureelement/secureelement_seservice.h"
-
-#include "common/logger.h"
-#include "common/platform_result.h"
-#include "common/task-queue.h"
-#include "common/tools.h"
-
-
-#include "secureelement/secureelement_instance.h"
-
-using namespace smartcard_service_api;
-using namespace common;
-using namespace tools;
-
-namespace extension {
-namespace secureelement {
-
-namespace {
-const int SE_INSERTED = 1;
-const int SE_REMOVED = 2;
-}
-
-class SEServiceEventHandler : public SEServiceListener {
-  void serviceConnected(SEServiceHelper *service, void *context) {
-    LoggerD("Entered");
-    if (context) {
-      (static_cast<SEService*>(context))->ServiceConnected();
-    } else {
-      LoggerE("Context is null");
-    }
-  }
-
-  void eventHandler(SEServiceHelper *service, char *se_name, int event, void *context) {
-    LoggerD("Entered");
-    if (context) {
-      (static_cast<SEService*>(context))->EventHandler(se_name, event);
-    } else {
-      LoggerE("Context is null");
-    }
-  }
-
-  void errorHandler(SEServiceHelper *service, int error, void *context) {
-    LoggerE("Error handler called, code: %d", error);
-    if (context) {
-      (static_cast<SEService*>(context))->ErrorHandler(error);
-    } else {
-      LoggerE("Context is null");
-    }
-  }
-};
-
-static SEServiceEventHandler se_event_handler;
-
-SEService::SEService(SecureElementInstance& instance)
-    : is_initialized_(false),
-      is_listener_set_(false),
-      is_error_(false),
-      instance_(instance) {
-  LoggerD("Entered");
-
-  se_service_ = new smartcard_service_api::SEService((void *)this, &se_event_handler);
-}
-
-SEService::~SEService() {
-  LoggerD("Entered");
-
-  if (is_initialized_) {
-    se_service_->shutdownSync();
-    is_initialized_ = false;
-  }
-
-  delete se_service_;
-  se_service_ = nullptr;
-}
-
-void SEService::GetReaders(double callback_id) {
-  LoggerD("Entered");
-
-  auto get_readers = [this](
-      const std::shared_ptr<picojson::value>& response) -> void {
-    picojson::value result = picojson::value(picojson::array());
-    picojson::array& result_array = result.get<picojson::array>();
-
-    std::vector<smartcard_service_api::ReaderHelper *> readers = se_service_->getReaders();
-    for (std::size_t i = 0; i < readers.size(); i++) {
-      if (readers[i]->isSecureElementPresent()) {
-        result_array.push_back(picojson::value((double) (long) readers[i]));
-      }
-    }
-
-    ReportSuccess(result, response->get<picojson::object>());
-  };
-
-  auto get_readers_response = [this, callback_id](
-      const std::shared_ptr<picojson::value>& response) -> void {
-    picojson::object& obj = response->get<picojson::object>();
-    obj.insert(std::make_pair("callbackId", picojson::value(callback_id)));
-    Instance::PostMessage(&instance_, response->serialize().c_str());
-  };
-
-  if (is_error_) {
-    // there has been an error, report it asynchronously
-    std::shared_ptr<picojson::value> response{new picojson::value{picojson::object{}}};
-    LogAndReportError(
-        PlatformResult(ErrorCode::SERVICE_NOT_AVAILABLE_ERR,
-                       "Unable to connect to service."),
-        &response->get<picojson::object>(),
-        ("Failed: is_error_"));
-    TaskQueue::GetInstance().Async<picojson::value>(get_readers_response, response);
-    return;
-  }
-
-  if (!is_initialized_) {
-    // not yet ready, wait for the platform callback, send the response then
-    get_readers_callbacks_.push_back(callback_id);
-    return;
-  }
-
-  auto data = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
-
-  // everything's fine, get the readers, send the response
-  TaskQueue::GetInstance().Queue<picojson::value>(
-      get_readers,
-      get_readers_response,
-      data);
-}
-
-void SEService::RegisterSEListener() {
-  LoggerD("Entered");
-
-  is_listener_set_ = true;
-}
-
-void SEService::UnregisterSEListener() {
-  LoggerD("Entered");
-
-  is_listener_set_ = false;
-}
-
-void SEService::Shutdown() {
-  LoggerD("Entered");
-
-  if (is_initialized_) {
-      se_service_->shutdownSync();
-      is_initialized_ = false;
-  }
-}
-
-void SEService::ServiceConnected() {
-  LoggerD("Entered");
-
-  is_initialized_ = true;
-
-  // send the response to pending GetReaders callbacks
-  for (const auto& callback_id : get_readers_callbacks_) {
-    GetReaders(callback_id);
-  }
-  get_readers_callbacks_.clear();
-
-  // notify the listeners
-  if (!is_listener_set_) {
-    LoggerE("SE listener is not set.");
-    return;
-  }
-
-  std::vector<smartcard_service_api::ReaderHelper *> readers = se_service_->getReaders();
-  for (std::size_t i = 0; i < readers.size(); i++) {
-    if (readers[i]->isSecureElementPresent()) {
-      picojson::value result = picojson::value(picojson::object());
-      picojson::object& obj = result.get<picojson::object>();
-
-      obj.insert(std::make_pair("action", picojson::value("onSEReady")));
-      obj.insert(std::make_pair("handle", picojson::value((double) (long) readers[i])));
-
-      Instance::PostMessage(&instance_, result.serialize().c_str());
-    }
-  }
-}
-
-void SEService::EventHandler(char *se_name, int event) {
-  LoggerD("Entered");
-
-  if (SE_INSERTED != event && SE_REMOVED != event) {
-    LoggerD("Incorrect event type");
-    return;
-  }
-
-  if (is_initialized_ && is_listener_set_) {
-    bool is_present = event == SE_INSERTED;
-
-    std::vector<smartcard_service_api::ReaderHelper *> readers = se_service_->getReaders();
-    for (std::size_t i = 0; i < readers.size(); i++) {
-      if (!strcmp(se_name, readers[i]->getName()) &&
-          readers[i]->isSecureElementPresent() != is_present) {
-        picojson::value result = picojson::value(picojson::object());
-        picojson::object& obj = result.get<picojson::object>();
-
-        if (is_present) {
-          obj.insert(std::make_pair("action", picojson::value("onSEReady")));
-        } else {
-          obj.insert(std::make_pair("action", picojson::value("onSENotReady")));
-        }
-
-        obj.insert(std::make_pair("handle", picojson::value((double) (long) readers[i])));
-        Instance::PostMessage(&instance_, result.serialize().c_str());
-        return;
-      }
-    }
-  }
-}
-
-void SEService::ErrorHandler(int error) {
-  LoggerD("Entered");
-  is_error_ = true;
-
-  for (const auto& callback_id : get_readers_callbacks_) {
-    GetReaders(callback_id);
-  }
-  get_readers_callbacks_.clear();
-}
-
-} // secureelement
-} // extension
diff --git a/src/secureelement/secureelement_seservice.h b/src/secureelement/secureelement_seservice.h
deleted file mode 100644 (file)
index 5ac4067..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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.
- */
-
-#ifndef SECUREELEMENT_SESERVICE_H_
-#define SECUREELEMENT_SESERVICE_H_
-
-#include <SEService.h>
-#include <SEServiceHelper.h>
-
-namespace extension {
-namespace secureelement {
-
-class SecureElementInstance;
-
-class SEService {
- public:
-  explicit SEService(SecureElementInstance& instance);
-  ~SEService();
-
-  void GetReaders(double callback_id);
-  void RegisterSEListener();
-  void UnregisterSEListener();
-  void Shutdown();
-
-  void ServiceConnected();
-  void EventHandler(char *se_name, int event);
-  void ErrorHandler(int error);
- private:
-  SEService(const SEService&) = delete;
-  SEService& operator=(const SEService&) = delete;
-
-  smartcard_service_api::SEService *se_service_;
-  bool is_initialized_;
-  bool is_listener_set_;
-  bool is_error_;
-  std::vector<double> get_readers_callbacks_;
-  SecureElementInstance& instance_;
-};
-
-} // secureelement
-} // extension
-
-#endif // SECUREELEMENT_SESERVICE_H_
diff --git a/src/secureelement/secureelement_session.cc b/src/secureelement/secureelement_session.cc
deleted file mode 100644 (file)
index 35fee11..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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 <Session.h>
-#include <ClientChannel.h>
-#include "common/picojson.h"
-#include "common/logger.h"
-#include "secureelement_session.h"
-
-using namespace smartcard_service_api;
-
-namespace extension {
-namespace secureelement {
-
-picojson::value SESession::openBasicChannel(const picojson::array& v_aid) {
-    LoggerD("Entered");
-
-    size_t v_aid_size = v_aid.size();
-    unsigned char* aid = new unsigned char[v_aid_size];
-    for (size_t i = 0; i < v_aid_size; i++) {
-        aid[i] = static_cast<unsigned char>(v_aid[i].get<double>());
-    }
-    ByteArray aid_byte_array( aid, (unsigned int) v_aid.size());
-    ClientChannel* channel_ptr = static_cast<ClientChannel*>(m_session_ptr->openBasicChannelSync( aid_byte_array));
-    delete [] aid;
-
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-    obj.insert(std::make_pair("handle", picojson::value((double) (long) channel_ptr)));
-    obj.insert(std::make_pair("isBasicChannel", picojson::value(channel_ptr->isBasicChannel())));
-
-    return result;
-}
-
-
-picojson::value SESession::openLogicalChannel(const picojson::array& v_aid) {
-    LoggerD("Entered");
-
-    size_t v_aid_size = v_aid.size();
-    unsigned char* aid = new unsigned char[v_aid_size];
-    for (size_t i = 0; i < v_aid_size; i++) {
-        aid[i] = static_cast<unsigned char>(v_aid[i].get<double>());
-    }
-    ByteArray aid_byte_array( aid, (unsigned int) v_aid.size());
-    ClientChannel* channel_ptr = static_cast<ClientChannel*>(m_session_ptr->openLogicalChannelSync( aid_byte_array));
-    delete [] aid;
-
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-    obj.insert(std::make_pair("handle", picojson::value((double) (long) channel_ptr)));
-    obj.insert(std::make_pair("isBasicChannel", picojson::value(channel_ptr->isBasicChannel())));
-
-    return result;
-}
-
-
-picojson::value SESession::isClosed() {
-    LoggerD("Entered");
-    bool is_closed = m_session_ptr->isClosed();
-    picojson::value result = picojson::value(picojson::object());
-    picojson::object& obj = result.get<picojson::object>();
-    obj.insert(std::make_pair("isClosed", picojson::value(is_closed)));
-    return result;
-}
-
-
-void SESession::close() {
-    LoggerD("Entered");
-    if ( m_session_ptr) {
-        m_session_ptr->closeSync();
-    }
-}
-
-
-ByteArray SESession::getATR() {
-    LoggerD("Entered");
-    ByteArray response;
-    if ( m_session_ptr) {
-        response = m_session_ptr->getATRSync();
-    }
-    return response;
-}
-
-
-void SESession::closeChannels() {
-    LoggerD("Entered");
-    if ( m_session_ptr) {
-        m_session_ptr->closeChannels();
-    }
-}
-
-
-} // secureelement
-} // extension
diff --git a/src/secureelement/secureelement_session.h b/src/secureelement/secureelement_session.h
deleted file mode 100644 (file)
index 891380c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *    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.
- */
-
-#ifndef SECUREELEMENT_SESSION_H_
-#define SECUREELEMENT_SESSION_H_
-
-#include <Session.h>
-#include "common/picojson.h"
-#include "common/logger.h"
-
-namespace extension {
-namespace secureelement {
-
-class SESession {
-public:
-    SESession(smartcard_service_api::Session* session_ptr)
-        : m_session_ptr(session_ptr) {
-    }
-
-    ~SESession() {};
-    picojson::value openBasicChannel( const picojson::array& v_aid);
-    picojson::value openLogicalChannel( const picojson::array& v_aid);
-    picojson::value isClosed();
-    void close();
-    smartcard_service_api::ByteArray getATR();
-    void closeChannels();
-private:
-    smartcard_service_api::Session* m_session_ptr;
-};
-
-} // secureelement
-} // extension
-
-#endif // SECUREELEMENT_SESSION_H_