From d4837fd7734d1454998949f12478b3cbd19e05e5 Mon Sep 17 00:00:00 2001 From: "Sungjun, Lee" Date: Tue, 10 Jan 2017 15:48:23 +0900 Subject: [PATCH] Add SD Card Event Receiver Change-Id: I775482a74e48698d10088a5d1ba03209d319604c Signed-off-by: Sungjun, Lee --- server/external-encryption.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/server/external-encryption.cpp b/server/external-encryption.cpp index 0904773..8906b8d 100644 --- a/server/external-encryption.cpp +++ b/server/external-encryption.cpp @@ -26,6 +26,8 @@ #include "app-bundle.h" #include "engine/ecryptfs-engine.h" #include "key-manager/key-manager.h" +#include +#include #include "rmi/external-encryption.h" @@ -57,6 +59,77 @@ void showProgressUI(const std::string type) { launchpad.launch("org.tizen.ode-gui", bundle); } +void externalCallback(dbus::Variant parameters) +{ + INFO("SD Card State Changed"); + int intparams[6]; + char* strparams[7]; + + parameters.get("(issssssisibii)", + &intparams[0], // block type: 0 - scsi, 1 : mmc + &strparams[0], // devnode + &strparams[1], // syspath + &strparams[2], // usage + &strparams[3], // fs type + &strparams[4], // fs version + &strparams[5], // fs uuid enc + &intparams[1], // readonly: 0 - rw, 1 - ro + &strparams[6], // mount point + &intparams[2], // state: 0 - unmount, 1 - mount + &intparams[3], // primary: 0 - flase, 1 - true + &intparams[4], // flags: 1 - unmounted 2 - broken filesystem 4 - no filesystem 8 - not supported 16 - readonly + &intparams[5]); // strage id + if(intparams[2] == 0) { + INFO("Unmounted!!!"); + } + else { + INFO("Mounted!!!"); + // TODO + // Password Popup + std::string pw = "tizen"; + KeyManager::data pwData(pw.begin(), pw.end()); + engine.mount(keyManager.getDEK(pwData)); + } +} + +void externalAddEventReceiver() +{ + dbus::Connection &systemDBus = dbus::Connection::getSystem(); + dbus::Connection::SubscriptionId id; + + id = systemDBus.subscribeSignal("", + "org.tizen.system.storage.BlockManager", + "DeviceChanged", + "/Org/Tizen/System/Storage/Block/Manager", + externalCallback); + INFO("Event ID: " + std::to_string(id)); +} + +void externalCheckMount() +{ + INFO("EcryptfsEncrypt"); + if (!engine.isMountpointMounted(EXTERNAL_STORAGE_PATH)) { + INFO("SD Card not inserted!"); + } + else { + INFO("SD Card inserted!"); + if (engine.checkEncryptMetaData(ORIG_META_FILE_PATH) == 0) { + INFO("SD Card encrypted!"); + if (engine.isEcryptfsMountpointMounted(EXTERNAL_STORAGE_PATH) == 0) { + INFO("Already Ecryptfs Mounted"); + } + else { + std::string pw = "tizen"; + KeyManager::data pwData(pw.begin(), pw.end()); + engine.mount(keyManager.getDEK(pwData)); + } + } + else { + INFO("SD Card not encrypted!"); + } + } +} + } ExternalEncryption::ExternalEncryption(ODEControlContext& ctx) : @@ -68,6 +141,9 @@ ExternalEncryption::ExternalEncryption(ODEControlContext& ctx) : context.registerParametricMethod(this, "", (int)(ExternalEncryption::decrypt)(std::string)); context.registerParametricMethod(this, "", (int)(ExternalEncryption::changePassword)(std::string, std::string)); context.registerNonparametricMethod(this, "", (int)(ExternalEncryption::getState)); + + externalAddEventReceiver(); + externalCheckMount(); } -- 2.7.4