This is an automated email from the ASF dual-hosted git repository. kmccusker pushed a commit to branch issue7 in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-js.git
commit 8631f9ec6c4bcfc6290f42ab45cc6e7daf55556a Author: Kealan McCusker <[email protected]> AuthorDate: Wed Jun 26 13:26:52 2019 +0100 sync code --- src/ecp.js | 25 ++++++++++++++++--------- src/ecp2.js | 23 +++++++++++++++-------- src/ecp4.js | 23 +++++++++++++++-------- src/ecp8.js | 23 +++++++++++++++-------- src/pair.js | 31 ++++++++++++++----------------- src/pair192.js | 31 ++++++++++++++----------------- src/pair256.js | 31 ++++++++++++++----------------- 7 files changed, 103 insertions(+), 84 deletions(-) diff --git a/src/ecp.js b/src/ecp.js index 97c2918..e6c078e 100644 --- a/src/ecp.js +++ b/src/ecp.js @@ -23,13 +23,21 @@ var ECP = function(ctx) { "use strict"; /* Constructor */ - var ECP = function() { - this.x = new ctx.FP(0); - this.y = new ctx.FP(1); - if (ECP.CURVETYPE != ECP.EDWARDS) { - this.z = new ctx.FP(0); + var ECP = function(input) { + if (input instanceof ECP) { + // copy constructor + this.x = new ctx.FP(input.x); + this.y = new ctx.FP(input.y); + this.z = new ctx.FP(input.z); } else { - this.z = new ctx.FP(1); + // default constructor (point at infinity) + this.x = new ctx.FP(0); + this.y = new ctx.FP(1); + if (ECP.CURVETYPE != ECP.EDWARDS) { + this.z = new ctx.FP(0); + } else { + this.z = new ctx.FP(1); + } } }; @@ -1337,8 +1345,7 @@ var ECP = function(ctx) { return ECP; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - ECP: ECP - }; + module.exports.ECP = ECP; } diff --git a/src/ecp2.js b/src/ecp2.js index b8ce9af..a813edd 100644 --- a/src/ecp2.js +++ b/src/ecp2.js @@ -22,11 +22,19 @@ var ECP2 = function(ctx) { "use strict"; - /* Constructor, set this=O */ - var ECP2 = function() { - this.x = new ctx.FP2(0); - this.y = new ctx.FP2(1); - this.z = new ctx.FP2(0); + /* Constructor */ + var ECP2 = function(input) { + if (input instanceof ECP2) { + // copy constructor + this.x = new ctx.FP2(input.x); + this.y = new ctx.FP2(input.y); + this.z = new ctx.FP2(input.z); + } else { + // default constructor (point at infinity) + this.x = new ctx.FP2(0); + this.y = new ctx.FP2(1); + this.z = new ctx.FP2(0); + } }; ECP2.prototype = { @@ -779,8 +787,7 @@ var ECP2 = function(ctx) { return ECP2; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - ECP2: ECP2 - }; + module.exports.ECP2 = ECP2; } diff --git a/src/ecp4.js b/src/ecp4.js index 82fbce3..9726b89 100644 --- a/src/ecp4.js +++ b/src/ecp4.js @@ -22,11 +22,19 @@ var ECP4 = function(ctx) { "use strict"; - /* Constructor, set this=O */ - var ECP4 = function() { - this.x = new ctx.FP4(0); - this.y = new ctx.FP4(1); - this.z = new ctx.FP4(0); + /* Constructor */ + var ECP4 = function(input) { + if (input instanceof ECP4) { + // copy constructor + this.x = new ctx.FP4(input.x); + this.y = new ctx.FP4(input.y); + this.z = new ctx.FP4(input.z); + } else { + // default constructor (point at infinity) + this.x = new ctx.FP4(0); + this.y = new ctx.FP4(1); + this.z = new ctx.FP4(0); + } }; ECP4.prototype = { @@ -838,8 +846,7 @@ var ECP4 = function(ctx) { return ECP4; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - ECP4: ECP4 - }; + module.exports.ECP4 = ECP4; } diff --git a/src/ecp8.js b/src/ecp8.js index 593f739..644f27f 100644 --- a/src/ecp8.js +++ b/src/ecp8.js @@ -22,11 +22,19 @@ var ECP8 = function(ctx) { "use strict"; - /* Constructor, set this=O */ - var ECP8 = function() { - this.x = new ctx.FP8(0); - this.y = new ctx.FP8(1); - this.z = new ctx.FP8(0); + /* Constructor */ + var ECP8 = function(input) { + if (input instanceof ECP8) { + // copy constructor + this.x = new ctx.FP8(input.x); + this.y = new ctx.FP8(input.y); + this.z = new ctx.FP8(input.z); + } else { + // default constructor (point at infinity) + this.x = new ctx.FP8(0); + this.y = new ctx.FP8(1); + this.z = new ctx.FP8(0); + } }; ECP8.prototype = { @@ -1044,8 +1052,7 @@ var ECP8 = function(ctx) { return ECP8; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - ECP8: ECP8 - }; + module.exports.ECP8 = ECP8; } diff --git a/src/pair.js b/src/pair.js index 36e60d0..bf009a7 100644 --- a/src/pair.js +++ b/src/pair.js @@ -127,7 +127,7 @@ var PAIR = function(ctx) { return r; }, -/* prepare for multi-pairing */ + /* prepare for multi-pairing */ initmp: function() { var r=[]; for (var i=0;i<ctx.ECP.ATE_BITS;i++) @@ -135,7 +135,7 @@ var PAIR = function(ctx) { return r; }, -/* basic Miller loop */ + /* basic Miller loop */ miller: function(r) { var res=new ctx.FP12(1); for (var i=ctx.ECP.ATE_BITS-1; i>=1; i--) @@ -151,7 +151,7 @@ var PAIR = function(ctx) { return res; }, -/* Accumulate another set of line functions for n-pairing */ + /* Accumulate another set of line functions for n-pairing */ another: function(r,P1,Q1) { var f; @@ -309,8 +309,7 @@ var PAIR = function(ctx) { return r; }, - /* Optimal R-ate double pairing e(P,Q).e(R,S) */ - + /* Optimal R-ate double pairing e(P,Q).e(R,S) */ ate2: function(P1, Q1, R1, S1) { var fa, fb, f, x, n, n3, K, lv, lv2, Qx, Qy, Sx, Sy, A, B, NP,NR,r, nb, bt, @@ -444,11 +443,11 @@ var PAIR = function(ctx) { r.frob(f); r.frob(f); r.mul(lv); - if (r.isunity()) - { - r.zero(); - return r; - } +// if (r.isunity()) +// { +// r.zero(); +// return r; +// } /* Hard part of final exp */ if (ctx.ECP.CURVE_PAIRING_TYPE == ctx.ECP.BN) { lv.copy(r); @@ -565,9 +564,8 @@ var PAIR = function(ctx) { } }; -/* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ - PAIR.lbits = function(n3,n) - { + /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ + PAIR.lbits = function(n3,n) { n.rcopy(ctx.ROM_CURVE.CURVE_Bnx); if (ctx.ECP.CURVE_PAIRING_TYPE==ctx.ECP.BN) { @@ -585,7 +583,7 @@ var PAIR = function(ctx) { n3.pmul(3); n3.norm(); return n3.nbits(); - }, + }; /* GLV method */ PAIR.glv = function(e) { @@ -827,8 +825,7 @@ var PAIR = function(ctx) { return PAIR; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - PAIR: PAIR - }; + module.exports.PAIR = PAIR; } diff --git a/src/pair192.js b/src/pair192.js index 74e9c72..b01ced3 100644 --- a/src/pair192.js +++ b/src/pair192.js @@ -125,7 +125,7 @@ var PAIR192 = function(ctx) { return r; }, -/* prepare for multi-pairing */ + /* prepare for multi-pairing */ initmp: function() { var r=[]; for (var i=0;i<ctx.ECP.ATE_BITS;i++) @@ -133,7 +133,7 @@ var PAIR192 = function(ctx) { return r; }, -/* basic Miller loop */ + /* basic Miller loop */ miller: function(r) { var res=new ctx.FP24(1); for (var i=ctx.ECP.ATE_BITS-1; i>=1; i--) @@ -149,16 +149,15 @@ var PAIR192 = function(ctx) { return res; }, -/* Accumulate another set of line functions for n-pairing */ + /* Accumulate another set of line functions for n-pairing */ another: function(r,P1,Q1) { - var f; var n=new ctx.BIG(0); var n3=new ctx.BIG(0); var lv,lv2; var bt; -// P is needed in affine form for line function, Q for (Qx,Qy) extraction + // P is needed in affine form for line function, Q for (Qx,Qy) extraction var P=new ctx.ECP4(); P.copy(P1); P.affine(); var Q=new ctx.ECP(); Q.copy(Q1); Q.affine(); @@ -335,11 +334,11 @@ var PAIR192 = function(ctx) { lv.copy(r); r.frob(f,4); r.mul(lv); - if (r.isunity()) - { - r.zero(); - return r; - } +// if (r.isunity()) +// { +// r.zero(); +// return r; +// } /* Hard part of final exp */ // Ghamman & Fouotsa Method t7=new ctx.FP24(r); t7.usqr(); @@ -415,15 +414,14 @@ var PAIR192 = function(ctx) { } }; -/* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ - PAIR192.lbits = function(n3,n) - { + /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ + PAIR192.lbits = function(n3,n) { n.rcopy(ctx.ROM_CURVE.CURVE_Bnx); n3.copy(n); n3.pmul(3); n3.norm(); return n3.nbits(); - }, + }; /* GLV method */ PAIR192.glv = function(e) { @@ -607,8 +605,7 @@ var PAIR192 = function(ctx) { return PAIR192; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - PAIR192: PAIR192 - }; + module.exports.PAIR192 = PAIR192; } diff --git a/src/pair256.js b/src/pair256.js index 5dca245..b48126f 100644 --- a/src/pair256.js +++ b/src/pair256.js @@ -125,7 +125,7 @@ var PAIR256 = function(ctx) { return r; }, -/* prepare for multi-pairing */ + /* prepare for multi-pairing */ initmp: function() { var r=[]; for (var i=0;i<ctx.ECP.ATE_BITS;i++) @@ -133,7 +133,7 @@ var PAIR256 = function(ctx) { return r; }, -/* basic Miller loop */ + /* basic Miller loop */ miller: function(r) { var res=new ctx.FP48(1); for (var i=ctx.ECP.ATE_BITS-1; i>=1; i--) @@ -149,16 +149,15 @@ var PAIR256 = function(ctx) { return res; }, -/* Accumulate another set of line functions for n-pairing */ + /* Accumulate another set of line functions for n-pairing */ another: function(r,P1,Q1) { - var f; var n=new ctx.BIG(0); var n3=new ctx.BIG(0); var lv,lv2; var bt; -// P is needed in affine form for line function, Q for (Qx,Qy) extraction + // P is needed in affine form for line function, Q for (Qx,Qy) extraction var P=new ctx.ECP8(); P.copy(P1); P.affine(); var Q=new ctx.ECP(); Q.copy(Q1); Q.affine(); @@ -335,11 +334,11 @@ var PAIR256 = function(ctx) { lv.copy(r); r.frob(f,8); r.mul(lv); - if (r.isunity()) - { - r.zero(); - return r; - } +// if (r.isunity()) +// { +// r.zero(); +// return r; +// } /* Hard part of final exp */ // Ghamman & Fouotsa Method t7=new ctx.FP48(r); t7.usqr(); @@ -486,15 +485,14 @@ var PAIR256 = function(ctx) { } }; -/* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ - PAIR256.lbits = function(n3,n) - { + /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ + PAIR256.lbits = function(n3,n) { n.rcopy(ctx.ROM_CURVE.CURVE_Bnx); n3.copy(n); n3.pmul(3); n3.norm(); return n3.nbits(); - }, + }; /* GLV method */ PAIR256.glv = function(e) { @@ -684,8 +682,7 @@ var PAIR256 = function(ctx) { return PAIR256; }; +// CommonJS module exports if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { - PAIR256: PAIR256 - }; + module.exports.PAIR256 = PAIR256; }
