edkeys v0.1.2
edkeys
Node.js library for ed25519 keys management.
npm i edkeys
By default it saves the files in ~/.hyperkeys
.
Usage
const Hyperkeys = require('edkeys')
const hyperkeys = new Hyperkeys()
const seed = hyperkeys.create(name)
const { publicKey, secretKey, seedKey } = hyperkeys.get(name)
hyperkeys.set(name, { publicKey, secretKey, seedKey })
const paths = hyperkeys.exists(name)
hyperkeys.remove(name)
const { keyPairs, knownKeys } = hyperkeys.list()
Hyperkeys.keyTriad() // => { publicKey, secretKey, seedKey }
Dir
const hyperkeys = new Hyperkeys({ dir: '/home/user/.another-folder' })
Global dir
Hyperkeys.dir = '/home/user/.global-folder'
// Now all instances uses that global directory
const hyperkeys1 = new Hyperkeys()
// Setting a specific dir overrides the global
const hyperkeys2 = new Hyperkeys({ dir: '/home/user/.override-folder' })
Create
// Writes the file to disk: ~/.hyperkeys/crst
const seedKey = hyperkeys.create('crst')
If you try to create twice with the same name it will throw an error.
Get
If you have the seedKey
then it will return all the keys.\
That's because you can derivate the public and secret keys from the seed.
const keys = hyperkeys.get('crst')
// => { publicKey, secretKey, seedKey }
If you only have the publicKey
then that's what you'll get.
const keys = hyperkeys.get('friend')
// => { publicKey, secretKey: null, seedKey: null }
Set
You can force to save any key to a specific name.
hyperkeys.set('friend', { publicKey: Buffer<newer public key> })
Another example:
// As previously said, this will save only the seedKey to disk
hyperkeys.create('vm1')
// You can use "get" to retrieve and generate all the corresponding keys
const keys = hyperkeys.get('vm1')
// And force save them
hyperkeys.set('vm1', keys)
// Now you have those files saved:
// publicKey: ~/.hyperkeys/vm1.pub
// secretKey: ~/.hyperkeys/vm1.sec
// seedKey: ~/.hyperkeys/vm1
Exists
It will return the keys filepath linked to the name.
hyperkeys.create('vm2')
const exists = hyperkeys.exists('vm2')
// => { publicKey: null, secretKey: null, seedKey: '/home/user/...' }
// Again, with this we have explicitly all the keys in disk
hyperkeys.create('vm3')
hyperkeys.set('vm3', hyperkeys.get('vm3'))
const exists = hyperkeys.exists('vm3')
// => { publicKey: '/home/user/...', secretKey: '/home/user/...', seedKey: '/home/user/...' }
const exists = hyperkeys.exists('non-existent')
// => { publicKey: null, secretKey: null, seedKey: null }
Remove
It will remove all the keys, be it publicKey
, secretKey
and/or seedKey
.
hyperkeys.remove('vm1')
List
keyPairs
is when you have the seedKey
or combination of publicKey
and secretKey
.\
knownKeys
are the keys where you don't have either the secretKey
and seedKey
.
const { keyPairs, knownKeys } = hyperkeys.list()
// keyPairs => [{ name, publicKey, secretKey, seedKey }, ...]
// knownKeys => [{ name, publicKey, secretKey: null, seedKey: null }, ...]
Note: If you only have the secretKey
file (.sec) it will not show up on the list.\
It may be possible to derive the publicKey
from the secretKey
but not done for now.
keyTriad (static)
const keyTriad = Hyperkeys.keyTriad()
// => { publicKey, secretKey, seedKey }
keyPair (static)
const keyPair = Hyperkeys.keyPair()
// => { publicKey, secretKey }
seed (static)
const seed = Hyperkeys.seed()
// => Buffer<32 random bytes>
License
MIT
2 years ago