Setting up elliptic curve keys and signing properly for BEP44 can be tricky, especially since bittorrent uses the more obscure supercop/ref10 instead of sodium/nacl ed25519 key formatting.
var KP = require('bittorrent-dht-store-keypair')
var DHT = require('bittorrent-dht')
var dht = new DHT({ verify: KP.verify })
var kp = KP()
var value = 'beep boop'
dht.once('ready', function () {
dht.put(kp.store(value), function (errors, hash) {
if (errors.length) errors.forEach(console.log)
else console.log(kp.id)
})
})
var KP = require('bittorrent-dht-store-keypair')
var kp = KP()
console.log(JSON.stringify({
publicKey: kp.publicKey.toString('hex'),
secretKey: kp.secretKey.toString('hex')
}))
$ node generate.js > keypair.json
var KP = require('bittorrent-dht-store-keypair')
var DHT = require('bittorrent-dht')
var path = require('path')
var concat = require('concat-stream')
var dht = new DHT({ verify: KP.verify })
var kp = KP(require(path.resolve(process.argv[2])))
dht.once('ready', function () {
process.stdin.pipe(concat(function (value) {
dht.put(kp.store(value), function (errors, hash) {
if (errors.length) errors.forEach(console.log)
else console.log(kp.id)
})
}))
})
$ echo wow cool | node put.js keypair.json
var KP = require('bittorrent-dht-store-keypair')
opts.publicKey
- createkp
with a buffer or hex string public keyopts.secretKey
- createkp
with a buffer or hex string private keyopts.seq
- sequence to start at inkp.store()
Sign a buffer or string value
with the private key.
Create the putOpts
for a value
to pass into bittorrent-dht's put()
function.
kp.seq
is incremented here unless opts.seq
is provided.
public key (32 bytes)
private key (64 bytes)
sha1 hash of the kp.publicKey
sequence number
The underlying ed25519-supercop verify function.
This is handy to pass into the bittorrent-dht constructor as the verify
parameter:
var DHT = require('bittorrent-dht')
var KP = require('bittorrent-dht-store-keypair')
var dht = new DHT({ verify: KP.verify })
npm install bittorrent-dht-store-keypair
MIT