-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Labels
Description
Description
Expose a constructor to allow the users to have multiple instance of upash instead of having it as a singleton.
Examples
const UPASH = require('upash');
// Create an instance of upash providing the algorithms of your choice.
const upash = new UPASH({
argon2: require('@phc/argon2'),
pbkdf2: require('@phc/pbkdf2')
}, {default: 'argon2'});
// You can explicitly tell upash which algorithm to use.
const hashstr_pbkdf2 = await upash.use('pbkdf2').hash('password');
// => "$pbkdf2-sha512$i=10000$O484sW7giRw+nt5WVnp15w$jEUMVZ9adB+63ko/8Dr9oB1jWdndpVVQ65xRlT+tA1GTKcJ7BWlTjdaiILzZAhIPEtgTImKvbgnu8TS/ZrjKgA"
// If you don't do so it will automatically use the default one.
const hashstr_argon2 = await upash.hash('password');
// => "$argon2i$v=19$m=4096,t=3,p=1$mTFYKhlcxmjS/v6Y8aEd5g$IKGY+vj0MdezVEKHQ9bvjpROoR5HPun5/AUCjQrHSIs"
// When you verify upash will automatically choose the algorithm to use based
// on the identifier contained in the hash string.
const match_pbkdf2 = await upash.verify(hashstr_pbkdf2, 'password');
// => true
// This will allow you to easily migrate from an algorithm to another.
const match_argon2 = await upash.verify(hashstr_argon2, 'password');
// => trueNotes
Probably it makes sense to remove install and uninstall methods and add a getDefault method.
This would lead to a breaking change.
cc @mcollina