hypercore-xsalsa20-onwrite-hook
Version:
A write hook to decrypt data using a XSalsa20 cipher into a hypercore storage when replicating from peers
50 lines (39 loc) • 1.22 kB
JavaScript
const replicate = require('hypercore-replicate')
const hypercore = require('hypercore')
const crypto = require('hypercore-crypto')
const File = require('hypercore-indexed-file')
const pump = require('pump')
const hook = require('./')
const ram = require('random-access-memory')
const key = crypto.randomBytes(32)
const { publicKey, secretKey } = crypto.keyPair()
const source = File(__filename, {
key: publicKey,
secretKey,
}, (err) => {
const cipher = hypercore(ram, publicKey, {
secretKey,
onwrite: hook(key)
})
const edge = hypercore(ram, publicKey)
const reader = hypercore(ram, publicKey, {
onwrite: hook(key)
})
source.ready(() => {
//source.head(console.log) // plaintext
// load cipher hypercore
pump(source.createReadStream(), cipher.createWriteStream(), (err) => {
if (err) throw err
cipher.head(console.log) // ciphertext
replicate(cipher, edge, (err) => {
if (err) throw err
edge.head(console.log) // ciphertext
replicate(edge, reader, (err) => {
if (err) throw err
reader.head(console.log) // plaintext
reader.createReadStream().pipe(process.stdout)
})
})
})
})
})