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);
|
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();
|
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(privateKey.sign(sha));
|
||||||
return forge.util.encode64(sig);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
// parse base64 signature to utf8
|
||||||
var sigUtf8 = forge.util.decode64(sig);
|
var sigUtf8 = forge.util.decode64(sig);
|
||||||
|
|
||||||
var sha = forge.md.sha256.create();
|
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);
|
return publicKey.verify(sha.digest().getBytes(), sigUtf8);
|
||||||
};
|
};
|
||||||
|
@ -40,11 +40,11 @@ test("Decrypt", 1, function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Sign", 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);
|
ok(rsa_test.sig);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Verify", 1, function() {
|
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);
|
ok(res);
|
||||||
});
|
});
|
Loading…
x
Reference in New Issue
Block a user