diff --git a/src/js/crypto/rsa.js b/src/js/crypto/rsa.js index 2f73fdd..7e2c86c 100644 --- a/src/js/crypto/rsa.js +++ b/src/js/crypto/rsa.js @@ -73,20 +73,34 @@ app.crypto.RSA = function(forge) { return privateKey.decrypt(ctUtf8); }; - this.sign = function(input) { + /** + * Signs an Array of Base64 encoded parts with the private key + * @param parts [Array] Array of Base64 encoded parts + * @return [String] The Base64 encoded signature + */ + this.sign = function(parts) { var sha = forge.md.sha256.create(); - sha.update(input); + parts.forEach(function(i) { + sha.update(forge.util.decode64(i)); + }); - var sig = privateKey.sign(sha); - return forge.util.encode64(sig); + return forge.util.encode64(privateKey.sign(sha)); }; - this.verify = function(input, sig) { + /** + * Verifies an Array of Base64 encoded parts with the public key + * @param parts [Array] Array of Base64 encoded parts + * @param sig [String] The Base64 encoded signatrure + * @return [bool] if the verification was successful + */ + this.verify = function(parts, sig) { // parse base64 signature to utf8 var sigUtf8 = forge.util.decode64(sig); var sha = forge.md.sha256.create(); - sha.update(input); + parts.forEach(function(i) { + sha.update(forge.util.decode64(i)); + }); return publicKey.verify(sha.digest().getBytes(), sigUtf8); }; diff --git a/test/unit/rsa-test.js b/test/unit/rsa-test.js index 30620c2..9b31b1f 100644 --- a/test/unit/rsa-test.js +++ b/test/unit/rsa-test.js @@ -40,11 +40,11 @@ test("Decrypt", 1, function() { }); test("Sign", 1, function() { - rsa_test.sig = rsa_test.rsa.sign(rsa_test.test_message); + rsa_test.sig = rsa_test.rsa.sign([btoa('iv'), btoa(rsa_test.test_message)]); ok(rsa_test.sig); }); test("Verify", 1, function() { - var res = rsa_test.rsa.verify(rsa_test.test_message, rsa_test.sig); + var res = rsa_test.rsa.verify([btoa('iv'), btoa(rsa_test.test_message)], rsa_test.sig); ok(res); }); \ No newline at end of file