52 lines
1.1 KiB
JavaScript
Raw Normal View History

'use strict'
2017-07-22 10:57:27 -07:00
const nacl = require('tweetnacl')
const nextTick = require('async/nextTick')
2017-07-22 10:57:27 -07:00
exports.publicKeyLength = nacl.sign.publicKeyLength
exports.privateKeyLength = nacl.sign.secretKeyLength
2017-07-22 10:57:27 -07:00
exports.generateKey = function (callback) {
nextTick(() => {
let result
try {
result = nacl.sign.keyPair()
} catch (err) {
return callback(err)
}
callback(null, result)
2017-07-22 10:57:27 -07:00
})
}
2017-07-22 10:57:27 -07:00
// seed should be a 32 byte uint8array
exports.generateKeyFromSeed = function (seed, callback) {
nextTick(() => {
let result
try {
result = nacl.sign.keyPair.fromSeed(seed)
} catch (err) {
return callback(err)
}
callback(null, result)
})
}
2017-07-22 10:57:27 -07:00
exports.hashAndSign = function (key, msg, callback) {
nextTick(() => {
2017-07-22 10:57:27 -07:00
callback(null, Buffer.from(nacl.sign.detached(msg, key)))
})
}
2017-07-22 10:57:27 -07:00
exports.hashAndVerify = function (key, sig, msg, callback) {
nextTick(() => {
let result
try {
result = nacl.sign.detached.verify(msg, sig, key)
} catch (err) {
return callback(err)
}
callback(null, result)
})
}