From b60df56157ee1fd0bd4938799bac05a62fda91a1 Mon Sep 17 00:00:00 2001 From: lookshe Date: Sat, 14 Mar 2015 20:45:20 +0100 Subject: initial commit from working version --- .../com/hurlant/math/MontgomeryReduction.as | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as (limited to 'signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as') diff --git a/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as b/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as new file mode 100755 index 0000000..47a16d6 --- /dev/null +++ b/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as @@ -0,0 +1,85 @@ +package com.hurlant.math +{ + use namespace bi_internal; + /** + * Montgomery reduction + */ + internal class MontgomeryReduction implements IReduction + { + private var m:BigInteger; + private var mp:int; + private var mpl:int; + private var mph:int; + private var um:int; + private var mt2:int; + public function MontgomeryReduction(m:BigInteger) { + this.m = m; + mp = m.invDigit(); + mpl = mp & 0x7fff; + mph = mp>>15; + um = (1<<(BigInteger.DB-15))-1; + mt2 = 2*m.t; + } + /** + * xR mod m + */ + public function convert(x:BigInteger):BigInteger { + var r:BigInteger = new BigInteger; + x.abs().dlShiftTo(m.t, r); + r.divRemTo(m, null, r); + if (x.s<0 && r.compareTo(BigInteger.ZERO)>0) { + m.subTo(r,r); + } + return r; + } + /** + * x/R mod m + */ + public function revert(x:BigInteger):BigInteger { + var r:BigInteger = new BigInteger; + x.copyTo(r); + reduce(r); + return r; + } + /** + * x = x/R mod m (HAC 14.32) + */ + public function reduce(x:BigInteger):void { + while (x.t<=mt2) { // pad x so am has enough room later + x.a[x.t++] = 0; + } + for (var i:int=0; i>15)*mpl)&um)<<15))&BigInteger.DM; + // use am to combine the multiply-shift-add into one call + j = i+m.t; + x.a[j] += m.am(0, u0, x, i, 0, m.t); + // propagate carry + while (x.a[j]>=BigInteger.DV) { + x.a[j] -= BigInteger.DV; + x.a[++j]++; + } + } + x.clamp(); + x.drShiftTo(m.t, x); + if (x.compareTo(m)>=0) { + x.subTo(m,x); + } + } + /** + * r = "x^2/R mod m"; x != r + */ + public function sqrTo(x:BigInteger, r:BigInteger):void { + x.squareTo(r); + reduce(r); + } + /** + * r = "xy/R mod m"; x,y != r + */ + public function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void { + x.multiplyTo(y,r); + reduce(r); + } + } +} \ No newline at end of file -- cgit v1.2.3