@hyperdivision/heimdall-profile
v1.3.0
Published
Password encrypted Heimdall profile storage
Downloads
9
Readme
@hyperdivision/heimdall-profile
Password encrypted Heimdall profile storage
Usage
var HeimdallProfile = require('@hyperdivision/heimdall-profile')
HeimdallProfile.create(raf, password, settings, (err, profile) => {
if (err) throw err
profile.set('profile', {
name: 'Kim Doe',
title: 'CEO',
role: 'admin',
photo: Buffer.from('...')
}, HeimdallProfile.Profile)
profile.save((err) => {
if (err) throw err
})
})
API
HeimdallProfile.create(raf, password, settings, cb)
Create a new Heimdall profile
HeimdallProfile.unlock(raf, password, cb)
Unlock an existing Heimdall profile
HeimdallProfile.exists(raf, cb)
Check if a Heimdall profile exists at raf
and do corruption checks
HeimdallProfile.deriveKey(password, cb)
Derives a INTERACTIVE key in memory returning (err, key, opts)
HeimdallProfile.compareKeys(password, key, opts, cb)
Compare password with prederived key same options, returning (err, equals)
HeimdallProfile.trash(raf, cb)
Unlock an existing Heimdall profile
HeimdallProfile.HeimdallKeys
Protobuf definition of a Heimdall key set. Fields are:
{
localSecretKey: Buffer,
serverPublicKey: Buffer, // optional
localNoiseSecretKey: Buffer
}
HeimdallProfile.Profile
Protobuf definition of a standard Heimdall user profile. Fields are:
{
name: String,
title: String,
role: String,
photo: Buffer // optional
}
HeimdallProfile.SETTINGS_INTERACTIVE
Predefined settings
for creating a profile with high-entropy password.
This security level is appropiate for servers, scripts and bots that have their
password autogenerated and supplied automatically.
HeimdallProfile.SETTINGS_SENSITIVE
Predefined settings
for creating a profile with a modest entropy password.
This security level is appropiate for humans that are supplying a password of
their own choice.
profile.get(key, [encoding = 'json'])
Get a key stored in the Heimdall profile, with optional encoding
profile.set(key, value, [encoding = 'json'])
Set a key stored in the Heimdall profile, with optional encoding
profile.has(key)
Check a key stored in the Heimdall profile, with optional encoding
profile.lock([autoSave = false], cb)
Lock profile
, optionally saving ephemeral state, and then wiping all ephemeral
state. The profile
instance becomes unusable after locking.
profile.destory(cb)
Forcibly destroy the profile instance
profile.trash(cb)
DANGEROUS
Destroy profile
and wipe all data from ephemeral and persistent storage.
profile.on('locking')
Emitted before locking to disk, giving listeners the opportunity to modify their values or change state.
profile.on('saving')
Emitted before saving to disk, giving listeners the opportunity to modify their values or change state.
Install
npm install @hyperdivision/heimdall-profile