diff options
Diffstat (limited to 'webclient/lib/sjcl.js')
| -rw-r--r-- | webclient/lib/sjcl.js | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/webclient/lib/sjcl.js b/webclient/lib/sjcl.js index 24d3e3b..9730862 100644 --- a/webclient/lib/sjcl.js +++ b/webclient/lib/sjcl.js @@ -67,6 +67,10 @@ var sjcl = { } } }; + +if(typeof module != 'undefined' && module.exports){ + module.exports = sjcl; +} /** @fileOverview Low-level AES implementation. * * This file contains a low-level implementation of AES, optimized for @@ -1762,7 +1766,7 @@ sjcl.random = { if (!i.match(/^[a-z0-9]+$/i)) { throw new sjcl.exception.invalid("json encode: invalid property name"); } - out += comma + i + ':'; + out += comma + '"' + i + '"' + ':'; comma = ','; switch (typeof obj[i]) { @@ -1800,13 +1804,13 @@ sjcl.random = { } var a = str.replace(/^\{|\}$/g, '').split(/,/), out={}, i, m; for (i=0; i<a.length; i++) { - if (!(m=a[i].match(/^([a-z][a-z0-9]*):(?:(\d+)|"([a-z0-9+\/%*_.@=\-]*)")$/i))) { + if (!(m=a[i].match(/^(?:(["']?)([a-z][a-z0-9]*)\1):(?:(\d+)|"([a-z0-9+\/%*_.@=\-]*)")$/i))) { throw new sjcl.exception.invalid("json decode: this isn't json!"); } - if (m[2]) { - out[m[1]] = parseInt(m[2],10); + if (m[3]) { + out[m[2]] = parseInt(m[3],10); } else { - out[m[1]] = m[1].match(/^(ct|salt|iv)$/) ? sjcl.codec.base64.toBits(m[3]) : unescape(m[3]); + out[m[2]] = m[2].match(/^(ct|salt|iv)$/) ? sjcl.codec.base64.toBits(m[4]) : unescape(m[4]); } } return out; |
