2016-12-23 08:52:40 -05:00
|
|
|
'use strict'
|
|
|
|
|
2020-03-23 15:55:35 +00:00
|
|
|
require('node-forge/lib/ed25519')
|
|
|
|
const forge = require('node-forge/lib/forge')
|
|
|
|
exports.publicKeyLength = forge.pki.ed25519.constants.PUBLIC_KEY_BYTE_LENGTH
|
|
|
|
exports.privateKeyLength = forge.pki.ed25519.constants.PRIVATE_KEY_BYTE_LENGTH
|
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
|
2020-03-23 15:55:35 +00:00
|
|
|
return forge.pki.ed25519.generateKeyPair()
|
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
|
2020-03-23 15:55:35 +00:00
|
|
|
return forge.pki.ed25519.generateKeyPair({ 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
|
2020-03-23 15:55:35 +00:00
|
|
|
return forge.pki.ed25519.sign({ message: msg, privateKey: key })
|
2020-08-07 15:23:02 +01:00
|
|
|
// return Uint8Array.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
|
2020-03-23 15:55:35 +00:00
|
|
|
return forge.pki.ed25519.verify({ signature: sig, message: msg, publicKey: key })
|
2017-03-03 20:38:51 +00:00
|
|
|
}
|