}
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
}
});
}
]);
+ var that = this;
+
native.call('KeyManager_saveKey', {
key: this,
rawKey: stripPemString(args.rawKey)
args.errorCallback(native.getErrorObject(msg));
}
} else {
+ updateInternalData(that, {rawKey: stripPemString(args.rawKey), keyType: msg.keyType});
native.callIfPossible(args.successCallback);
}
});
}
common::tools::ReportError(result, &response->get<picojson::object>());
} 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<picojson::object>();
+ obj["keyType"] = picojson::value(KeyTypeToString(saved_key->key_type));
+ ckmc_key_free(saved_key);
+ }
+
common::tools::ReportSuccess(response->get<picojson::object>());
}