From 936a5cf699d03620a129a6badf8f03cd96d528a2 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Thu, 23 Nov 2017 17:23:46 +0900 Subject: [js] remove capi functions --- docs/demo/bls.js | 229 ++++++++++++++++--------------------------------------- 1 file changed, 65 insertions(+), 164 deletions(-) (limited to 'docs/demo/bls.js') diff --git a/docs/demo/bls.js b/docs/demo/bls.js index d341f26..4565b6c 100644 --- a/docs/demo/bls.js +++ b/docs/demo/bls.js @@ -6,7 +6,7 @@ generator(exports, crypto, true) } else { const crypto = window.crypto || window.msCrypto - let exports = {} + const exports = {} exports.mod = {} window.bls = generator(exports, crypto, false) } @@ -18,19 +18,12 @@ const MCLBN_FP_UNIT_SIZE = 6 - const MCLBN_FP_SIZE = MCLBN_FP_UNIT_SIZE * 8 - const MCLBN_G1_SIZE = MCLBN_FP_SIZE * 3 - const MCLBN_G2_SIZE = MCLBN_FP_SIZE * 6 - const MCLBN_GT_SIZE = MCLBN_FP_SIZE * 12 - const BLS_ID_SIZE = MCLBN_FP_UNIT_SIZE * 8 const BLS_SECRETKEY_SIZE = BLS_ID_SIZE const BLS_PUBLICKEY_SIZE = BLS_ID_SIZE * 3 * 2 const BLS_SIGNATURE_SIZE = BLS_ID_SIZE * 3 - let capi = {} - exports.capi = capi - let mod = exports.mod + const mod = exports.mod exports.init = (curveType = MCLBN_CURVE_FP254BNB) => { console.log('init') @@ -42,24 +35,10 @@ } return new Promise((resolve) => { mod.onRuntimeInitialized = () => { - const f = (exportedFuncs) => { - exportedFuncs.forEach(func => { - capi[func.exportName] = mod.cwrap(func.name, func.returns, func.args) - }) - define_extra_functions(mod) - let r = capi.blsInit(curveType) - console.log('finished ' + r) - resolve() - } - if (isNodeJs) { - const fs = require('fs') - const jsonStr = fs.readFileSync('./exported-bls.json') - f(JSON.parse(jsonStr)) - } else { - fetch('exported-bls.json') - .then(response => response.json()) - .then(exportedFuncs => f(exportedFuncs)) - } + define_extra_functions(mod) + exports.blsInit(curveType) + console.log('finished') + resolve() } }) } @@ -176,33 +155,6 @@ mod._free(pos) return s } - const wrap_keyShare = function(func, dataSize) { - return function(x, vec, id) { - let k = vec.length - let p = mod._malloc(dataSize * k) - for (let i = 0; i < k; i++) { - mod._memcpy(p + i * dataSize, vec[i], dataSize) - } - let r = func(x, p, k, id) - mod._free(p) - if (r) throw('keyShare ' + k) - } - } - const wrap_recover = function(func, dataSize, idDataSize) { - return function(x, vec, idVec) { - let n = vec.length - let p = mod._malloc(dataSize * n) - let q = mod._malloc(idDataSize * n) - for (let i = 0; i < n; i++) { - mod._memcpy(p + i * dataSize, vec[i], dataSize) - mod._memcpy(q + i * idDataSize, idVec[i], idDataSize) - } - let r = func(x, p, q, n) - mod._free(q) - mod._free(p) - if (r) throw('recover ' + n) - } - } const callShare = function(func, a, size, vec, id) { let stack = mod.Runtime.stackSave() let pos = mod.Runtime.stackAlloc(a.length * 4) @@ -236,90 +188,34 @@ mod.Runtime.stackRestore(stack) } const define_extra_functions = function(mod) { - capi.mclBnFr_malloc = function() { - return mod._malloc(MCLBN_FP_SIZE) - } - capi.mcl_free = function(x) { - mod._free(x) - } - capi.mclBnFr_deserialize = wrap_input(capi._mclBnFr_deserialize, 1) - capi.mclBnFr_setLittleEndian = wrap_input(capi._mclBnFr_setLittleEndian, 1) - capi.mclBnFr_setStr = wrap_input(capi._mclBnFr_setStr, 1) - capi.mclBnFr_getStr = wrap_outputString(capi._mclBnFr_getStr) - capi.mclBnFr_setHashOf = wrap_input(capi._mclBnFr_setHashOf, 1) - - /////////////////////////////////////////////////////////////// - capi.mclBnG1_malloc = function() { - return mod._malloc(MCLBN_G1_SIZE) - } - capi.mclBnG1_setStr = wrap_input(capi._mclBnG1_setStr, 1) - capi.mclBnG1_getStr = wrap_outputString(capi._mclBnG1_getStr) - capi.mclBnG1_deserialize = wrap_input(capi._mclBnG1_deserialize, 1) - capi.mclBnG1_serialize = wrap_outputArray(capi._mclBnG1_serialize) - capi.mclBnG1_hashAndMapTo = wrap_input(capi._mclBnG1_hashAndMapTo, 1) - - /////////////////////////////////////////////////////////////// - capi.mclBnG2_malloc = function() { - return mod._malloc(MCLBN_G2_SIZE) - } - capi.mclBnG2_setStr = wrap_input(capi._mclBnG2_setStr, 1) - capi.mclBnG2_getStr = wrap_outputString(capi._mclBnG2_getStr) - capi.mclBnG2_deserialize = wrap_input(capi._mclBnG2_deserialize, 1) - capi.mclBnG2_serialize = wrap_outputArray(capi._mclBnG2_serialize) - capi.mclBnG2_hashAndMapTo = wrap_input(capi._mclBnG2_hashAndMapTo, 1) - - /////////////////////////////////////////////////////////////// - capi.mclBnGT_malloc = function() { - return mod._malloc(MCLBN_GT_SIZE) - } - capi.mclBnGT_deserialize = wrap_input(capi._mclBnGT_deserialize, 1) - capi.mclBnGT_serialize = wrap_outputArray(capi._mclBnGT_serialize) - capi.mclBnGT_setStr = wrap_input(capi._mclBnGT_setStr, 1) - capi.mclBnGT_getStr = wrap_outputString(capi._mclBnGT_getStr) - /////////////////////////////////////////////////////////////// - capi.bls_free = capi.mcl_free - capi.blsId_malloc = capi.mclBnFr_malloc - capi.blsSecretKey_malloc = capi.mclBnFr_malloc - capi.blsPublicKey_malloc = capi.mclBnG2_malloc - capi.blsSignature_malloc = capi.mclBnG1_malloc - - capi.blsInit = function(curveType = MCLBN_CURVE_FP254BNB) { - return capi._blsInit(curveType, MCLBN_FP_UNIT_SIZE) + // change curveType + exports.blsInit = function(curveType = MCLBN_CURVE_FP254BNB) { + const r = mod._blsInit(curveType, MCLBN_FP_UNIT_SIZE) + if (r) throw('blsInit err ' + r) } - capi.blsGetCurveOrder = wrap_outputString(capi._blsGetCurveOrder) - capi.blsGetFieldOrder = wrap_outputString(capi._blsGetFieldOrder) + exports.getCurveOrder = wrap_outputString(mod._blsGetCurveOrder) + exports.getFieldOrder = wrap_outputString(mod._blsGetFieldOrder) - capi.blsIdSetDecStr = wrap_input(capi._blsIdSetDecStr, 1) - capi.blsIdSetHexStr = wrap_input(capi._blsIdSetHexStr, 1) - capi.blsIdGetDecStr = wrap_outputString(capi._blsIdGetDecStr) - capi.blsIdGetHexStr = wrap_outputString(capi._blsIdGetHexStr) + mod.blsIdSetDecStr = wrap_input(mod._blsIdSetDecStr, 1) + mod.blsIdSetHexStr = wrap_input(mod._blsIdSetHexStr, 1) + mod.blsIdGetDecStr = wrap_outputString(mod._blsIdGetDecStr) + mod.blsIdGetHexStr = wrap_outputString(mod._blsIdGetHexStr) - capi.blsSecretKeySetDecStr = wrap_input(capi._blsSecretKeySetDecStr, 1) - capi.blsSecretKeySetHexStr = wrap_input(capi._blsSecretKeySetHexStr, 1) - capi.blsSecretKeyGetDecStr = wrap_outputString(capi._blsSecretKeyGetDecStr) - capi.blsSecretKeyGetHexStr = wrap_outputString(capi._blsSecretKeyGetHexStr) + mod.blsIdSerialize = wrap_outputArray(mod._blsIdSerialize) + mod.blsSecretKeySerialize = wrap_outputArray(mod._blsSecretKeySerialize) + mod.blsPublicKeySerialize = wrap_outputArray(mod._blsPublicKeySerialize) + mod.blsSignatureSerialize = wrap_outputArray(mod._blsSignatureSerialize) - capi.blsIdSerialize = wrap_outputArray(capi._blsIdSerialize) - capi.blsSecretKeySerialize = wrap_outputArray(capi._blsSecretKeySerialize) - capi.blsPublicKeySerialize = wrap_outputArray(capi._blsPublicKeySerialize) - capi.blsSignatureSerialize = wrap_outputArray(capi._blsSignatureSerialize) + mod.blsIdDeserialize = wrap_input(mod._blsIdDeserialize, 1) + mod.blsSecretKeyDeserialize = wrap_input(mod._blsSecretKeyDeserialize, 1) + mod.blsPublicKeyDeserialize = wrap_input(mod._blsPublicKeyDeserialize, 1) + mod.blsSignatureDeserialize = wrap_input(mod._blsSignatureDeserialize, 1) - capi.blsIdDeserialize = wrap_input(capi._blsIdDeserialize, 1) - capi.blsSecretKeyDeserialize = wrap_input(capi._blsSecretKeyDeserialize, 1) - capi.blsPublicKeyDeserialize = wrap_input(capi._blsPublicKeyDeserialize, 1) - capi.blsSignatureDeserialize = wrap_input(capi._blsSignatureDeserialize, 1) - - capi.blsSecretKeySetLittleEndian = wrap_input(capi._blsSecretKeySetLittleEndian, 1) - capi.blsHashToSecretKey = wrap_input(capi._blsHashToSecretKey, 1) - capi.blsSign = wrap_input(capi._blsSign, 2) - capi.blsVerify = wrap_input(capi._blsVerify, 2, true) - - capi.blsSecretKeyShare = wrap_keyShare(capi._blsSecretKeyShare, BLS_SECRETKEY_SIZE) - capi.blsPublicKeyShare = wrap_keyShare(capi._blsPublicKeyShare, BLS_PUBLICKEY_SIZE) - capi.blsSecretKeyRecover = wrap_recover(capi._blsSecretKeyRecover, BLS_SECRETKEY_SIZE, BLS_ID_SIZE) - capi.blsPublicKeyRecover = wrap_recover(capi._blsPublicKeyRecover, BLS_PUBLICKEY_SIZE, BLS_ID_SIZE) - capi.blsSignatureRecover = wrap_recover(capi._blsSignatureRecover, BLS_SIGNATURE_SIZE, BLS_ID_SIZE) + mod.blsSecretKeySetLittleEndian = wrap_input(mod._blsSecretKeySetLittleEndian, 1) + mod.blsHashToSecretKey = wrap_input(mod._blsHashToSecretKey, 1) + mod.blsSign = wrap_input(mod._blsSign, 2) + mod.blsVerify = wrap_input(mod._blsVerify, 2, true) class Common { constructor(size) { @@ -341,38 +237,43 @@ super(BLS_ID_SIZE) } setInt(x) { - callSetter(capi.blsIdSetInt, this.a_, x) + callSetter(mod._blsIdSetInt, this.a_, x) } - setByCSPRNG() { - callSetter(capi.blsSecretKeySetByCSPRNG, this.a_) // same type of BlsSecretKey + deserialize(s) { + callSetter(mod.blsIdDeserialize, this.a_, s) + } + serialize() { + return callGetter(mod.blsIdSerialize, this.a_) } setStr(s, base = 10) { switch (base) { case 10: - callSetter(capi.blsIdSetDecStr, this.a_, s) + callSetter(mod.blsIdSetDecStr, this.a_, s) return case 16: - callSetter(capi.blsIdSetHexStr, this.a_, s) + callSetter(mod.blsIdSetHexStr, this.a_, s) return default: throw('BlsId.setStr:bad base:' + base) } } - deserialize(s) { - callSetter(capi.blsIdDeserialize, this.a_, s) - } getStr(base = 10) { switch (base) { case 10: - return callGetter(capi.blsIdGetDecStr, this.a_) + return callGetter(mod.blsIdGetDecStr, this.a_) case 16: - return callGetter(capi.blsIdGetHexStr, this.a_) + return callGetter(mod.blsIdGetHexStr, this.a_) default: throw('BlsId.getStr:bad base:' + base) } } - serialize() { - return callGetter(capi.blsIdSerialize, this.a_) + setLittleEndian(s) { + callSetter(mod.blsSecretKeySetLittleEndian, this.a_, s) + } + setByCSPRNG() { + let a = new Uint8Array(BLS_ID_SIZE) + crypto.getRandomValues(a) + this.setLittleEndian(a) } } exports.getIdFromHexStr = function(s) { @@ -386,31 +287,31 @@ super(BLS_SECRETKEY_SIZE) } setInt(x) { - callSetter(capi.blsIdSetInt, this.a_, x) // same as Id + callSetter(mod._blsIdSetInt, this.a_, x) // same as Id } deserialize(s) { - callSetter(capi.blsSecretKeyDeserialize, this.a_, s) - } - setLittleEndian(s) { - callSetter(capi.blsSecretKeySetLittleEndian, this.a_, s) + callSetter(mod.blsSecretKeyDeserialize, this.a_, s) } serialize() { - return callGetter(capi.blsSecretKeySerialize, this.a_) + return callGetter(mod.blsSecretKeySerialize, this.a_) } share(msk, id) { - callShare(capi._blsSecretKeyShare, this.a_, BLS_SECRETKEY_SIZE, msk, id) + callShare(mod._blsSecretKeyShare, this.a_, BLS_SECRETKEY_SIZE, msk, id) } recover(secVec, idVec) { - callRecover(capi._blsSecretKeyRecover, this.a_, BLS_SECRETKEY_SIZE, secVec, idVec) + callRecover(mod._blsSecretKeyRecover, this.a_, BLS_SECRETKEY_SIZE, secVec, idVec) } setHashOf(s) { - callSetter(capi.blsHashToSecretKey, this.a_, s) + callSetter(mod.blsHashToSecretKey, this.a_, s) + } + setLittleEndian(s) { + callSetter(mod.blsSecretKeySetLittleEndian, this.a_, s) } setByCSPRNG() { let a = new Uint8Array(BLS_SECRETKEY_SIZE) crypto.getRandomValues(a) this.setLittleEndian(a) - // callSetter(capi.blsSecretKeySetByCSPRNG, this.a_) + // callSetter(mod._blsSecretKeySetByCSPRNG, this.a_) } getPublicKey() { let pub = new exports.PublicKey() @@ -418,7 +319,7 @@ let secPos = mod.Runtime.stackAlloc(this.a_.length * 4) let pubPos = mod.Runtime.stackAlloc(pub.a_.length * 4) mod.HEAP32.set(this.a_, secPos / 4) - capi.blsGetPublicKey(pubPos, secPos) + mod._blsGetPublicKey(pubPos, secPos) copyToUint32Array(pub.a_, pubPos) mod.Runtime.stackRestore(stack) return pub @@ -435,7 +336,7 @@ let secPos = mod.Runtime.stackAlloc(this.a_.length * 4) let sigPos = mod.Runtime.stackAlloc(sig.a_.length * 4) mod.HEAP32.set(this.a_, secPos / 4) - capi.blsSign(sigPos, secPos, m) + mod.blsSign(sigPos, secPos, m) copyToUint32Array(sig.a_, sigPos) mod.Runtime.stackRestore(stack) return sig @@ -452,16 +353,16 @@ super(BLS_PUBLICKEY_SIZE) } deserialize(s) { - callSetter(capi.blsPublicKeyDeserialize, this.a_, s) + callSetter(mod.blsPublicKeyDeserialize, this.a_, s) } serialize() { - return callGetter(capi.blsPublicKeySerialize, this.a_) + return callGetter(mod.blsPublicKeySerialize, this.a_) } share(msk, id) { - callShare(capi._blsPublicKeyShare, this.a_, BLS_PUBLICKEY_SIZE, msk, id) + callShare(mod._blsPublicKeyShare, this.a_, BLS_PUBLICKEY_SIZE, msk, id) } recover(secVec, idVec) { - callRecover(capi._blsPublicKeyRecover, this.a_, BLS_PUBLICKEY_SIZE, secVec, idVec) + callRecover(mod._blsPublicKeyRecover, this.a_, BLS_PUBLICKEY_SIZE, secVec, idVec) } verify(sig, m) { let stack = mod.Runtime.stackSave() @@ -469,7 +370,7 @@ let sigPos = mod.Runtime.stackAlloc(sig.a_.length * 4) mod.HEAP32.set(this.a_, pubPos / 4) mod.HEAP32.set(sig.a_, sigPos / 4) - let r = capi.blsVerify(sigPos, pubPos, m) + let r = mod.blsVerify(sigPos, pubPos, m) mod.Runtime.stackRestore(stack) return r != 0 } @@ -485,13 +386,13 @@ super(BLS_SIGNATURE_SIZE) } deserialize(s) { - callSetter(capi.blsSignatureDeserialize, this.a_, s) + callSetter(mod.blsSignatureDeserialize, this.a_, s) } serialize() { - return callGetter(capi.blsSignatureSerialize, this.a_) + return callGetter(mod.blsSignatureSerialize, this.a_) } recover(secVec, idVec) { - callRecover(capi._blsSignatureRecover, this.a_, BLS_SIGNATURE_SIZE, secVec, idVec) + callRecover(mod._blsSignatureRecover, this.a_, BLS_SIGNATURE_SIZE, secVec, idVec) } } exports.getSignatureFromHexStr = function(s) { -- cgit v1.2.3