mirror of
https://github.com/moparisthebest/mail
synced 2025-03-03 10:11:47 -05:00
refactored rsa sign and verify to take base64 arrays
This commit is contained in:
parent
6bbcd8cab7
commit
c264dfc994
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user