summaryrefslogtreecommitdiff
path: root/src/srp_calculate.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/srp_calculate.js')
-rw-r--r--src/srp_calculate.js27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/srp_calculate.js b/src/srp_calculate.js
index a1cbe51..e32def8 100644
--- a/src/srp_calculate.js
+++ b/src/srp_calculate.js
@@ -50,14 +50,13 @@ srp.Calculate = function() {
};
this.hashHex = function(hexString) {
- return this.hash(hex2a(hexString));
+ return SHA256(hex2a(hexString));
};
this.hash = function(string) {
- return SHA256(string);
+ return SHA256(utf8Encode(string));
};
-
this.isInvalidEphemeral = function(a) {
return (g.modPow(a, N) == 0);
};
@@ -117,4 +116,26 @@ srp.Calculate = function() {
}
return str;
}
+
+ function utf8Encode(string) {
+ string = string.replace(/\r\n/g,"\n");
+ var utftext = "";
+
+ for (var n = 0; n < string.length; n++) {
+ var c = string.charCodeAt(n);
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ }
+ else if((c > 127) && (c < 2048)) {
+ utftext += String.fromCharCode((c >> 6) | 192);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+ else {
+ utftext += String.fromCharCode((c >> 12) | 224);
+ utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+ }
+ return utftext;
+ }
};