wasmcurves
Advanced tools
Comparing version 0.0.5 to 0.0.7
{ | ||
"name": "wasmcurves", | ||
"version": "0.0.5", | ||
"version": "0.0.7", | ||
"description": "elliptic curves implementations in wasm", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -80,2 +80,15 @@ /* | ||
const shift = nr.modPow(2, q); | ||
const bytesShiftToSmallM =[]; | ||
const bytesSConst =[]; | ||
for (let i=0; i<=maxBits; i++) { | ||
const shiftToSmallM = shift.modPow(bigInt(2).pow(i), q); | ||
const sConst = q.add(bigInt.one).minus(shiftToSmallM).modInv(q); | ||
bytesShiftToSmallM.push(...utils.bigInt2BytesLE(shiftToSmallM.times(R).mod(q), n8f)); | ||
bytesSConst.push(...utils.bigInt2BytesLE(sConst.times(R).mod(q), n8f)); | ||
} | ||
const SHIFT_TO_M = module.alloc( bytesShiftToSmallM ); | ||
const SCONST = module.alloc( bytesSConst ); | ||
function rev(x) { | ||
@@ -424,3 +437,3 @@ let r=0; | ||
1, | ||
c.i32_eq( | ||
c.i32_ge_u( | ||
c.getLocal("i"), | ||
@@ -738,2 +751,258 @@ c.getLocal("ndiv2") | ||
function buildFFTJoinExt() { | ||
const f = module.addFunction(prefix+"_fftJoinExt"); | ||
f.addParam("pBuff1", "i32"); | ||
f.addParam("pBuff2", "i32"); | ||
f.addParam("n", "i32"); | ||
f.addParam("first", "i32"); | ||
f.addParam("inc", "i32"); | ||
f.addLocal("idx1", "i32"); | ||
f.addLocal("idx2", "i32"); | ||
f.addLocal("i", "i32"); | ||
f.addLocal("bits", "i32"); | ||
f.addLocal("pShiftToM", "i32"); | ||
const c = f.getCodeBuilder(); | ||
const W = c.i32_const(module.alloc(n8f)); | ||
const U = c.i32_const(module.alloc(n8g)); | ||
f.addCode( | ||
c.setLocal( | ||
"bits", | ||
c.call( | ||
prefix + "__log2", | ||
c.getLocal("n") | ||
) | ||
), | ||
c.setLocal("pShiftToM", | ||
c.i32_add( | ||
c.i32_const(SHIFT_TO_M), | ||
c.i32_mul( | ||
c.getLocal("bits"), | ||
c.i32_const(n8f) | ||
) | ||
) | ||
), | ||
c.call( fPrefix + "_copy", c.getLocal("first"), W), | ||
c.setLocal("i", c.i32_const(0)), | ||
c.block(c.loop( | ||
c.br_if( | ||
1, | ||
c.i32_eq( | ||
c.getLocal("i"), | ||
c.getLocal("n") | ||
) | ||
), | ||
c.setLocal( | ||
"idx1", | ||
c.i32_add( | ||
c.getLocal("pBuff1"), | ||
c.i32_mul( | ||
c.getLocal("i"), | ||
c.i32_const(n8g) | ||
) | ||
) | ||
), | ||
c.setLocal( | ||
"idx2", | ||
c.i32_add( | ||
c.getLocal("pBuff2"), | ||
c.i32_mul( | ||
c.getLocal("i"), | ||
c.i32_const(n8g) | ||
) | ||
) | ||
), | ||
c.call( | ||
gPrefix + "_add", | ||
c.getLocal("idx1"), | ||
c.getLocal("idx2"), | ||
U | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx2"), | ||
c.getLocal("pShiftToM"), | ||
c.getLocal("idx2") | ||
), | ||
c.call( | ||
gPrefix + "_add", | ||
c.getLocal("idx1"), | ||
c.getLocal("idx2"), | ||
c.getLocal("idx2") | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx2"), | ||
W, | ||
c.getLocal("idx2"), | ||
), | ||
c.call( | ||
gPrefix + "_copy", | ||
U, | ||
c.getLocal("idx1") | ||
), | ||
c.call( | ||
fPrefix + "_mul", | ||
W, | ||
c.getLocal("inc"), | ||
W | ||
), | ||
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), | ||
c.br(0) | ||
)) | ||
); | ||
} | ||
function buildFFTJoinExtInv() { | ||
const f = module.addFunction(prefix+"_fftJoinExtInv"); | ||
f.addParam("pBuff1", "i32"); | ||
f.addParam("pBuff2", "i32"); | ||
f.addParam("n", "i32"); | ||
f.addParam("first", "i32"); | ||
f.addParam("inc", "i32"); | ||
f.addLocal("idx1", "i32"); | ||
f.addLocal("idx2", "i32"); | ||
f.addLocal("i", "i32"); | ||
f.addLocal("bits", "i32"); | ||
f.addLocal("pShiftToM", "i32"); | ||
f.addLocal("pSConst", "i32"); | ||
const c = f.getCodeBuilder(); | ||
const W = c.i32_const(module.alloc(n8f)); | ||
const U = c.i32_const(module.alloc(n8g)); | ||
f.addCode( | ||
c.setLocal( | ||
"bits", | ||
c.call( | ||
prefix + "__log2", | ||
c.getLocal("n") | ||
) | ||
), | ||
c.setLocal("pShiftToM", | ||
c.i32_add( | ||
c.i32_const(SHIFT_TO_M), | ||
c.i32_mul( | ||
c.getLocal("bits"), | ||
c.i32_const(n8f) | ||
) | ||
) | ||
), | ||
c.setLocal("pSConst", | ||
c.i32_add( | ||
c.i32_const(SCONST), | ||
c.i32_mul( | ||
c.getLocal("bits"), | ||
c.i32_const(n8f) | ||
) | ||
) | ||
), | ||
c.call( fPrefix + "_copy", c.getLocal("first"), W), | ||
c.setLocal("i", c.i32_const(0)), | ||
c.block(c.loop( | ||
c.br_if( | ||
1, | ||
c.i32_eq( | ||
c.getLocal("i"), | ||
c.getLocal("n") | ||
) | ||
), | ||
c.setLocal( | ||
"idx1", | ||
c.i32_add( | ||
c.getLocal("pBuff1"), | ||
c.i32_mul( | ||
c.getLocal("i"), | ||
c.i32_const(n8g) | ||
) | ||
) | ||
), | ||
c.setLocal( | ||
"idx2", | ||
c.i32_add( | ||
c.getLocal("pBuff2"), | ||
c.i32_mul( | ||
c.getLocal("i"), | ||
c.i32_const(n8g) | ||
) | ||
) | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx2"), | ||
W, | ||
U | ||
), | ||
c.call( | ||
gPrefix + "_sub", | ||
c.getLocal("idx1"), | ||
U, | ||
c.getLocal("idx2"), | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx2"), | ||
c.getLocal("pSConst"), | ||
c.getLocal("idx2") | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx1"), | ||
c.getLocal("pShiftToM"), | ||
c.getLocal("idx1") | ||
), | ||
c.call( | ||
gPrefix + "_sub", | ||
U, | ||
c.getLocal("idx1"), | ||
c.getLocal("idx1") | ||
), | ||
c.call( | ||
opGtimesF, | ||
c.getLocal("idx1"), | ||
c.getLocal("pSConst"), | ||
c.getLocal("idx1") | ||
), | ||
c.call( | ||
fPrefix + "_mul", | ||
W, | ||
c.getLocal("inc"), | ||
W | ||
), | ||
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), | ||
c.br(0) | ||
)) | ||
); | ||
} | ||
function buildFFTMix() { | ||
@@ -907,3 +1176,3 @@ const f = module.addFunction(prefix+"_fftMix"); | ||
1, | ||
c.i32_eq( | ||
c.i32_ge_u( | ||
c.getLocal("i"), | ||
@@ -976,2 +1245,4 @@ c.getLocal("ndiv2") | ||
buildFFTJoin(); | ||
buildFFTJoinExt(); | ||
buildFFTJoinExtInv(); | ||
buildFFTMix(); | ||
@@ -984,2 +1255,4 @@ buildFFTFinal(); | ||
module.exportFunction(prefix+"_fftJoin"); | ||
module.exportFunction(prefix+"_fftJoinExt"); | ||
module.exportFunction(prefix+"_fftJoinExtInv"); | ||
module.exportFunction(prefix+"_fftMix"); | ||
@@ -986,0 +1259,0 @@ module.exportFunction(prefix+"_fftFinal"); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 2 instances in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
38618644
33259
4