X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmanager%2Fclient%2Fclient-manager-impl.cpp;h=e6a7f4bfd08691a5f82ca346cad5a146f43745f9;hb=05f39b404b29c1471c8f7d3477548c86699f3456;hp=41383bf4d224c071ebd05c0eb054d5c952cf64a5;hpb=50759ee25cd172d7abd2180095c355e2ebea67bd;p=platform%2Fcore%2Fsecurity%2Fkey-manager.git diff --git a/src/manager/client/client-manager-impl.cpp b/src/manager/client/client-manager-impl.cpp index 41383bf..e6a7f4b 100644 --- a/src/manager/client/client-manager-impl.cpp +++ b/src/manager/client/client-manager-impl.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include namespace CKM { @@ -322,7 +323,11 @@ int ManagerImpl::getKey(const Alias &alias, const Password &password, KeyShPtr & if (retCode != CKM_API_SUCCESS) return retCode; - KeyShPtr keyParsed(new KeyImpl(rawData)); + KeyShPtr keyParsed; + if(DataType::KEY_AES == recvDataType) + keyParsed = KeyShPtr(new KeyAESImpl(rawData)); + else + keyParsed = KeyShPtr(new KeyImpl(rawData)); if (keyParsed->empty()) { LogDebug("Key empty - failed to parse!"); @@ -457,11 +462,37 @@ int ManagerImpl::createKeyPairECDSA( } int ManagerImpl::createKeyAES( - const int /*size*/, - const Alias &/*keyAlias*/, - const Policy &/*policyKey*/) + const int size, + const Alias &keyAlias, + const Policy &policyKey) { - return 0; + // proceed with sending request + int my_counter = ++m_counter; + + return try_catch([&] { + + MessageBuffer recv; + AliasSupport aliasHelper(keyAlias); + auto send = MessageBuffer::Serialize(static_cast(LogicCommand::CREATE_KEY_AES), + my_counter, + static_cast(size), + PolicySerializable(policyKey), + aliasHelper.getName(), + aliasHelper.getLabel()); + + int retCode = m_storageConnection.processRequest(send.Pop(), recv); + if (CKM_API_SUCCESS != retCode) + return retCode; + + int command; + int counter; + recv.Deserialize(command, counter, retCode); + if (counter != my_counter) { + return CKM_API_ERROR_UNKNOWN; + } + + return retCode; + }); }