refactored rsa sign and verify to take base64 arrays

This commit is contained in:
Tankred Hase 2013-05-14 18:15:47 +02:00
parent 6bbcd8cab7
commit c264dfc994
2 changed files with 22 additions and 8 deletions

View File

@ -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);
};

View File

@ -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);
});