From d6bfbac892249739ebbc6788218878b9b6e2a7e6 Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Sat, 7 Jun 2014 05:24:37 +0200 Subject: [PATCH] Cleanup --- bcrypt.js | 26 ++-- bcrypt.min.js | 72 +++++------ src/{base64.js => base64/native.js} | 24 +--- src/bcrypt.js | 12 +- src/isaac.js | 185 ---------------------------- src/utf8/native.js | 2 + 6 files changed, 56 insertions(+), 265 deletions(-) rename src/{base64.js => base64/native.js} (86%) delete mode 100644 src/isaac.js diff --git a/bcrypt.js b/bcrypt.js index d4c0137..46b96f3 100644 --- a/bcrypt.js +++ b/bcrypt.js @@ -59,21 +59,13 @@ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1]; - /** - * Length-delimited base64 encoder and decoder. - * @type {Object.} - * @private - */ - var base64 = {}; - /** * Encodes a byte array to base64 with up to len bytes of input. * @param {Array.} b Byte array * @param {number} len Maximum input length * @returns {string} - * @private */ - base64.encode = function(b, len) { + function base64_encode(b, len) { var off = 0; var rs = []; var c1; @@ -103,16 +95,15 @@ rs.push(BASE64_CODE[c2 & 0x3f]); } return rs.join(''); - }; + } /** * Decodes a base64 encoded string to up to len bytes of output. * @param {string} s String to decode * @param {number} len Maximum output length * @returns {Array.} - * @private */ - base64.decode = function(s, len) { + function base64_decode(s, len) { var off = 0; var slen = s.length; var olen = 0; @@ -156,7 +147,8 @@ res.push(rs[off].charCodeAt(0)); } return res; - }; + } + // ref: http://mths.be/fromcodepoint v0.1.0 by @mathias /* if (!String.fromCodePoint) { (function () { @@ -843,7 +835,7 @@ var passwordb = _stringToBytes(s); var saltb = []; - saltb = base64.decode(real_salt, BCRYPT_SALT_LEN); + saltb = base64_decode(real_salt, BCRYPT_SALT_LEN); /** * Finishs hashing. @@ -859,8 +851,8 @@ if (rounds < 10) res.push("0"); res.push(rounds.toString()); res.push("$"); - res.push(base64.encode(saltb, saltb.length)); - res.push(base64.encode(bytes, C_ORIG.length * 4 - 1)); + res.push(base64_encode(saltb, saltb.length)); + res.push(base64_encode(bytes, C_ORIG.length * 4 - 1)); return res.join(''); } @@ -925,7 +917,7 @@ salt.push(rounds.toString()); salt.push('$'); try { - salt.push(base64.encode(_randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); + salt.push(base64_encode(_randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); return salt.join(''); } catch(err) { throw(err); diff --git a/bcrypt.min.js b/bcrypt.min.js index 5af647a..28caa42 100644 --- a/bcrypt.min.js +++ b/bcrypt.min.js @@ -4,39 +4,39 @@ see: https://github.com/dcodeIO/bcrypt.js for details */ function n(p){throw p;}var q=null; -(function(p){function u(d,a,b,f){for(var c,e=d[a],l=d[a+1],e=e^b[0],h=0;14>=h;)c=f[e>>24&255],c+=f[256|e>>16&255],c^=f[512|e>>8&255],c+=f[768|e&255],l^=c^b[++h],c=f[l>>24&255],c+=f[256|l>>16&255],c^=f[512|l>>8&255],c+=f[768|l&255],e^=c^b[++h];d[a]=l^b[17];d[a+1]=e;return d}function s(d,a){var b,f=0;for(b=0;4>b;b++)f=f<<8|d[a]&255,a=(a+1)%d.length;return{key:f,a:a}}function y(d,a,b){for(var f=0,c=[0,0],e=a.length,l=b.length,h=0;hk;k++)for(m=0;m>1;m++)u(e,m<<1,h,g);p=[];for(k=0;k>24&255)>>>0),p.push((e[k]>>16&255)>>>0),p.push((e[k]>>8&255)>>>0),p.push((e[k]&255)>>>0);return f?(f(q,p),q):p}f&&z(c);return q}var e=B.slice(),l=e.length;(4>b||31=a&&(a=d.codePointAt(f),65535a&&n(RangeError("Illegal code point: "+a));128>a?c.push(a&127):2048>a?(c.push(a>>6&31|192),c.push(a&63|128)):65536>a?(c.push(a>>12&15|224),c.push(a>>6&63|128),c.push(a&63|128)):1114112>a?(c.push(a>>18&7|240),c.push(a>>12& -63|128),c.push(a>>6&63|128),c.push(a&63|128)):n(RangeError("Illegal code point: "+a))}return b}function w(d,a,b){function f(a){var b=[];b.push("$2");"a"<=c&&b.push(c);b.push("$");10>l&&b.push("0");b.push(l.toString());b.push("$");b.push(v.b(h,h.length));b.push(v.b(a,4*B.length-1));return b.join("")}var c,e;("$"!=a.charAt(0)||"2"!=a.charAt(1))&&n(Error("Invalid salt version: "+a.substring(0,2)));"$"==a.charAt(2)?(c=String.fromCharCode(0),e=3):(c=a.charAt(2),("a"!=c||"$"!=a.charAt(3))&&n(Error("Invalid salt revision: "+ -a.substring(2,4))),e=4);"$"=a||a>d.length)&&n(Error("Invalid 'len': "+a));b>2&63]);c=(c&3)<<4;if(b>=a){f.push(t[c&63]);break}e=d[b++]&255;c|=e>>4&15;f.push(t[c&63]);c=(e&15)<<2;if(b>=a){f.push(t[c&63]);break}e=d[b++]&255;c|=e>>6&3;f.push(t[c&63]);f.push(t[e&63])}return f.join("")},c:function(d,a){var b=0,f=d.length,c=0,e=[],l,h,g;for(0>=a&& -n(Error("Illegal 'len': "+a));b>>0;g|=(h&48)>>4;e.push(String.fromCharCode(g));if(++c>=a||b>=f)break;g=d.charCodeAt(b++);l=g>>0;g|=(l&60)>>2;e.push(String.fromCharCode(g));if(++c>=a||b>=f)break;g=d.charCodeAt(b++);h=g>>0;g|=h;e.push(String.fromCharCode(g));++c}f=[];for(b=0;bc||c>=d))return a=b.charCodeAt(c),55296<=a&&(56319>=a&&d>c+1)&&(b=b.charCodeAt(c+1),56320<=b&&57343>=b)?1024*(a-55296)+b-56320+65536:a}Object.defineProperty?Object.defineProperty(String.prototype,"codePointAt",{value:d,configurable:!0,writable:!0}):String.prototype.codePointAt=d}();var m={},D=[608135816,2242054355,320440878,57701188,2752067618, -698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],E=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327, -2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482, -3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577, -3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633, -3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398, -577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021, -1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881, -3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764, -504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977, -3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890, -4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456, -3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486, -2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449, -4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744, -1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170, -1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636, -3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217, -3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505, -3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246, -3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795, -2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661, -2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218, -3463963227,1469046755,985887462],B=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],x=q;m.setRandomPolyfill=function(d){x=d};m.genSaltSync=function(d){d||(d=10);var a;d=d||10;(4>d||31d&&b.push("0");b.push(d.toString());b.push("$");try{b.push(v.b(G(),16)),a=b.join("")}catch(f){n(f)}return a};m.genSalt=function(d,a,b){"function"==typeof a&&(b=a,a=-1);var f;"function"==typeof d?(b=d,f=10):f=parseInt(d,10);"function"!= -typeof b&&n(Error("Illegal or missing 'callback': "+b));z(function(){try{var a=m.genSaltSync(f);b(q,a)}catch(d){b(d,q)}})};m.hashSync=function(d,a){a||(a=10);"number"==typeof a&&(a=m.genSaltSync(a));return w(d,a)};m.hash=function(d,a,b){"function"!=typeof b&&n(Error("Illegal 'callback': "+b));"number"==typeof a?m.genSalt(a,function(a,c){w(d,c,b)}):w(d,a,b)};m.compareSync=function(d,a){("string"!=typeof d||"string"!=typeof a)&&n(Error("Illegal argument types: "+typeof d+", "+typeof a));60!=a.length&& -n(Error("Illegal hash length: "+a.length+" != 60"));for(var b=m.hashSync(d,a.substr(0,a.length-31)),f=b.length==a.length,c=b.length=e&&(a.length>=e&&b[e]!=a[e])&&(f=!1);return f};m.compare=function(d,a,b){"function"!=typeof b&&n(Error("Illegal 'callback': "+b));m.hash(d,a.substr(0,29),function(d,c){b(d,a===c)})};m.getRounds=function(d){"string"!=typeof d&&n(Error("Illegal type of 'hash': "+typeof d));return parseInt(d.split("$")[2],10)};m.getSalt=function(d){"string"!= -typeof d&&n(Error("Illegal type of 'hash': "+typeof d));60!=d.length&&n(Error("Illegal hash length: "+d.length+" != 60"));return d.substring(0,29)};"undefined"!=typeof module&&module.exports?module.exports=m:"undefined"!=typeof define&&define.amd?define("bcrypt",function(){return m}):(p.dcodeIO||(p.dcodeIO={}),p.dcodeIO.bcrypt=m)})(this); +(function(p){function v(b,a){var d=0,f=[],c,e;for((0>=a||a>b.length)&&n(Error("Invalid 'len': "+a));d>2&63]);c=(c&3)<<4;if(d>=a){f.push(s[c&63]);break}e=b[d++]&255;c|=e>>4&15;f.push(s[c&63]);c=(e&15)<<2;if(d>=a){f.push(s[c&63]);break}e=b[d++]&255;c|=e>>6&3;f.push(s[c&63]);f.push(s[e&63])}return f.join("")}function C(b){for(var a=0,d=b.length,f=0,c=[],e,k,g;af;){g=b.charCodeAt(a++);e=g>>0;g|=(k&48)>>4;c.push(String.fromCharCode(g));if(16<=++f||a>=d)break;g=b.charCodeAt(a++);e=g>>0;g|=(e&60)>>2;c.push(String.fromCharCode(g));if(16<=++f||a>=d)break;g=b.charCodeAt(a++);k=g>>0;g|=k;c.push(String.fromCharCode(g));++f}b=[];for(a=0;a=g;)c=f[e>>24&255],c+=f[256|e>>16&255],c^=f[512|e>>8&255],c+=f[768|e& +255],k^=c^d[++g],c=f[k>>24&255],c+=f[256|k>>16&255],c^=f[512|k>>8&255],c+=f[768|k&255],e^=c^d[++g];b[a]=k^d[17];b[a+1]=e;return b}function t(b,a){var d,f=0;for(d=0;4>d;d++)f=f<<8|b[a]&255,a=(a+1)%b.length;return{key:f,a:a}}function y(b,a,d){for(var f=0,c=[0,0],e=a.length,k=d.length,g=0;gh;h++)for(m=0;m>1;m++)u(e,m<<1,g,l);p=[];for(h=0;h>24&255)>>>0),p.push((e[h]>>16&255)>>>0),p.push((e[h]>>8&255)>>>0),p.push((e[h]&255)>>>0);return f?(f(q,p),q):p}f&&z(c);return q}var e=B.slice(),k=e.length;(4>d||31=a&&(a=b.codePointAt(f),65535a&&n(RangeError("Illegal code point: "+a));128>a?c.push(a&127):2048>a?(c.push(a>>6&31|192),c.push(a&63|128)):65536>a?(c.push(a>>12&15|224),c.push(a>>6&63|128),c.push(a&63|128)):1114112>a?(c.push(a>>18&7|240),c.push(a>>12&63|128),c.push(a>>6&63|128),c.push(a&63|128)):n(RangeError("Illegal code point: "+a))}return d}function w(b,a,d){function f(a){var b=[];b.push("$2"); +"a"<=c&&b.push(c);b.push("$");10>k&&b.push("0");b.push(k.toString());b.push("$");b.push(v(g,g.length));b.push(v(a,4*B.length-1));return b.join("")}var c,e;("$"!=a.charAt(0)||"2"!=a.charAt(1))&&n(Error("Invalid salt version: "+a.substring(0,2)));"$"==a.charAt(2)?(c=String.fromCharCode(0),e=3):(c=a.charAt(2),("a"!=c||"$"!=a.charAt(3))&&n(Error("Invalid salt revision: "+a.substring(2,4))),e=4);"$"c||c>=f))return a=b.charCodeAt(c),55296<=a&&(56319>=a&&f>c+1)&&(b=b.charCodeAt(c+1),56320<=b&&57343>=b)?1024*(a-55296)+b-56320+65536:a}Object.defineProperty?Object.defineProperty(String.prototype,"codePointAt",{value:b,configurable:!0,writable:!0}):String.prototype.codePointAt=b}();var m={},E=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022, +953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],F=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955, +2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571, +1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319, +422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905, +3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355, +4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022, +1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441, +406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025, +2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244, +1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373, +3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262, +4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612, +3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692, +1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131, +926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629, +1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686, +3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694, +1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139, +3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935, +471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674, +3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975, +2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462], +B=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],x=q;m.setRandomPolyfill=function(b){x=b};m.genSaltSync=function(b){b||(b=10);var a;b=b||10;(4>b||31b&&d.push("0");d.push(b.toString());d.push("$");try{d.push(v(H(),16)),a=d.join("")}catch(f){n(f)}return a};m.genSalt=function(b,a,d){"function"==typeof a&&(d=a,a=-1);var f;"function"==typeof b?(d=b,f=10):f=parseInt(b,10);"function"!=typeof d&&n(Error("Illegal or missing 'callback': "+ +d));z(function(){try{var a=m.genSaltSync(f);d(q,a)}catch(b){d(b,q)}})};m.hashSync=function(b,a){a||(a=10);"number"==typeof a&&(a=m.genSaltSync(a));return w(b,a)};m.hash=function(b,a,d){"function"!=typeof d&&n(Error("Illegal 'callback': "+d));"number"==typeof a?m.genSalt(a,function(a,c){w(b,c,d)}):w(b,a,d)};m.compareSync=function(b,a){("string"!=typeof b||"string"!=typeof a)&&n(Error("Illegal argument types: "+typeof b+", "+typeof a));60!=a.length&&n(Error("Illegal hash length: "+a.length+" != 60")); +for(var d=m.hashSync(b,a.substr(0,a.length-31)),f=d.length==a.length,c=d.length=e&&(a.length>=e&&d[e]!=a[e])&&(f=!1);return f};m.compare=function(b,a,d){"function"!=typeof d&&n(Error("Illegal 'callback': "+d));m.hash(b,a.substr(0,29),function(b,c){d(b,a===c)})};m.getRounds=function(b){"string"!=typeof b&&n(Error("Illegal type of 'hash': "+typeof b));return parseInt(b.split("$")[2],10)};m.getSalt=function(b){"string"!=typeof b&&n(Error("Illegal type of 'hash': "+ +typeof b));60!=b.length&&n(Error("Illegal hash length: "+b.length+" != 60"));return b.substring(0,29)};"undefined"!=typeof module&&module.exports?module.exports=m:"undefined"!=typeof define&&define.amd?define("bcrypt",function(){return m}):(p.dcodeIO||(p.dcodeIO={}),p.dcodeIO.bcrypt=m)})(this); diff --git a/src/base64.js b/src/base64/native.js similarity index 86% rename from src/base64.js rename to src/base64/native.js index 169bc1f..e3b60c7 100644 --- a/src/base64.js +++ b/src/base64/native.js @@ -1,10 +1,3 @@ -// #ifdef UNDEFINED -// -// TODO (dcode): Now that it's optimized, find out if we really need this. The only advantage over using Buffer to do -// this actually is decoding to a fixed output length, which is much faster than calling Buffer.toString for each -// character separately. -// -// #endif /** * @type {Array.} * @const @@ -31,21 +24,13 @@ var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1]; -/** - * Length-delimited base64 encoder and decoder. - * @type {Object.} - * @private - */ -var base64 = {}; - /** * Encodes a byte array to base64 with up to len bytes of input. * @param {Array.} b Byte array * @param {number} len Maximum input length * @returns {string} - * @private */ -base64.encode = function(b, len) { +function base64_encode(b, len) { var off = 0; var rs = []; var c1; @@ -75,16 +60,15 @@ base64.encode = function(b, len) { rs.push(BASE64_CODE[c2 & 0x3f]); } return rs.join(''); -}; +} /** * Decodes a base64 encoded string to up to len bytes of output. * @param {string} s String to decode * @param {number} len Maximum output length * @returns {Array.} - * @private */ -base64.decode = function(s, len) { +function base64_decode(s, len) { var off = 0; var slen = s.length; var olen = 0; @@ -128,4 +112,4 @@ base64.decode = function(s, len) { res.push(rs[off].charCodeAt(0)); } return res; -}; \ No newline at end of file +} diff --git a/src/bcrypt.js b/src/bcrypt.js index 4bfc56c..bd60c59 100644 --- a/src/bcrypt.js +++ b/src/bcrypt.js @@ -33,9 +33,7 @@ */ (function(global) { - // #include "base64.js" - - // #include "utf8/codepoint.js" + // #include "base64/native.js" // #include "utf8/native.js" @@ -590,7 +588,7 @@ var passwordb = _stringToBytes(s); var saltb = []; - saltb = base64.decode(real_salt, BCRYPT_SALT_LEN); + saltb = base64_decode(real_salt, BCRYPT_SALT_LEN); /** * Finishs hashing. @@ -606,8 +604,8 @@ if (rounds < 10) res.push("0"); res.push(rounds.toString()); res.push("$"); - res.push(base64.encode(saltb, saltb.length)); - res.push(base64.encode(bytes, C_ORIG.length * 4 - 1)); + res.push(base64_encode(saltb, saltb.length)); + res.push(base64_encode(bytes, C_ORIG.length * 4 - 1)); return res.join(''); } @@ -672,7 +670,7 @@ salt.push(rounds.toString()); salt.push('$'); try { - salt.push(base64.encode(_randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); + salt.push(base64_encode(_randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); return salt.join(''); } catch(err) { throw(err); diff --git a/src/isaac.js b/src/isaac.js deleted file mode 100644 index 2f81620..0000000 --- a/src/isaac.js +++ /dev/null @@ -1,185 +0,0 @@ -// ifdef UNDEFINED -/* - Copyright (c) 2012 Yves-Marie K. Rinquin - Copyright (c) 2013 Daniel Wirtz - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -// endif -var Isaac = (function() { - - /** - * Constructs a new Isaac pseudo random number generator. - * @class Isaac PRNG. - * @constructor - */ - var Isaac = function() { - /** @type {Array.} */ - this.m = Array(256); - /** @type {number} */ - this.acc = 0; - /** @type {number} */ - this.brs = 0; - /** @type {number} */ - this.cnt = 0; - /** @type {Array.} */ - this.r = Array(256); - /** @type {number} */ - this.gnt = 0; - - // Pre-seed - this.seed(Math.random() * 0xffffffff); - }; - - /** - * Safely adds two 32-bit integers. - * @param {number} x - * @param {number} y - * @returns {number} - */ - Isaac.add = function(x, y) { - var lsb = (x & 0xffff) + (y & 0xffff); - var msb = (x >>> 16) + (y >>> 16) + (lsb >>> 16); - return (msb << 16) | (lsb & 0xffff); - }; - - /** - * Resets the internal state. - */ - Isaac.prototype.reset = function() { - this.acc = this.brs = this.cnt = 0; - for(var i = 0; i < 256; ++i) - this.m[i] = this.r[i] = 0; - this.gnt = 0; - }; - - /** - * Seeds the generator. - * @param s Seed - */ - Isaac.prototype.seed = function(s) { - var a, b, c, d, e, f, g, h, i; - - // seeding the seeds of love - a = b = c = d = e = f = g = h = 0x9e3779b9; // the golden ratio - - if(s && typeof(s) === 'number') s = [s]; - if(s instanceof Array) { - this.reset(); - for(i = 0; i < s.length; i++) - this.r[i & 0xff] += (typeof(s[i]) === 'number') ? s[i] : 0; - } - - // seed mixer - function mix() { - a ^= b << 11; d = Isaac.add(d, a); b = Isaac.add(b, c); - b ^= c >>> 2; e = Isaac.add(e, b); c = Isaac.add(c, d); - c ^= d << 8; f = Isaac.add(f, c); d = Isaac.add(d, e); - d ^= e >>> 16; g = Isaac.add(g, d); e = Isaac.add(e, f); - e ^= f << 10; h = Isaac.add(h, e); f = Isaac.add(f, g); - f ^= g >>> 4; a = Isaac.add(a, f); g = Isaac.add(g, h); - g ^= h << 8; b = Isaac.add(b, g); h = Isaac.add(h, a); - h ^= a >>> 9; c = Isaac.add(c, h); a = Isaac.add(a, b); - } - - for(i = 0; i < 4; i++) mix(); // scramble it - for(i = 0; i < 256; i += 8) { - if(s) { // use all the information in the seed - a = Isaac.add(a, this.r[i + 0]); b = Isaac.add(b, this.r[i + 1]); - c = Isaac.add(c, this.r[i + 2]); d = Isaac.add(d, this.r[i + 3]); - e = Isaac.add(e, this.r[i + 4]); f = Isaac.add(f, this.r[i + 5]); - g = Isaac.add(g, this.r[i + 6]); h = Isaac.add(h, this.r[i + 7]); - } - mix(); - // fill in m[] with messy stuff - this.m[i + 0] = a; this.m[i + 1] = b; this.m[i + 2] = c; this.m[i + 3] = d; - this.m[i + 4] = e; this.m[i + 5] = f; this.m[i + 6] = g; this.m[i + 7] = h; - } - if (s) { // do a second pass to make all of the seed affect all of m[] - for(i = 0; i < 256; i += 8) { - a = Isaac.add(a, this.m[i + 0]); b = Isaac.add(b, this.m[i + 1]); - c = Isaac.add(c, this.m[i + 2]); d = Isaac.add(d, this.m[i + 3]); - e = Isaac.add(e, this.m[i + 4]); f = Isaac.add(f, this.m[i + 5]); - g = Isaac.add(g, this.m[i + 6]); h = Isaac.add(h, this.m[i + 7]); - mix(); - // fill in m[] with messy stuff (again) - this.m[i + 0] = a; this.m[i + 1] = b; this.m[i + 2] = c; this.m[i + 3] = d; - this.m[i + 4] = e; this.m[i + 5] = f; this.m[i + 6] = g; this.m[i + 7] = h; - } - } - this.prng(); // fill in the first set of results */ - this.gnt = 256; // prepare to use the first set of results */ - }; - - /** - * Runs the generator. - * @param {number=} n Number of runs, defaults to 1 - */ - Isaac.prototype.prng = function(n) { - var i, x, y; - - n = n && typeof(n) === 'number' ? Math.abs(Math.floor(n)) : 1; - - while(n--) { - this.cnt = Isaac.add(this.cnt, 1); - this.brs = Isaac.add(this.brs, this.cnt); - - for(i = 0; i < 256; i++) { - switch(i & 3) { - case 0: this.acc ^= this.acc << 13; break; - case 1: this.acc ^= this.acc >>> 6; break; - case 2: this.acc ^= this.acc << 2; break; - case 3: this.acc ^= this.acc >>> 16; break; - } - this.acc = Isaac.add(this.m[(i + 128) & 0xff], this.acc); x = this.m[i]; - this.m[i] = y = Isaac.add(this.m[(x >>> 2) & 0xff], Isaac.add(this.acc, this.brs)); - this.r[i] = this.brs = Isaac.add(this.m[(y >>> 10) & 0xff], x); - } - } - }; - - /** - * Generates a random 32-bit number. - * @returns {number} - */ - Isaac.prototype.rand = function() { - if(!this.gnt--) { - this.prng(); - this.gnt = 255; - } - return this.r[this.gnt]; - }; - - /** - * Generates a cryptographically secure array of bytes. - * @param {number} len Length - * @returns {Array.} Random bytes - */ - Isaac.prototype.randomBytes = function(len) { - var a = [], r; - for (var i=0; i