From cf8734a45228ad8d3dbbdea90a62ab77288e3e96 Mon Sep 17 00:00:00 2001 From: Przemyslaw Ciezkowski Date: Thu, 23 Apr 2015 15:20:30 +0200 Subject: [PATCH] [KeyManager] Implement JS createSignature and verifySignature [Verification] tizen.keymanager.createSignature("message", "alias", "HASH_SHA1", "PADDING_PKCS1", "password", function(s){console.log(s)}, function(){}); tizen.keymanager.verifySignature("signature", "message", "alias", "HASH_SHA1", "PADDING_PKCS1", "password", function(){}, function(){}); Change-Id: I3b5bf2a3f4e2a8c84fca51f0719aebc258a89f6d Signed-off-by: Przemyslaw Ciezkowski --- src/keymanager/keymanager_api.js | 121 +++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/src/keymanager/keymanager_api.js b/src/keymanager/keymanager_api.js index 698da82f..5498eb80 100644 --- a/src/keymanager/keymanager_api.js +++ b/src/keymanager/keymanager_api.js @@ -25,6 +25,19 @@ var EllipticCurveType = { "EC_SECP384R1": "EC_SECP384R1" }; +var HashAlgorithmType = { + "HASH_NONE": "HASH_NONE", + "HASH_SHA1": "HASH_SHA1", + "HASH_SHA256": "HASH_SHA256", + "HASH_SHA384": "HASH_SHA384", + "HASH_SHA512": "HASH_SHA512" +}; + +var RSAPaddingAlgorithm = { + "PADDING_PKCS1": "PADDING_PKCS1", + "PADDING_X931": "PADDING_X931" +}; + var KeyType = { "KEY_NONE": "KEY_NONE", "KEY_RSA_PUBLIC": "KEY_RSA_PUBLIC", @@ -344,11 +357,119 @@ KeyManager.prototype.denyAccessControl = function() { }; KeyManager.prototype.createSignature = function() { + var args = validator.validateArgs(arguments, [ + { + name: "message", + type: validator.Types.STRING + }, + { + name: "privKeyAlias", + type: validator.Types.STRING + }, + { + name: 'hashAlgorithmType', + type: validator.Types.ENUM, + values: Object.keys(HashAlgorithmType) + }, + { + name: 'padding', + type: validator.Types.ENUM, + values: Object.keys(RSAPaddingAlgorithm) + }, + { + name: 'password', + type: validator.Types.STRING, + optional: true + }, + { + name: 'successCallback', + type: validator.Types.FUNCTION, + nullable: true + }, + { + name: 'errorCallback', + type: validator.Types.FUNCTION, + optional: true, + nullable: true + } + ]); + native.call('KeyManager_createSignature', { + message: args.message, + privKeyAlias: args.privKeyAlias, + hashAlgorithmType: args.hashAlgorithmType, + padding: args.padding, + password: args.password ? args.password : null + }, function(msg) { + if (native.isFailure(msg)) { + if (type.isFunction(args.errorCallback)) { + args.errorCallback(native.getErrorObject(msg)); + } + } else { + native.callIfPossible(args.successCallback, native.getResultObject(msg)); + } + }); }; KeyManager.prototype.verifySignature = function() { + var args = validator.validateArgs(arguments, [ + { + name: "signature", + type: validator.Types.STRING + }, + { + name: "message", + type: validator.Types.STRING + }, + { + name: 'pubKeyAlias', + type: validator.Types.STRING + }, + { + name: 'hashAlgorithmType', + type: validator.Types.ENUM, + values: Object.keys(HashAlgorithmType) + }, + { + name: 'padding', + type: validator.Types.ENUM, + values: Object.keys(RSAPaddingAlgorithm) + }, + { + name: 'password', + type: validator.Types.STRING, + optional: true + }, + { + name: 'successCallback', + type: validator.Types.FUNCTION, + optional: true, + nullable: true + }, + { + name: 'errorCallback', + type: validator.Types.FUNCTION, + optional: true, + nullable: true + } + ]); + native.call('KeyManager_verifySignature', { + signature: args.signature, + message: args.message, + pubKeyAlias: args.pubKeyAlias, + hashAlgorithmType: args.hashAlgorithmType, + padding: args.padding, + password: args.password ? args.password : null + }, function(msg) { + if (native.isFailure(msg)) { + if (type.isFunction(args.errorCallback)) { + args.errorCallback(native.getErrorObject(msg)); + } + } else { + native.callIfPossible(args.successCallback); + } + }); }; // expose only basic constructors -- 2.34.1