Implement seperated server-so model
authorhb.min <hb.min@samsung.com>
Sun, 24 Mar 2013 23:33:27 +0000 (08:33 +0900)
committerhb.min <hb.min@samsung.com>
Sun, 24 Mar 2013 23:33:27 +0000 (08:33 +0900)
Change-Id: Ifca9a8557dbd6d352f0f3d0aa11de55409e2ff4a
Signed-off-by: hb.min <hb.min@samsung.com>
inc/PrivilegeService.h
src/PrivilegeService.cpp

index 16b1ad8..c6c9607 100644 (file)
@@ -67,10 +67,6 @@ public:
        bool RetrievePrivilege(Tizen::Base::String* pEncryptedBitwise, Tizen::Base::String* pHmac, Tizen::Base::Collection::ArrayList* pPrivilegeList, result* pRes);
        bool RetrieveVisibility(Tizen::Base::String* pEncryptedVisibility, Tizen::Base::String* pHmac, result* pRes);
 
-       result GenerateVisibilityString(Tizen::App::AppId appId, Tizen::Base::String* pEncryptedVisibility, Tizen::Base::String* pHmac);
-       result GetEncryptedVisibility(int visibility, Tizen::Base::String& encryptedVisibility);
-       result GetChecksum(Tizen::App::AppId appId, int visibility, Tizen::Base::String& checksum);
-
 private:
        Tizen::Io::_IpcServer* __pIpcServer;
 }; // PrivilegeService
index 92c73af..74f6cc2 100644 (file)
 #include <FIo_IIpcServerEventListener.h>
 #include <FIo_IpcCommonDataTypes.h>
 #include <FBaseSysLog.h>
-#include <FSec_PrivilegeManager.h>
+#include <FSec_PrivilegeManagerServer.h>
 #include <FSec_PrivilegeManagerMessage.h>
 #include <FAppPkg_PackageInfoImpl.h>
-#include <FSecCryptoAesCipher.h>
-#include <FSecCryptoSha1Hmac.h>
-#include <FBase_StringConverter.h>
-#include <FBaseInternalTypes.h>
-#include <FSec_DeviceKeyGenerator.h>
 
 #include "PrivilegeService.h"
 
@@ -43,8 +38,6 @@ using namespace Tizen::App::Package;
 using namespace Tizen::Io;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Security;
-using namespace Tizen::Security::Crypto;
-using namespace Tizen::Base::Utility;
 
 PrivilegeService::PrivilegeService(void)
        : __pIpcServer(null)
@@ -61,7 +54,6 @@ PrivilegeService::~PrivilegeService(void)
        AppLogTag(OSP_SECURITY_SERVICE, "Leaved.");
 }
 
-
 result
 PrivilegeService::Construct(void)
 {
@@ -72,7 +64,7 @@ PrivilegeService::Construct(void)
        __pIpcServer = new (std::nothrow) _IpcServer();
        TryReturnResultTag(OSP_SECURITY_SERVICE, __pIpcServer != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-       r = __pIpcServer->Construct("osp.security.ipcserver.privilegemanager", *this);
+       r = __pIpcServer->Construct("osp.security.ipcserver.privilegemanager", *this, false);
        TryReturnResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
 
        AppLogTag(OSP_SECURITY_SERVICE, "Leaved.");
@@ -106,35 +98,10 @@ PrivilegeService::OnIpcClientDisconnected(const _IpcServer&server, int clientId)
 bool
 PrivilegeService::RetrievePrivilege(String* pEncryptedBitwise, String* pHmac, ArrayList* pPrivilegeList, result* pRes)
 {
-       String encryptedBitwise;
-       String hmac;
        AppId appId;
-       ArrayList* pPrivilegeStringList = null;
-
        __pIpcServer->GetClientAppId().SubString(0, MAX_APP_ID_SIZE, appId);
 
-       *pRes = _PrivilegeManager::RetrieveCipherPrivilegeExN(appId, encryptedBitwise, hmac, pPrivilegeStringList);
-       if (*pRes == E_SUCCESS)
-       {
-               pEncryptedBitwise->Append(encryptedBitwise);
-               pHmac->Append(hmac);
-
-               if (pPrivilegeStringList != null)
-               {
-                       IEnumerator* pEnum = null;
-                       pEnum = pPrivilegeStringList->GetEnumeratorN();
-                       while (pEnum->MoveNext() == E_SUCCESS)
-                       {
-                               String* tempString = static_cast<String*>(pEnum->GetCurrent());
-                               pPrivilegeList->Add(new String(*tempString));
-                       }
-
-                       delete pEnum;
-
-                       pPrivilegeStringList->RemoveAll(true);
-                       delete pPrivilegeStringList;
-               }
-       }
+       *pRes = _PrivilegeManagerServer::RetrievePrivilege(appId, pEncryptedBitwise, pHmac, pPrivilegeList);
 
        return true;
 }
@@ -142,163 +109,14 @@ PrivilegeService::RetrievePrivilege(String* pEncryptedBitwise, String* pHmac, Ar
 bool
 PrivilegeService::RetrieveVisibility(String* pEncryptedVisibility, String* pHmac, result* pRes)
 {
-       String encryptedVisibility;
-       String hmac;
        AppId appId;
-
        __pIpcServer->GetClientAppId().SubString(0, MAX_APP_ID_SIZE, appId);
 
-       *pRes = GenerateVisibilityString(appId, pEncryptedVisibility, pHmac);
+       *pRes = _PrivilegeManagerServer::GenerateVisibilityString(appId, pEncryptedVisibility, pHmac);
 
        return true;
 }
 
-result
-PrivilegeService::GenerateVisibilityString(AppId appId, String* pEncryptedVisibility, String* pHmac)
-{
-       _PackageInfoImpl infoImpl;
-       result r = E_SUCCESS;
-       int visibility = 0;
-
-       String encryptedVisibility;
-       String checksum;
-
-       r = infoImpl.Construct(appId);
-       if (r == E_PKG_NOT_INSTALLED)
-       {
-               AppLogExceptionTag(OSP_SECURITY_SERVICE, "[E_DATA_NOT_FOUND] The privilege information does not exist.");
-               return E_DATA_NOT_FOUND;
-       }
-       TryReturnTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       visibility = infoImpl.GetApiVisibility();
-       TryReturnTag(OSP_SECURITY_SERVICE, visibility >= 0, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = GetEncryptedVisibility(visibility, encryptedVisibility);
-       TryReturnTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = GetChecksum(appId, visibility, checksum);
-       TryReturnTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       pEncryptedVisibility->Append(encryptedVisibility);
-       pHmac->Append(checksum);
-
-       return r;
-}
-
-result
-PrivilegeService::GetEncryptedVisibility(int visibility, String& encryptedVisibility)
-{
-       result r = E_SUCCESS;
-       ISecretKey* pKey = null;
-       ByteBuffer ivByte;
-       ByteBuffer* pEncryptedVisibility = null;
-       ByteBuffer* pTempVisibility = null;
-       AesCipher cipherEnc;
-       const byte ivector[_IV_LEN] = { 0x3E, 0xB5, 0x01, 0x45, 0xE4, 0xF8, 0x75, 0x3F, 0x08, 0x9D, 0x9F, 0x57, 0x3B, 0x63, 0xEF, 0x4B};
-
-       pTempVisibility = new (std::nothrow) ByteBuffer();
-       TryReturnTag(OSP_SECURITY_SERVICE, pTempVisibility != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-
-       r = pTempVisibility->Construct(sizeof(int));
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = ivByte.Construct(_IV_LEN);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = ivByte.SetArray(ivector, 0, _IV_LEN);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-       ivByte.Flip();
-
-       r = pTempVisibility->SetArray((byte*)(&visibility), 0, sizeof(int));
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-       pTempVisibility->Flip();
-
-       r = cipherEnc.Construct(L"CBC/128/PKCS7PADDING", CIPHER_ENCRYPT);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       pKey = _DeviceKeyGenerator::GenerateDeviceKeyN(_KEY_LEN);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pKey != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = cipherEnc.SetKey(*pKey);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = cipherEnc.SetInitialVector(ivByte);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       pEncryptedVisibility = cipherEnc.EncryptN(*pTempVisibility);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pTempVisibility != null, r = E_SYSTEM, E_SYSTEM,
-                          "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = StringUtil::EncodeToBase64String(*pEncryptedVisibility, encryptedVisibility);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       // fall through
-
-CATCH:
-
-       delete pTempVisibility;
-       delete pKey;
-       delete pEncryptedVisibility;
-
-       return r;
-}
-
-result
-PrivilegeService::GetChecksum(AppId appId, int visibility, String& checksum)
-{
-       result r = E_SUCCESS;
-       byte tempChecksumString[sizeof(int) + MAX_APP_ID_SIZE];
-
-       ISecretKey* pKey = null;
-       ByteBuffer ivByte;
-       ByteBuffer input;
-       IHmac* pHmac = null;
-       ByteBuffer* pChecksumByteBuffer = null;
-       char* pAppId = null;
-
-       pAppId = (char*) _StringConverter::CopyToCharArrayN(appId);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pAppId != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       memcpy(tempChecksumString, pAppId, MAX_APP_ID_SIZE);
-       memcpy(tempChecksumString + MAX_APP_ID_SIZE, (byte*)(&visibility), sizeof(int));
-
-       delete[] pAppId;
-       pAppId = null;
-
-       r = input.Construct(MAX_APP_ID_SIZE + sizeof(int));
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = input.SetArray(tempChecksumString, 0, MAX_APP_ID_SIZE + sizeof(int));
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-       input.Flip();
-
-       pHmac = new (std::nothrow) Sha1Hmac();
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pHmac != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-
-       pKey = _DeviceKeyGenerator::GenerateDeviceKeyN(_KEY_LEN);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pKey != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = pHmac->SetKey(*pKey);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       pChecksumByteBuffer = pHmac->GetHmacN(input);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, pChecksumByteBuffer != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       r = StringUtil::EncodeToBase64String(*pChecksumByteBuffer, checksum);
-       TryCatchResultTag(OSP_SECURITY_SERVICE, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred.");
-
-       // fall through
-
-CATCH:
-
-       delete pKey;
-       delete pHmac;
-       delete pChecksumByteBuffer;
-
-       return r;
-}
-
 void
 PrivilegeService::OnIpcRequestReceived(_IpcServer& server, const IPC::Message& message)
 {