From: Tomasz Marciniak Date: Fri, 3 Jul 2015 13:45:36 +0000 (+0200) Subject: [KeyManager] Update Key after saving in key manager. X-Git-Tag: submit/tizen/20150702.103311^2~1^2~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4caa5e0502614c9d46e4e7700aba930c55d0b07;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [KeyManager] Update Key after saving in key manager. [Verification] Code compiles without errors. Change-Id: I23c11fee44cb95a747294b95d96a853547e79a01 Signed-off-by: Tomasz Marciniak --- diff --git a/src/keymanager/keymanager_api.js b/src/keymanager/keymanager_api.js index 5d46e954..0fa50e15 100755 --- a/src/keymanager/keymanager_api.js +++ b/src/keymanager/keymanager_api.js @@ -95,25 +95,50 @@ function updateInternalData(internal, data) { } function Key(name, password, extractable, keyType, rawKey) { + var _internal = { + name: converter.toString(name), + password: (password ? converter.toString(password) : null), + extractable: !!extractable, // make sure it is boolean + keyType: (KeyType.hasOwnProperty(keyType) ? keyType : KeyType.KEY_NONE), + rawKey: (rawKey ? converter.toString(rawKey) : '') + }; + Object.defineProperties(this, { name: { - value: converter.toString(name), + get: function () { return _internal.name; }, + set: function () {}, enumerable: true }, password: { - value: password ? converter.toString(password) : null, + get: function () { return _internal.password; }, + set: function (value) { + if (value instanceof InternalData) { + _internal.password = value.password; + } + }, enumerable: true }, extractable: { - value: !!extractable,//make sure it is boolean + get: function () { return _internal.extractable; }, + set: function () {}, enumerable: true }, keyType: { - value: KeyType.hasOwnProperty(keyType) ? keyType : KeyType.KEY_NONE, + get: function () { return _internal.keyType; }, + set: function (value) { + if (value instanceof InternalData && KeyType.hasOwnProperty(value.keyType)) { + _internal.keyType = value.keyType; + } + }, enumerable: true }, rawKey: { - value: converter.toString(rawKey), + get: function () { return _internal.rawKey; }, + set: function (value) { + if (value instanceof InternalData) { + _internal.rawKey = value.rawKey; + } + }, enumerable: true } }); @@ -140,6 +165,8 @@ Key.prototype.save = function() { } ]); + var that = this; + native.call('KeyManager_saveKey', { key: this, rawKey: stripPemString(args.rawKey) @@ -149,6 +176,7 @@ Key.prototype.save = function() { args.errorCallback(native.getErrorObject(msg)); } } else { + updateInternalData(that, {rawKey: stripPemString(args.rawKey), keyType: msg.keyType}); native.callIfPossible(args.successCallback); } }); diff --git a/src/keymanager/keymanager_instance.cc b/src/keymanager/keymanager_instance.cc index 6dcb648f..d94c80f6 100755 --- a/src/keymanager/keymanager_instance.cc +++ b/src/keymanager/keymanager_instance.cc @@ -360,6 +360,16 @@ void KeyManagerInstance::SaveKey(const picojson::value& args, } common::tools::ReportError(result, &response->get()); } else { + //as key_type is determined inside key manager during storing keys + //we have to get saved key and check key_type again. + ckmc_key_s * saved_key = nullptr; + ret = ckmc_get_key(alias.c_str(), pass.c_str(), &saved_key); + if (CKMC_ERROR_NONE == ret) { + picojson::object& obj = response->get(); + obj["keyType"] = picojson::value(KeyTypeToString(saved_key->key_type)); + ckmc_key_free(saved_key); + } + common::tools::ReportSuccess(response->get()); }