{"version":3,"sources":["meteor://💻app/packages/srp/biginteger.js","meteor://💻app/packages/srp/srp.js"],"names":["BigInteger","dbits","canary","j_lm","a","b","c","fromNumber","fromString","nbi","am1","i","x","w","j","n","v","Math","floor","am2","xl","xh","l","h","m","am3","prototype","am","DB","DM","DV","BI_FP","FV","pow","F1","F2","BI_RM","BI_RC","Array","rr","vv","charCodeAt","int2char","charAt","intAt","s","bnpCopyTo","r","t","bnpFromInt","nbv","fromInt","bnpFromString","k","fromRadix","length","mi","sh","clamp","ZERO","subTo","bnpClamp","bnToString","negate","toString","toRadix","km","d","p","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","max","bnpLShiftTo","bs","cbs","bm","ds","bnpRShiftTo","bnpSubTo","min","bnpMultiplyTo","abs","y","bnpSquareTo","bnpDivRemTo","q","pm","pt","copyTo","ts","ms","nsh","lShiftTo","ys","y0","yt","d1","d2","e","dlShiftTo","compareTo","ONE","qd","drShiftTo","rShiftTo","bnMod","divRemTo","Classic","cConvert","mod","cRevert","cReduce","cMulTo","multiplyTo","reduce","cSqrTo","squareTo","convert","revert","mulTo","sqrTo","bnpInvDigit","Montgomery","mp","invDigit","mpl","mph","um","mt2","montConvert","montRevert","montReduce","u0","montSqrTo","montMulTo","bnpIsEven","bnpExp","z","r2","g","bnModPowInt","isEven","exp","bitLength","modPowInt","bnClone","bnIntValue","bnByteValue","bnShortValue","bnpChunkSize","LN2","log","bnSigNum","bnpToRadix","signum","cs","chunkSize","intValue","substr","bnpFromRadix","dMultiply","dAddOffset","bnpFromNumber","testBit","bitwiseTo","shiftLeft","op_or","isProbablePrime","nextBytes","bnToByteArray","bnEquals","bnMin","bnMax","bnpBitwiseTo","op","f","op_and","bnAnd","bnOr","op_xor","bnXor","op_andnot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","lbit","bnGetLowestSetBit","cbit","bnBitCount","bnTestBit","bnpChangeBit","bnSetBit","changeBit","bnClearBit","bnFlipBit","bnpAddTo","bnAdd","addTo","bnSubtract","bnMultiply","bnDivide","bnRemainder","bnDivideAndRemainder","bnpDMultiply","bnpDAddOffset","NullExp","nNop","nMulTo","nSqrTo","bnPow","bnpMultiplyLowerTo","bnpMultiplyUpperTo","Barrett","q3","mu","divide","barrettConvert","barrettRevert","barrettReduce","multiplyUpperTo","multiplyLowerTo","barrettSqrTo","barrettMulTo","bnModPow","k1","g2","is1","bnGCD","clone","getLowestSetBit","bnpModInt","bnModInverse","ac","u","subtract","add","lowprimes","lplim","bnIsProbablePrime","modInt","millerRabin","bnpMillerRabin","n1","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","SRP","generateVerifier","password","options","params","paramsFromOptions","salt","Random","secret","identity","hashedIdentityAndPassword","hash","xi","N","verifier","matchVerifier","String","_defaults","SHA256","toLowerCase","ret","forEach","Error"],"mappings":"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","file":"/packages/srp.js","sourcesContent":["/// METEOR WRAPPER\nBigInteger = (function () {\n\n\n/// BEGIN jsbn.js\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n}\n\n/* XXX METEOR XXX\nif(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse \n*/\n\n{ // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n/// BEGIN jsbn2.js\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n// Extended JavaScript BN functions, required for RSA private ops.\n\n// (public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n// (public) return value as integer\nfunction bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n// (public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n// (protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n// (public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n}\n\n// (protected) convert to radix string\nfunction bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n}\n\n// (protected) convert from radix string\nfunction bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n// (protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n// (protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n}\n\n// (public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n// (public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n// (public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n// (public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n// (public) ~this\nfunction bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n}\n\n// (public) this << n\nfunction bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n}\n\n// (public) this >> n\nfunction bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n}\n\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n}\n\n// (public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n}\n\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n}\n\n// (public) return number of set bits\nfunction bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n}\n\n// (public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n}\n\n// (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n}\n\n// (public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n// (public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n// (public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n// (public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n// (public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n// (public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n}\n\n// (protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n}\n\n// (protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n}\n\n// A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n// (public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n// (protected) r = lower n words of \"this * a\", a.t <= n\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n}\n\n// (protected) r = \"this * a\" without lower n words, n > 0\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n}\n\n// Barrett modular reduction\nfunction Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n}\n\nfunction barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n// x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n}\n\n// (protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n}\n\n// (public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n// (public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n}\n\n// (protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n a.fromInt(lowprimes[i]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n}\n\n// protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n// public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n// BigInteger interfaces not implemented in jsbn:\n\n// BigInteger(int signum, byte[] magnitude)\n// double doubleValue()\n// float floatValue()\n// int hashCode()\n// long longValue()\n// static BigInteger valueOf(long val)\n\n/// METEOR WRAPPER\nreturn BigInteger;\n})();\n","// This package contains just enough of the original SRP code to\n// support the backwards-compatibility upgrade path.\n//\n// An SRP (and possibly also accounts-srp) package should eventually be\n// available in Atmosphere so that users can continue to use SRP if they\n// want to.\n\nSRP = {};\n\n/**\n * Generate a new SRP verifier. Password is the plaintext password.\n *\n * options is optional and can include:\n * - identity: String. The SRP username to user. Mostly this is passed\n * in for testing. Random UUID if not provided.\n * - hashedIdentityAndPassword: combined identity and password, already hashed, for the SRP to bcrypt upgrade path.\n * - salt: String. A salt to use. Mostly this is passed in for\n * testing. Random UUID if not provided.\n * - SRP parameters (see _defaults and paramsFromOptions below)\n */\nSRP.generateVerifier = function (password, options) {\n var params = paramsFromOptions(options);\n\n var salt = (options && options.salt) || Random.secret();\n\n var identity;\n var hashedIdentityAndPassword = options && options.hashedIdentityAndPassword;\n if (!hashedIdentityAndPassword) {\n identity = (options && options.identity) || Random.secret();\n hashedIdentityAndPassword = params.hash(identity + \":\" + password);\n }\n\n var x = params.hash(salt + hashedIdentityAndPassword);\n var xi = new BigInteger(x, 16);\n var v = params.g.modPow(xi, params.N);\n\n return {\n identity: identity,\n salt: salt,\n verifier: v.toString(16)\n };\n};\n\n// For use with check().\nSRP.matchVerifier = {\n identity: String,\n salt: String,\n verifier: String\n};\n\n\n/**\n * Default parameter values for SRP.\n *\n */\nvar _defaults = {\n hash: function (x) { return SHA256(x).toLowerCase(); },\n N: new BigInteger(\"EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD15DC7D7B46154D6B6CE8EF4AD69B15D4982559B297BCF1885C529F566660E57EC68EDBC3C05726CC02FD4CBF4976EAA9AFD5138FE8376435B9FC61D2FC0EB06E3\", 16),\n g: new BigInteger(\"2\")\n};\n_defaults.k = new BigInteger(\n _defaults.hash(\n _defaults.N.toString(16) +\n _defaults.g.toString(16)),\n 16);\n\n/**\n * Process an options hash to create SRP parameters.\n *\n * Options can include:\n * - hash: Function. Defaults to SHA256.\n * - N: String or BigInteger. Defaults to 1024 bit value from RFC 5054\n * - g: String or BigInteger. Defaults to 2.\n * - k: String or BigInteger. Defaults to hash(N, g)\n */\nvar paramsFromOptions = function (options) {\n if (!options) // fast path\n return _defaults;\n\n var ret = { ..._defaults };\n\n ['N', 'g', 'k'].forEach(function (p) {\n if (options[p]) {\n if (typeof options[p] === \"string\")\n ret[p] = new BigInteger(options[p], 16);\n else if (options[p] instanceof BigInteger)\n ret[p] = options[p];\n else\n throw new Error(\"Invalid parameter: \" + p);\n }\n });\n\n if (options.hash)\n ret.hash = function (x) { return options.hash(x).toLowerCase(); };\n\n if (!options.k && (options.N || options.g || options.hash)) {\n ret.k = ret.hash(ret.N.toString(16) + ret.g.toString(16));\n }\n\n return ret;\n};\n"]}