UNPKG

wasmcurves

Version:

elliptic curves implementations in wasm

67 lines (53 loc) 7.1 kB
const buildProtoboard = require("wasmbuilder").buildProtoboard; const buildMNT6753 = require("../src/mnt6753/build_mnt6753.js"); const bigInt = require("big-integer"); const fs = require("fs"); const path = require("path"); var pedersenParameters = [ ["2071893303198007985737678972190309212568452221625132024511988170095494148670997278812694070338313361389889122280160253462982652030041813566301365289695187505618174204273471887226695702458395861269694368663558765191107385382142", "17187187414417664367585796530257262302159176591062800465884265459977066325098901507827719965058588341044788483232395252403515861767227243983849894797683644816538861625368393588001624014759720661490214325432345769098675755344007"], ["12212700530208157134689256057121042620633735483309261868159828729358269133353025097021648766749096328904625282610227267815597560656189994727627613599055093979638719153187781645363642530065802177696707603573183038198049837281284", "25783690089010390455572974279288664362239817189553105020262800542618336981545722940934884637537924384027963108482794866752096889610121505188228870561534980224779056104062778099246844511975082198175449341056361726557212816273203"], ["24970556048065806436025775756019294569514287852390684813064321958272933228137795169157911036418821145649315804385644486444483724251269635399290126638401987231852781394516304251109918520031098349546899855265794613791318815401876", "31962426837049224740980485154381998358868991216693595616538747324158910634872015696123705432006307054685021215563881823301198025102710386453970240354239402398745821628720107919855566997584156778139135499881940592882629489943551"], ["4431264411717549274439490659582560401278429696218324463252012866668010436230467390709079687847260266333949609702709398614735778908621392906775244210809408019439483728382538000678063011124654256466867465806472450156285959296478", "5357104929738581133630585435713154584790058687516758823722160588386982989576958329026493218285464648215758171648009368623425257221760769388865621253647844864279048734223948216626860899712215839882580351969504555475483295828321"], ["6671433602972561813695090966408317709238420789110797829702834855105065892311048504872981038933746208133427345903147737968972400166128764694941204592973429712710593028851732935226387767696882706160253984317874861465334699161990", "21711555364470068355814107901005676801426239531219087510381972880175131973242407029290710493957974865954350244915332826635503654142837214217367474143450949577779528038476129095441904192715126325925180200706764720129647900154510"], ["3279287280516667726034641228088153493377068947932964914992332109534304163378313362642088339811737854700479601646880961405137089274374094406319964129318466368217040667072259586616947873396338805588189680637610631077799406849678", "36083410532375699766897530133147718931585816209038495573380944607379201487163666226805598827634658263382384531791578426004569849840500849793075159834066479383773342040065664681946311465722831163353980052849824208445357276512039"], ["6080315379067559396366920603391445316068884876999059159889161166465434118824372554207399274504146495157531657398487486565476348416859948241407968265138831613853730297645692192334843976583486101896736840413872097839964499683332", "26420424881408892228870218588074681761407815765852299070750308032078795079763335114222685666340147826454447640325063954005645285100365609355311780905109783862569185820306941334828547063301806152701392010289886220468661953965919"], ["39301831400422949389818222554551556278076967824511010861535510094278551646323817962504510429949535607847124719220397592919414191667356795652722963307663320704947997484288198213588564623546419124090570040138115255574753268044296", "36457812814376230890682190373753614518702525324272794059443925877471853974877472140825740785996758245920724784158181335975363784020543877031746359325492875482739908200696955809723414504629601464266420637086159099075048645416374"], ["7540664997550190973602360351030883142324749771399862809105176292300299526593722518355361727448429173635571954137685816627918496116227546648451982643232613412226512084475776533244886987139627138835739493051117039845249333293796", "41832168374796125531735699856185177965741887376998317172586340222379811256102274861246907652644659486244227261842256173112551393210515106271575307252302330588981902151799763241646966710905966859708456096352215232407040721812440"], ["36397483455279521486180767892445054628947434149047678403043888842127539677645442740735471632069262625023630925482329096023950321390546066181899597320416634680062586092646310952310844092327312810134226425393239318043723435147242", "18286472905180979924646715322917829676123207845562357760879307637733164075896656550520464980631401874233327857749869297454439627725894967171722892001304897028600380951109713197296853450963512190698451016172641099337226932835103"], ["38971740405150801303656120540964048311055428317597420804659853006910052152298169876746036294761470660390748610246706280407819428237389693394271333553585474382213782764591195401917422695201611402679319607462045083981820266292526", "12052300622245628070333354588755219239307478469529845235720526151711813563444656737524423919201679934065964579148677093493832843694922101898382470265577630638871822779691658559083989998504649770048646951871151837463810472588643"], ["28580639909521896467730379621107007981713563598576419274286032656030060646413984885651670728423715399952200046109842062405825188571385283021073346904536651485834210457583868625103914909503900539953858010694440026958408821693616", "33074070963001755009804136607611008375296623364907104158069380168975081449307467755506733151497347867221785696657950398557975950305507047259982036542250828282873739093067701764175433149313198906930824052021363292166457216217373"], ]; buildProtoboard((module) => { buildMNT6753(module); }, 96). then(function(pb) { const tableSize = 96*3*pedersenParameters.length*4; const pTable = pb.alloc(tableSize); const res = []; for (let i=0; i<pedersenParameters.length; i++) { const p1 = pTable + i*96*3*4; pb.set(p1, bigInt(pedersenParameters[i][0])); pb.set(p1+96, bigInt(pedersenParameters[i][1])); pb.set(p1+96*2, bigInt(1)); pb.g1m_toMontgomery(p1, p1); res.push(...pb.i8.slice(p1, p1+96*2)); const p2 = p1+96*3; pb.g1m_double(p1, p2); pb.g1m_normalize(p2, p2); res.push(...pb.i8.slice(p2, p2+96*2)); const p3 = p2+96*3; pb.g1m_add(p1, p2, p3); pb.g1m_normalize(p3, p3); res.push(...pb.i8.slice(p3, p3+96*2)); const p4 = p3+96*3; pb.g1m_double(p2, p4); pb.g1m_normalize(p4, p4); res.push(...pb.i8.slice(p4, p4+96*2)); } fs.writeFileSync( path.join( __dirname, "..", "build", "pedersenparams_mnt6753.js"), ` // Code generated automatically by tools/buildpedersentablebases_mnt6753.js module.exports = Buffer.from("${Buffer.from(res).toString("base64")}", "base64");; ` ); });