pixel-react 1.15.21 → 1.15.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/lib/_virtual/aesCipherSuites.js +4 -0
  2. package/lib/_virtual/aesCipherSuites.js.map +1 -0
  3. package/lib/_virtual/asn1-validator.js +4 -0
  4. package/lib/_virtual/asn1-validator.js.map +1 -0
  5. package/lib/_virtual/asn1.js +4 -0
  6. package/lib/_virtual/asn1.js.map +1 -0
  7. package/lib/_virtual/cipherModes.js +4 -0
  8. package/lib/_virtual/cipherModes.js.map +1 -0
  9. package/lib/_virtual/hmac.js +4 -0
  10. package/lib/_virtual/hmac.js.map +1 -0
  11. package/lib/_virtual/index11.js +2 -2
  12. package/lib/_virtual/index12.js +2 -2
  13. package/lib/_virtual/index13.js +2 -2
  14. package/lib/_virtual/index14.js +4 -0
  15. package/lib/_virtual/index14.js.map +1 -0
  16. package/lib/_virtual/index2.js +5 -3
  17. package/lib/_virtual/index2.js.map +1 -1
  18. package/lib/_virtual/index3.js +4 -2
  19. package/lib/_virtual/index3.js.map +1 -1
  20. package/lib/_virtual/index4.js +2 -4
  21. package/lib/_virtual/index4.js.map +1 -1
  22. package/lib/_virtual/index5.js +4 -2
  23. package/lib/_virtual/index5.js.map +1 -1
  24. package/lib/_virtual/index6.js +2 -2
  25. package/lib/_virtual/index7.js +2 -6
  26. package/lib/_virtual/index7.js.map +1 -1
  27. package/lib/_virtual/index8.js +6 -2
  28. package/lib/_virtual/index8.js.map +1 -1
  29. package/lib/_virtual/index9.js +2 -2
  30. package/lib/_virtual/md5.js +4 -0
  31. package/lib/_virtual/md5.js.map +1 -0
  32. package/lib/_virtual/mgf1.js +4 -0
  33. package/lib/_virtual/mgf1.js.map +1 -0
  34. package/lib/_virtual/oids.js +4 -0
  35. package/lib/_virtual/oids.js.map +1 -0
  36. package/lib/_virtual/pem.js +4 -0
  37. package/lib/_virtual/pem.js.map +1 -0
  38. package/lib/_virtual/pkcs1.js +4 -0
  39. package/lib/_virtual/pkcs1.js.map +1 -0
  40. package/lib/_virtual/pkcs12.js +4 -0
  41. package/lib/_virtual/pkcs12.js.map +1 -0
  42. package/lib/_virtual/pkcs7.js +4 -0
  43. package/lib/_virtual/pkcs7.js.map +1 -0
  44. package/lib/_virtual/pkcs7asn1.js +4 -0
  45. package/lib/_virtual/pkcs7asn1.js.map +1 -0
  46. package/lib/_virtual/pki.js +4 -0
  47. package/lib/_virtual/pki.js.map +1 -0
  48. package/lib/_virtual/prime.js +4 -0
  49. package/lib/_virtual/prime.js.map +1 -0
  50. package/lib/_virtual/prng.js +4 -0
  51. package/lib/_virtual/prng.js.map +1 -0
  52. package/lib/_virtual/pss.js +4 -0
  53. package/lib/_virtual/pss.js.map +1 -0
  54. package/lib/_virtual/random.js +4 -0
  55. package/lib/_virtual/random.js.map +1 -0
  56. package/lib/_virtual/sha1.js +4 -0
  57. package/lib/_virtual/sha1.js.map +1 -0
  58. package/lib/_virtual/sha256.js +4 -0
  59. package/lib/_virtual/sha256.js.map +1 -0
  60. package/lib/_virtual/sha512.js +4 -0
  61. package/lib/_virtual/sha512.js.map +1 -0
  62. package/lib/_virtual/ssh.js +4 -0
  63. package/lib/_virtual/ssh.js.map +1 -0
  64. package/lib/_virtual/util.js +4 -0
  65. package/lib/_virtual/util.js.map +1 -0
  66. package/lib/_virtual/x509.js +4 -0
  67. package/lib/_virtual/x509.js.map +1 -0
  68. package/lib/assets/icons/testify_icon.svg.js +6 -0
  69. package/lib/assets/icons/testify_icon.svg.js.map +1 -0
  70. package/lib/assets/icons/testify_loader.svg.js +6 -0
  71. package/lib/assets/icons/testify_loader.svg.js.map +1 -0
  72. package/lib/assets/icons/testify_logo_name.svg.js +6 -0
  73. package/lib/assets/icons/testify_logo_name.svg.js.map +1 -0
  74. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js +3 -1
  75. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js.map +1 -1
  76. package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js +2 -9
  77. package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js.map +1 -1
  78. package/lib/components/Charts/DashboardDonutChart/types.d.ts +1 -1
  79. package/lib/components/ConditionalDropdown/ConditionalDropdown.js +2 -9
  80. package/lib/components/ConditionalDropdown/ConditionalDropdown.js.map +1 -1
  81. package/lib/components/Editor/Editor.js +37 -17
  82. package/lib/components/Editor/Editor.js.map +1 -1
  83. package/lib/components/Icon/iconList.js +6 -0
  84. package/lib/components/Icon/iconList.js.map +1 -1
  85. package/lib/components/MultiSelect/MultiSelect.js +9 -10
  86. package/lib/components/MultiSelect/MultiSelect.js.map +1 -1
  87. package/lib/components/PhoneInput/PhoneInput.js +1 -0
  88. package/lib/components/PhoneInput/PhoneInput.js.map +1 -1
  89. package/lib/components/SessionDropdown/SessionDropdown.js +4 -2
  90. package/lib/components/SessionDropdown/SessionDropdown.js.map +1 -1
  91. package/lib/index.cjs +27423 -379
  92. package/lib/index.cjs.map +1 -1
  93. package/lib/index.d.ts +1 -1
  94. package/lib/node_modules/classnames/index.js +1 -1
  95. package/lib/node_modules/input-format/modules/react/Input.js +1 -1
  96. package/lib/node_modules/js-beautify/js/index.js +1 -1
  97. package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
  98. package/lib/node_modules/js-beautify/js/src/html/index.js +1 -1
  99. package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
  100. package/lib/node_modules/js-beautify/js/src/html/tokenizer.js +1 -1
  101. package/lib/node_modules/js-beautify/js/src/index.js +1 -1
  102. package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
  103. package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
  104. package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
  105. package/lib/node_modules/js-beautify/js/src/javascript/tokenizer.js +1 -1
  106. package/lib/node_modules/node-forge/lib/aes.js +1014 -0
  107. package/lib/node_modules/node-forge/lib/aes.js.map +1 -0
  108. package/lib/node_modules/node-forge/lib/aesCipherSuites.js +286 -0
  109. package/lib/node_modules/node-forge/lib/aesCipherSuites.js.map +1 -0
  110. package/lib/node_modules/node-forge/lib/asn1-validator.js +100 -0
  111. package/lib/node_modules/node-forge/lib/asn1-validator.js.map +1 -0
  112. package/lib/node_modules/node-forge/lib/asn1.js +1379 -0
  113. package/lib/node_modules/node-forge/lib/asn1.js.map +1 -0
  114. package/lib/node_modules/node-forge/lib/baseN.js +181 -0
  115. package/lib/node_modules/node-forge/lib/baseN.js.map +1 -0
  116. package/lib/node_modules/node-forge/lib/cipher.js +236 -0
  117. package/lib/node_modules/node-forge/lib/cipher.js.map +1 -0
  118. package/lib/node_modules/node-forge/lib/cipherModes.js +936 -0
  119. package/lib/node_modules/node-forge/lib/cipherModes.js.map +1 -0
  120. package/lib/node_modules/node-forge/lib/des.js +467 -0
  121. package/lib/node_modules/node-forge/lib/des.js.map +1 -0
  122. package/lib/node_modules/node-forge/lib/ed25519.js +1108 -0
  123. package/lib/node_modules/node-forge/lib/ed25519.js.map +1 -0
  124. package/lib/node_modules/node-forge/lib/forge.js +23 -0
  125. package/lib/node_modules/node-forge/lib/forge.js.map +1 -0
  126. package/lib/node_modules/node-forge/lib/hmac.js +158 -0
  127. package/lib/node_modules/node-forge/lib/hmac.js.map +1 -0
  128. package/lib/node_modules/node-forge/lib/index.js +70 -0
  129. package/lib/node_modules/node-forge/lib/index.js.map +1 -0
  130. package/lib/node_modules/node-forge/lib/jsbn.js +1481 -0
  131. package/lib/node_modules/node-forge/lib/jsbn.js.map +1 -0
  132. package/lib/node_modules/node-forge/lib/kem.js +178 -0
  133. package/lib/node_modules/node-forge/lib/kem.js.map +1 -0
  134. package/lib/node_modules/node-forge/lib/log.js +325 -0
  135. package/lib/node_modules/node-forge/lib/log.js.map +1 -0
  136. package/lib/node_modules/node-forge/lib/md.all.js +28 -0
  137. package/lib/node_modules/node-forge/lib/md.all.js.map +1 -0
  138. package/lib/node_modules/node-forge/lib/md.js +22 -0
  139. package/lib/node_modules/node-forge/lib/md.js.map +1 -0
  140. package/lib/node_modules/node-forge/lib/md5.js +288 -0
  141. package/lib/node_modules/node-forge/lib/md5.js.map +1 -0
  142. package/lib/node_modules/node-forge/lib/mgf.js +24 -0
  143. package/lib/node_modules/node-forge/lib/mgf.js.map +1 -0
  144. package/lib/node_modules/node-forge/lib/mgf1.js +68 -0
  145. package/lib/node_modules/node-forge/lib/mgf1.js.map +1 -0
  146. package/lib/node_modules/node-forge/lib/oids.js +185 -0
  147. package/lib/node_modules/node-forge/lib/oids.js.map +1 -0
  148. package/lib/node_modules/node-forge/lib/pbe.js +966 -0
  149. package/lib/node_modules/node-forge/lib/pbe.js.map +1 -0
  150. package/lib/node_modules/node-forge/lib/pbkdf2.js +209 -0
  151. package/lib/node_modules/node-forge/lib/pbkdf2.js.map +1 -0
  152. package/lib/node_modules/node-forge/lib/pem.js +250 -0
  153. package/lib/node_modules/node-forge/lib/pem.js.map +1 -0
  154. package/lib/node_modules/node-forge/lib/pkcs1.js +273 -0
  155. package/lib/node_modules/node-forge/lib/pkcs1.js.map +1 -0
  156. package/lib/node_modules/node-forge/lib/pkcs12.js +980 -0
  157. package/lib/node_modules/node-forge/lib/pkcs12.js.map +1 -0
  158. package/lib/node_modules/node-forge/lib/pkcs7.js +1073 -0
  159. package/lib/node_modules/node-forge/lib/pkcs7.js.map +1 -0
  160. package/lib/node_modules/node-forge/lib/pkcs7asn1.js +415 -0
  161. package/lib/node_modules/node-forge/lib/pkcs7asn1.js.map +1 -0
  162. package/lib/node_modules/node-forge/lib/pki.js +125 -0
  163. package/lib/node_modules/node-forge/lib/pki.js.map +1 -0
  164. package/lib/node_modules/node-forge/lib/prime.js +297 -0
  165. package/lib/node_modules/node-forge/lib/prime.js.map +1 -0
  166. package/lib/node_modules/node-forge/lib/prng.js +433 -0
  167. package/lib/node_modules/node-forge/lib/prng.js.map +1 -0
  168. package/lib/node_modules/node-forge/lib/pss.js +246 -0
  169. package/lib/node_modules/node-forge/lib/pss.js.map +1 -0
  170. package/lib/node_modules/node-forge/lib/random.js +191 -0
  171. package/lib/node_modules/node-forge/lib/random.js.map +1 -0
  172. package/lib/node_modules/node-forge/lib/rc2.js +382 -0
  173. package/lib/node_modules/node-forge/lib/rc2.js.map +1 -0
  174. package/lib/node_modules/node-forge/lib/rsa.js +1815 -0
  175. package/lib/node_modules/node-forge/lib/rsa.js.map +1 -0
  176. package/lib/node_modules/node-forge/lib/sha1.js +325 -0
  177. package/lib/node_modules/node-forge/lib/sha1.js.map +1 -0
  178. package/lib/node_modules/node-forge/lib/sha256.js +306 -0
  179. package/lib/node_modules/node-forge/lib/sha256.js.map +1 -0
  180. package/lib/node_modules/node-forge/lib/sha512.js +479 -0
  181. package/lib/node_modules/node-forge/lib/sha512.js.map +1 -0
  182. package/lib/node_modules/node-forge/lib/ssh.js +244 -0
  183. package/lib/node_modules/node-forge/lib/ssh.js.map +1 -0
  184. package/lib/node_modules/node-forge/lib/tls.js +4207 -0
  185. package/lib/node_modules/node-forge/lib/tls.js.map +1 -0
  186. package/lib/node_modules/node-forge/lib/util.js +2565 -0
  187. package/lib/node_modules/node-forge/lib/util.js.map +1 -0
  188. package/lib/node_modules/node-forge/lib/x509.js +2986 -0
  189. package/lib/node_modules/node-forge/lib/x509.js.map +1 -0
  190. package/lib/node_modules/prop-types/index.js +1 -1
  191. package/lib/node_modules/react-async-script/lib/esm/async-script-loader.js +1 -1
  192. package/lib/node_modules/react-google-recaptcha/lib/esm/recaptcha.js +1 -1
  193. package/lib/node_modules/react-is/index.js +1 -1
  194. package/lib/node_modules/react-phone-number-input/modules/CountryIcon.js +1 -1
  195. package/lib/node_modules/react-phone-number-input/modules/CountrySelect.js +1 -1
  196. package/lib/node_modules/react-phone-number-input/modules/Flag.js +1 -1
  197. package/lib/node_modules/react-phone-number-input/modules/InputBasic.js +1 -1
  198. package/lib/node_modules/react-phone-number-input/modules/InputSmart.js +1 -1
  199. package/lib/node_modules/react-phone-number-input/modules/InternationalIcon.js +1 -1
  200. package/lib/node_modules/react-phone-number-input/modules/PhoneInputWithCountry.js +1 -1
  201. package/lib/node_modules/react-phone-number-input/modules/PropTypes.js +1 -1
  202. package/lib/node_modules/scheduler/index.js +1 -1
  203. package/lib/node_modules/use-context-selector/dist/index.js +1 -1
  204. package/lib/styles.css +1 -1
  205. package/lib/styles.css.map +1 -1
  206. package/lib/utils/getEncryptedData/getEncryptedData.js +10 -13
  207. package/lib/utils/getEncryptedData/getEncryptedData.js.map +1 -1
  208. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsbn.js","sources":["../../../../node_modules/node-forge/lib/jsbn.js"],"sourcesContent":["// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\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/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\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 this.data = [];\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}\nforge.jsbn.BigInteger = BigInteger;\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.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[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.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[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.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<<dbits)-1);\nBigInteger.prototype.DV = (1<<dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2,BI_FP);\nBigInteger.prototype.F1 = BI_FP-dbits;\nBigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr,vv;\nrr = \"0\".charCodeAt(0);\nfor(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) { return BI_RM.charAt(n); }\nfunction intAt(s,i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c==null)?-1:c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for(var i = this.t-1; i >= 0; --i) r.data[i] = this.data[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.data[0] = x;\n else if(x < -1) this.data[0] = x+this.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.data[this.t++] = x;\n else if(sh+k > this.DB) {\n this.data[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n this.data[this.t++] = (x>>(this.DB-sh));\n } else\n this.data[this.t-1] |= x<<sh;\n sh += k;\n if(sh >= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this.data[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n }\n this.clamp();\n if(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s&this.DM;\n while(this.t > 0 && this.data[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<<k)-1, d, m = false, r = \"\", i = this.t;\n var p = this.DB-(i*this.DB)%k;\n if(i-- > 0) {\n if(p < this.DB && (d = this.data[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this.data[i]&((1<<p)-1))<<(k-p);\n d |= this.data[--i]>>(p+=this.DB-k);\n } else {\n d = (this.data[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 (this.s<0)?-r:r;\n while(--i >= 0) if((r=this.data[i]-a.data[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.data[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.data[i+n] = this.data[i];\n for(i = n-1; i >= 0; --i) r.data[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.data[i-n] = this.data[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<<cbs)-1;\n var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n for(i = this.t-1; i >= 0; --i) {\n r.data[i+ds+1] = (this.data[i]>>cbs)|c;\n c = (this.data[i]&bm)<<bs;\n }\n for(i = ds-1; i >= 0; --i) r.data[i] = 0;\n r.data[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)-1;\n r.data[0] = this.data[ds]>>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r.data[i-ds-1] |= (this.data[i]&bm)<<cbs;\n r.data[i-ds] = this.data[i]>>bs;\n }\n if(bs > 0) r.data[this.t-ds-1] |= (this.s&bm)<<cbs;\n r.t = this.t-ds;\n r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this.data[i]-a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while(i < a.t) {\n c -= a.data[i];\n r.data[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.data[i++] = this.DV+c;\n else if(c > 0) r.data[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.data[i] = 0;\n for(i = 0; i < y.t; ++i) r.data[i+x.t] = x.am(0,y.data[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.data[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x.data[i],r,2*i,0,1);\n if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r.data[i+x.t] -= x.DV;\n r.data[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r.data[r.t-1] += x.am(i,x.data[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.data[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y.data[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<<this.F1)+((ys>1)?y.data[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n y.dlShiftTo(j,t);\n if(r.compareTo(t) >= 0) {\n r.data[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.data[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r.data[--i]==y0)?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);\n if((r.data[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.data[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.data[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.data[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x.data[i]*mp mod DV\n var j = x.data[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x.data[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.data[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x.data[j] >= x.DV) { x.data[j] -= x.DV; x.data[++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.data[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<<i)) > 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// jsbn2 lib\n\n//Copyright (c) 2005-2009 Tom Wu\n//All Rights Reserved.\n//See \"LICENSE\" for details (See jsbn.js for LICENSE).\n\n//Extended JavaScript BN functions, required for RSA private ops.\n\n//Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n\n//(public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n//(public) return value as integer\nfunction bnIntValue() {\nif(this.s < 0) {\n if(this.t == 1) return this.data[0]-this.DV;\n else if(this.t == 0) return -1;\n} else if(this.t == 1) return this.data[0];\nelse if(this.t == 0) return 0;\n// assumes 16 < DB < 32\nreturn ((this.data[1]&((1<<(32-this.DB))-1))<<this.DB)|this.data[0];\n}\n\n//(public) return value as byte\nfunction bnByteValue() { return (this.t==0)?this.s:(this.data[0]<<24)>>24; }\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this.data[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() {\nif(this.s < 0) return -1;\nelse if(this.t <= 0 || (this.t == 1 && this.data[0] <= 0)) return 0;\nelse return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\nif(b == null) b = 10;\nif(this.signum() == 0 || b < 2 || b > 36) return \"0\";\nvar cs = this.chunkSize(b);\nvar a = Math.pow(b,cs);\nvar d = nbv(a), y = nbi(), z = nbi(), r = \"\";\nthis.divRemTo(d,y,z);\nwhile(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n}\nreturn z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s,b) {\nthis.fromInt(0);\nif(b == null) b = 10;\nvar cs = this.chunkSize(b);\nvar d = Math.pow(b,cs), mi = false, j = 0, w = 0;\nfor(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}\nif(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n}\nif(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\nif(\"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)) // 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} 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<<t)-1); else x[0] = 0;\n this.fromString(x,256);\n}\n}\n\n//(public) convert to bigendian byte array\nfunction bnToByteArray() {\nvar i = this.t, r = new Array();\nr[0] = this.s;\nvar p = this.DB-(i*this.DB)%8, d, k = 0;\nif(i-- > 0) {\n if(p < this.DB && (d = this.data[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.data[i]&((1<<p)-1))<<(8-p);\n d |= this.data[--i]>>(p+=this.DB-8);\n } else {\n d = (this.data[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}\nreturn 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) {\nvar i, f, m = Math.min(a.t,this.t);\nfor(i = 0; i < m; ++i) r.data[i] = op(this.data[i],a.data[i]);\nif(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r.data[i] = op(this.data[i],f);\n r.t = this.t;\n} else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r.data[i] = op(f,a.data[i]);\n r.t = a.t;\n}\nr.s = op(this.s,a.s);\nr.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() {\nvar r = nbi();\nfor(var i = 0; i < this.t; ++i) r.data[i] = this.DM&~this.data[i];\nr.t = this.t;\nr.s = ~this.s;\nreturn r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\nvar r = nbi();\nif(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\nreturn r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\nvar r = nbi();\nif(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\nreturn r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\nif(x == 0) return -1;\nvar r = 0;\nif((x&0xffff) == 0) { x >>= 16; r += 16; }\nif((x&0xff) == 0) { x >>= 8; r += 8; }\nif((x&0xf) == 0) { x >>= 4; r += 4; }\nif((x&3) == 0) { x >>= 2; r += 2; }\nif((x&1) == 0) ++r;\nreturn r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\nfor(var i = 0; i < this.t; ++i)\n if(this.data[i] != 0) return i*this.DB+lbit(this.data[i]);\nif(this.s < 0) return this.t*this.DB;\nreturn -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\nvar r = 0;\nwhile(x != 0) { x &= x-1; ++r; }\nreturn r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\nvar r = 0, x = this.s&this.DM;\nfor(var i = 0; i < this.t; ++i) r += cbit(this.data[i]^x);\nreturn r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\nvar j = Math.floor(n/this.DB);\nif(j >= this.t) return(this.s!=0);\nreturn((this.data[j]&(1<<(n%this.DB)))!=0);\n}\n\n//(protected) this op (1<<n)\nfunction bnpChangeBit(n,op) {\nvar r = BigInteger.ONE.shiftLeft(n);\nthis.bitwiseTo(r,op,r);\nreturn r;\n}\n\n//(public) this | (1<<n)\nfunction bnSetBit(n) { return this.changeBit(n,op_or); }\n\n//(public) this & ~(1<<n)\nfunction bnClearBit(n) { return this.changeBit(n,op_andnot); }\n\n//(public) this ^ (1<<n)\nfunction bnFlipBit(n) { return this.changeBit(n,op_xor); }\n\n//(protected) r = this + a\nfunction bnpAddTo(a,r) {\nvar i = 0, c = 0, m = Math.min(a.t,this.t);\nwhile(i < m) {\n c += this.data[i]+a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n}\nif(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n} else {\n c += this.s;\n while(i < a.t) {\n c += a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n}\nr.s = (c<0)?-1:0;\nif(c > 0) r.data[i++] = c;\nelse if(c < -1) r.data[i++] = this.DV+c;\nr.t = i;\nr.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) {\nvar q = nbi(), r = nbi();\nthis.divRemTo(a,q,r);\nreturn new Array(q,r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\nthis.data[this.t] = this.am(0,n-1,this,0,0,this.t);\n++this.t;\nthis.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\nif(n == 0) return;\nwhile(this.t <= w) this.data[this.t++] = 0;\nthis.data[w] += n;\nwhile(this.data[w] >= this.DV) {\n this.data[w] -= this.DV;\n if(++w >= this.t) this.data[this.t++] = 0;\n ++this.data[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) {\nvar i = Math.min(this.t+a.t,n);\nr.s = 0; // assumes a,this >= 0\nr.t = i;\nwhile(i > 0) r.data[--i] = 0;\nvar j;\nfor(j = r.t-this.t; i < j; ++i) r.data[i+this.t] = this.am(0,a.data[i],r,i,0,this.t);\nfor(j = Math.min(a.t,n); i < j; ++i) this.am(0,a.data[i],r,i,0,n-i);\nr.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;\nvar i = r.t = this.t+a.t-n;\nr.s = 0; // assumes a,this >= 0\nwhile(--i >= 0) r.data[i] = 0;\nfor(i = Math.max(n-this.t,0); i < a.t; ++i)\n r.data[this.t+i-n] = this.am(n-i,a.data[i],r,0,0,this.t+i-n);\nr.clamp();\nr.drShiftTo(1,r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\nthis.r2 = nbi();\nthis.q3 = nbi();\nBigInteger.ONE.dlShiftTo(2*m.t,this.r2);\nthis.mu = this.r2.divide(m);\nthis.m = m;\n}\n\nfunction barrettConvert(x) {\nif(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\nelse if(x.compareTo(this.m) < 0) return x;\nelse { 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) {\nx.drShiftTo(this.m.t-1,this.r2);\nif(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\nthis.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\nthis.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\nwhile(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\nx.subTo(this.r2,x);\nwhile(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) {\nvar i = e.bitLength(), k, r = nbv(1), z;\nif(i <= 0) return r;\nelse if(i < 18) k = 1;\nelse if(i < 48) k = 3;\nelse if(i < 144) k = 4;\nelse if(i < 768) k = 5;\nelse k = 6;\nif(i < 8)\n z = new Classic(m);\nelse if(m.isEven())\n z = new Barrett(m);\nelse\n z = new Montgomery(m);\n\n// precomputation\nvar g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\ng[1] = z.convert(this);\nif(k > 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\nvar j = e.t-1, w, is1 = true, r2 = nbi(), t;\ni = nbits(e.data[j])-1;\nwhile(j >= 0) {\n if(i >= k1) w = (e.data[j]>>(i-k1))&km;\n else {\n w = (e.data[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e.data[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) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\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.data[j]&(1<<i)) == 0) {\n z.sqrTo(r,r2); t = r; r = r2; r2 = t;\n if(--i < 0) { i = this.DB-1; --j; }\n }\n}\nreturn z.revert(r);\n}\n\n//(public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\nvar x = (this.s<0)?this.negate():this.clone();\nvar y = (a.s<0)?a.negate():a.clone();\nif(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\nvar i = x.getLowestSetBit(), g = y.getLowestSetBit();\nif(g < 0) return x;\nif(i < g) g = i;\nif(g > 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n}\nwhile(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 } else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n}\nif(g > 0) y.lShiftTo(g,y);\nreturn y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\nif(n <= 0) return 0;\nvar d = this.DV%n, r = (this.s<0)?n-1:0;\nif(this.t > 0)\n if(d == 0) r = this.data[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this.data[i])%n;\nreturn r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\nvar ac = m.isEven();\nif((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\nvar u = m.clone(), v = this.clone();\nvar a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\nwhile(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 } 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 } 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 } else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n}\nif(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\nif(d.compareTo(m) >= 0) return d.subtract(m);\nif(d.signum() < 0) d.addTo(m,d); else return d;\nif(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) {\nvar i, x = this.abs();\nif(x.t == 1 && x.data[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x.data[0] == lowprimes[i]) return true;\n return false;\n}\nif(x.isEven()) return false;\ni = 1;\nwhile(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}\nreturn x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\nvar n1 = this.subtract(BigInteger.ONE);\nvar k = n1.getLowestSetBit();\nif(k <= 0) return false;\nvar r = n1.shiftRight(k);\nvar prng = bnGetPrng();\nvar a;\nfor(var i = 0; i < t; ++i) {\n // select witness 'a' at random from between 1 and n1\n do {\n a = new BigInteger(this.bitLength(), prng);\n }\n while(a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0);\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}\nreturn true;\n}\n\n// get pseudo random number generator\nfunction bnGetPrng() {\n // create prng with api that matches BigInteger secure random\n return {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n for(var i = 0; i < x.length; ++i) {\n x[i] = Math.floor(Math.random() * 0x0100);\n }\n }\n };\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"],"names":["forge","require$$0","jsbn","dbits","BigInteger","a","b","c","data","fromNumber","fromString","nbi","am1","i","x","w","j","n","v","Math","floor","am2","xl","xh","l","h","m","am3","navigator","prototype","am","appName","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","prng","bnGetPrng","modPow","random","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,178 @@
1
+ import { __require as requireForge } from './forge.js';
2
+ import { __require as requireUtil } from './util.js';
3
+ import { __require as requireRandom } from './random.js';
4
+ import { __require as requireJsbn } from './jsbn.js';
5
+
6
+ /**
7
+ * Javascript implementation of RSA-KEM.
8
+ *
9
+ * @author Lautaro Cozzani Rodriguez
10
+ * @author Dave Longley
11
+ *
12
+ * Copyright (c) 2014 Lautaro Cozzani <lautaro.cozzani@scytl.com>
13
+ * Copyright (c) 2014 Digital Bazaar, Inc.
14
+ */
15
+ var kem;
16
+ var hasRequiredKem;
17
+ function requireKem() {
18
+ if (hasRequiredKem) return kem;
19
+ hasRequiredKem = 1;
20
+ var forge = requireForge();
21
+ requireUtil();
22
+ requireRandom();
23
+ requireJsbn();
24
+ kem = forge.kem = forge.kem || {};
25
+ var BigInteger = forge.jsbn.BigInteger;
26
+
27
+ /**
28
+ * The API for the RSA Key Encapsulation Mechanism (RSA-KEM) from ISO 18033-2.
29
+ */
30
+ forge.kem.rsa = {};
31
+
32
+ /**
33
+ * Creates an RSA KEM API object for generating a secret asymmetric key.
34
+ *
35
+ * The symmetric key may be generated via a call to 'encrypt', which will
36
+ * produce a ciphertext to be transmitted to the recipient and a key to be
37
+ * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which
38
+ * will produce the same secret key for the recipient to use to decrypt a
39
+ * message that was encrypted with the secret key.
40
+ *
41
+ * @param kdf the KDF API to use (eg: new forge.kem.kdf1()).
42
+ * @param options the options to use.
43
+ * [prng] a custom crypto-secure pseudo-random number generator to use,
44
+ * that must define "getBytesSync".
45
+ */
46
+ forge.kem.rsa.create = function (kdf, options) {
47
+ options = options || {};
48
+ var prng = options.prng || forge.random;
49
+ var kem = {};
50
+
51
+ /**
52
+ * Generates a secret key and its encapsulation.
53
+ *
54
+ * @param publicKey the RSA public key to encrypt with.
55
+ * @param keyLength the length, in bytes, of the secret key to generate.
56
+ *
57
+ * @return an object with:
58
+ * encapsulation: the ciphertext for generating the secret key, as a
59
+ * binary-encoded string of bytes.
60
+ * key: the secret key to use for encrypting a message.
61
+ */
62
+ kem.encrypt = function (publicKey, keyLength) {
63
+ // generate a random r where 1 < r < n
64
+ var byteLength = Math.ceil(publicKey.n.bitLength() / 8);
65
+ var r;
66
+ do {
67
+ r = new BigInteger(forge.util.bytesToHex(prng.getBytesSync(byteLength)), 16).mod(publicKey.n);
68
+ } while (r.compareTo(BigInteger.ONE) <= 0);
69
+
70
+ // prepend r with zeros
71
+ r = forge.util.hexToBytes(r.toString(16));
72
+ var zeros = byteLength - r.length;
73
+ if (zeros > 0) {
74
+ r = forge.util.fillString(String.fromCharCode(0), zeros) + r;
75
+ }
76
+
77
+ // encrypt the random
78
+ var encapsulation = publicKey.encrypt(r, 'NONE');
79
+
80
+ // generate the secret key
81
+ var key = kdf.generate(r, keyLength);
82
+ return {
83
+ encapsulation: encapsulation,
84
+ key: key
85
+ };
86
+ };
87
+
88
+ /**
89
+ * Decrypts an encapsulated secret key.
90
+ *
91
+ * @param privateKey the RSA private key to decrypt with.
92
+ * @param encapsulation the ciphertext for generating the secret key, as
93
+ * a binary-encoded string of bytes.
94
+ * @param keyLength the length, in bytes, of the secret key to generate.
95
+ *
96
+ * @return the secret key as a binary-encoded string of bytes.
97
+ */
98
+ kem.decrypt = function (privateKey, encapsulation, keyLength) {
99
+ // decrypt the encapsulation and generate the secret key
100
+ var r = privateKey.decrypt(encapsulation, 'NONE');
101
+ return kdf.generate(r, keyLength);
102
+ };
103
+ return kem;
104
+ };
105
+
106
+ // TODO: add forge.kem.kdf.create('KDF1', {md: ..., ...}) API?
107
+
108
+ /**
109
+ * Creates a key derivation API object that implements KDF1 per ISO 18033-2.
110
+ *
111
+ * @param md the hash API to use.
112
+ * @param [digestLength] an optional digest length that must be positive and
113
+ * less than or equal to md.digestLength.
114
+ *
115
+ * @return a KDF1 API object.
116
+ */
117
+ forge.kem.kdf1 = function (md, digestLength) {
118
+ _createKDF(this, md, 0, digestLength || md.digestLength);
119
+ };
120
+
121
+ /**
122
+ * Creates a key derivation API object that implements KDF2 per ISO 18033-2.
123
+ *
124
+ * @param md the hash API to use.
125
+ * @param [digestLength] an optional digest length that must be positive and
126
+ * less than or equal to md.digestLength.
127
+ *
128
+ * @return a KDF2 API object.
129
+ */
130
+ forge.kem.kdf2 = function (md, digestLength) {
131
+ _createKDF(this, md, 1, digestLength || md.digestLength);
132
+ };
133
+
134
+ /**
135
+ * Creates a KDF1 or KDF2 API object.
136
+ *
137
+ * @param md the hash API to use.
138
+ * @param counterStart the starting index for the counter.
139
+ * @param digestLength the digest length to use.
140
+ *
141
+ * @return the KDF API object.
142
+ */
143
+ function _createKDF(kdf, md, counterStart, digestLength) {
144
+ /**
145
+ * Generate a key of the specified length.
146
+ *
147
+ * @param x the binary-encoded byte string to generate a key from.
148
+ * @param length the number of bytes to generate (the size of the key).
149
+ *
150
+ * @return the key as a binary-encoded string.
151
+ */
152
+ kdf.generate = function (x, length) {
153
+ var key = new forge.util.ByteBuffer();
154
+
155
+ // run counter from counterStart to ceil(length / Hash.len)
156
+ var k = Math.ceil(length / digestLength) + counterStart;
157
+ var c = new forge.util.ByteBuffer();
158
+ for (var i = counterStart; i < k; ++i) {
159
+ // I2OSP(i, 4): convert counter to an octet string of 4 octets
160
+ c.putInt32(i);
161
+
162
+ // digest 'x' and the counter and add the result to the key
163
+ md.start();
164
+ md.update(x + c.getBytes());
165
+ var hash = md.digest();
166
+ key.putBytes(hash.getBytes(digestLength));
167
+ }
168
+
169
+ // truncate to the correct key length
170
+ key.truncate(key.length() - length);
171
+ return key.getBytes();
172
+ };
173
+ }
174
+ return kem;
175
+ }
176
+
177
+ export { requireKem as __require };
178
+ //# sourceMappingURL=kem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kem.js","sources":["../../../../node_modules/node-forge/lib/kem.js"],"sourcesContent":["/**\n * Javascript implementation of RSA-KEM.\n *\n * @author Lautaro Cozzani Rodriguez\n * @author Dave Longley\n *\n * Copyright (c) 2014 Lautaro Cozzani <lautaro.cozzani@scytl.com>\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./jsbn');\n\nmodule.exports = forge.kem = forge.kem || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n/**\n * The API for the RSA Key Encapsulation Mechanism (RSA-KEM) from ISO 18033-2.\n */\nforge.kem.rsa = {};\n\n/**\n * Creates an RSA KEM API object for generating a secret asymmetric key.\n *\n * The symmetric key may be generated via a call to 'encrypt', which will\n * produce a ciphertext to be transmitted to the recipient and a key to be\n * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which\n * will produce the same secret key for the recipient to use to decrypt a\n * message that was encrypted with the secret key.\n *\n * @param kdf the KDF API to use (eg: new forge.kem.kdf1()).\n * @param options the options to use.\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n */\nforge.kem.rsa.create = function(kdf, options) {\n options = options || {};\n var prng = options.prng || forge.random;\n\n var kem = {};\n\n /**\n * Generates a secret key and its encapsulation.\n *\n * @param publicKey the RSA public key to encrypt with.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return an object with:\n * encapsulation: the ciphertext for generating the secret key, as a\n * binary-encoded string of bytes.\n * key: the secret key to use for encrypting a message.\n */\n kem.encrypt = function(publicKey, keyLength) {\n // generate a random r where 1 < r < n\n var byteLength = Math.ceil(publicKey.n.bitLength() / 8);\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(prng.getBytesSync(byteLength)),\n 16).mod(publicKey.n);\n } while(r.compareTo(BigInteger.ONE) <= 0);\n\n // prepend r with zeros\n r = forge.util.hexToBytes(r.toString(16));\n var zeros = byteLength - r.length;\n if(zeros > 0) {\n r = forge.util.fillString(String.fromCharCode(0), zeros) + r;\n }\n\n // encrypt the random\n var encapsulation = publicKey.encrypt(r, 'NONE');\n\n // generate the secret key\n var key = kdf.generate(r, keyLength);\n\n return {encapsulation: encapsulation, key: key};\n };\n\n /**\n * Decrypts an encapsulated secret key.\n *\n * @param privateKey the RSA private key to decrypt with.\n * @param encapsulation the ciphertext for generating the secret key, as\n * a binary-encoded string of bytes.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return the secret key as a binary-encoded string of bytes.\n */\n kem.decrypt = function(privateKey, encapsulation, keyLength) {\n // decrypt the encapsulation and generate the secret key\n var r = privateKey.decrypt(encapsulation, 'NONE');\n return kdf.generate(r, keyLength);\n };\n\n return kem;\n};\n\n// TODO: add forge.kem.kdf.create('KDF1', {md: ..., ...}) API?\n\n/**\n * Creates a key derivation API object that implements KDF1 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF1 API object.\n */\nforge.kem.kdf1 = function(md, digestLength) {\n _createKDF(this, md, 0, digestLength || md.digestLength);\n};\n\n/**\n * Creates a key derivation API object that implements KDF2 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF2 API object.\n */\nforge.kem.kdf2 = function(md, digestLength) {\n _createKDF(this, md, 1, digestLength || md.digestLength);\n};\n\n/**\n * Creates a KDF1 or KDF2 API object.\n *\n * @param md the hash API to use.\n * @param counterStart the starting index for the counter.\n * @param digestLength the digest length to use.\n *\n * @return the KDF API object.\n */\nfunction _createKDF(kdf, md, counterStart, digestLength) {\n /**\n * Generate a key of the specified length.\n *\n * @param x the binary-encoded byte string to generate a key from.\n * @param length the number of bytes to generate (the size of the key).\n *\n * @return the key as a binary-encoded string.\n */\n kdf.generate = function(x, length) {\n var key = new forge.util.ByteBuffer();\n\n // run counter from counterStart to ceil(length / Hash.len)\n var k = Math.ceil(length / digestLength) + counterStart;\n\n var c = new forge.util.ByteBuffer();\n for(var i = counterStart; i < k; ++i) {\n // I2OSP(i, 4): convert counter to an octet string of 4 octets\n c.putInt32(i);\n\n // digest 'x' and the counter and add the result to the key\n md.start();\n md.update(x + c.getBytes());\n var hash = md.digest();\n key.putBytes(hash.getBytes(digestLength));\n }\n\n // truncate to the correct key length\n key.truncate(key.length() - length);\n return key.getBytes();\n };\n}\n"],"names":["forge","require$$0","require$$1","require$$2","require$$3","kem","BigInteger","jsbn","rsa","create","kdf","options","prng","random","encrypt","publicKey","keyLength","byteLength","Math","ceil","n","bitLength","r","util","bytesToHex","getBytesSync","mod","compareTo","ONE","hexToBytes","toString","zeros","length","fillString","String","fromCharCode","encapsulation","key","generate","decrypt","privateKey","kdf1","md","digestLength","_createKDF","kdf2","counterStart","x","ByteBuffer","k","c","i","putInt32","start","update","getBytes","hash","digest","putBytes","truncate"],"mappings":"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","x_google_ignoreList":[0]}