|
12345678910111213141516171819202122232425262728293031 |
- // Perhaps use hashy as reference to implement bcrypt and needRehash action
- // https://github.com/JsCommunity/hashy
-
- // supports argon2i, argon2d and argon2id
- exports.passwordHash = async function(options) {
- const password = this.parseRequired(options.password, 'string', 'crypto.passwordHash: password is required.')
- const algo = this.parseOptional(options.algo, 'string', 'argon2i')
- const argon2 = require('argon2')
- const type = argon2[algo]
- return argon2.hash(password, { type })
- }
-
- exports.passwordVerify = async function(options) {
- const password = this.parseRequired(options.password, 'string', 'crypto.passwordVerify: password is required.')
- const hash = this.parseRequired(options.hash, 'string', 'crypto.passwordVerify: hash is required.')
- const argon2 = require('argon2')
- return argon2.verify(hash, password)
- }
-
- exports.passwordNeedsRehash = async function(options) {
- const hash = this.parseRequired(options.hash, 'string', 'crypto.passwordNeedsRehash: hash is required.')
- const algo = this.parseOptional(options.algo, 'string', 'argon2i')
- const argon2 = require('argon2')
- return argon2.needsRehash(hash, {})
- }
-
- exports.uuid = async function(options) {
- const { randomUUID } = require('crypto')
- const { v4: uuidv4 } = require('uuid')
- return randomUUID ? randomUUID() : uuidv4()
- }
|