UNPKG

shamir

Version:

A JavaScript implementation of Shamir's Secret Sharing algorithm over GF(256).

54 lines (42 loc) 1.34 kB
const { split, join } = require('../../main/js/Scheme.js'); const { randomBytes } = require('crypto'); const secret = new Uint8Array(16); for (let i = 0; i < secret.length; i++) { secret[i] = i % 255; } const mainrun = 200; const parts = 4; const quorum = 3; var splits = split(randomBytes, parts, quorum, secret); function benchmarkSplit() { for( let i = 0; i < mainrun; i++ ) { splits = split(randomBytes, parts, quorum, secret); } } // https://nodejs.org/docs/latest-v10.x/api/perf_hooks.html#perf_hooks_performance_now const { performance, PerformanceObserver } = require('perf_hooks'); const wrappedSplit = performance.timerify(benchmarkSplit); const obsSplit = new PerformanceObserver((list) => { const timed = list.getEntries()[0].duration / mainrun; console.log(`split ${timed} ms`); obsSplit.disconnect(); }); obsSplit.observe({ entryTypes: ['function'] }); wrappedSplit(); var recovered = join(splits); function benchmarkJoin() { for( let i = 0; i < mainrun; i++ ) { recovered = join(splits); } } const wrappedJoin = performance.timerify(benchmarkJoin); const obsJoin = new PerformanceObserver((list) => { const timed = list.getEntries()[0].duration / mainrun console.log(`join ${timed} ms`); obsJoin.disconnect(); }); obsJoin.observe({ entryTypes: ['function'] }); wrappedJoin();