UNPKG

ara-crypto

Version:

Cryptographic functions used in Ara modules

38 lines (32 loc) 1.04 kB
/* eslint-disable import/no-extraneous-dependencies */ const speedometer = require('speedometer') const { format } = require('util') const pretty = require('pretty-bytes') const split = require('split-buffer') const diff = require('ansi-diff') /* eslint-disable camelcase */ const { crypto_secretbox_NONCEBYTES, } = require('sodium-universal') const { randomBytes } = require('../random-bytes') const { createBoxStream } = require('../box') const key = Buffer.alloc(32) const speed = speedometer() const nonce = randomBytes(crypto_secretbox_NONCEBYTES) const stream = createBoxStream({ key, nonce }) const buffer = randomBytes(1024 * 65536) const render = diff({ width: process.stdout.columns }) stream.on('data', ondata) if (false == process.stdin.isTTY) { process.stdin.pipe(stream) } else { for (const chunk of split(buffer, 1024)) { stream.write(chunk) } } function ondata(chunk) { if (chunk && chunk.length) { const bps = speed(chunk.length) process.stdout.write(render.update(format('%sPS', pretty(bps)))) } }