2016-12-23 08:52:40 -05:00
|
|
|
'use strict'
|
|
|
|
|
2017-07-22 10:57:27 -07:00
|
|
|
const nacl = require('tweetnacl')
|
2016-12-23 08:52:40 -05:00
|
|
|
|
2017-07-22 10:57:27 -07:00
|
|
|
exports.publicKeyLength = nacl.sign.publicKeyLength
|
|
|
|
exports.privateKeyLength = nacl.sign.secretKeyLength
|
2016-12-23 08:52:40 -05:00
|
|
|
|
2019-07-10 17:15:26 +01:00
|
|
|
exports.generateKey = async function () { // eslint-disable-line require-await
|
|
|
|
return nacl.sign.keyPair()
|
2016-12-23 08:52:40 -05:00
|
|
|
}
|
|
|
|
|
2017-07-22 10:57:27 -07:00
|
|
|
// seed should be a 32 byte uint8array
|
2019-07-10 17:15:26 +01:00
|
|
|
exports.generateKeyFromSeed = async function (seed) { // eslint-disable-line require-await
|
|
|
|
return nacl.sign.keyPair.fromSeed(seed)
|
2016-12-23 08:52:40 -05:00
|
|
|
}
|
|
|
|
|
2019-07-10 17:15:26 +01:00
|
|
|
exports.hashAndSign = async function (key, msg) { // eslint-disable-line require-await
|
|
|
|
return Buffer.from(nacl.sign.detached(msg, key))
|
2016-12-23 08:52:40 -05:00
|
|
|
}
|
|
|
|
|
2019-07-10 17:15:26 +01:00
|
|
|
exports.hashAndVerify = async function (key, sig, msg) { // eslint-disable-line require-await
|
|
|
|
return nacl.sign.detached.verify(msg, sig, key)
|
2017-03-03 20:38:51 +00:00
|
|
|
}
|