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