Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | 10x 1x 1x 10x 1x 10x 1x 7x 1x 7x 4x 11x 10x | /**
* @module digest
*/
const crypto = require("crypto");
/**
* Generate a secure random salt of schema defined length
* (256-bits) and return value in hex.
* @return {hex} 32-byte salt in hex
*/
function generateSecureSaltInHex() {
return generateSecureRandomBytesInHex(32);
}
/**
* Generate a secure random salt of schema defined length
* (256-bits) and return value in Base64.
* @return {base64} 32-byte salt in base64
*/
function generateSecureSaltInBase64() {
return generateSecureRandomBytesInBase64(32);
}
/**
* Generate secure random bytes of given size
* and return value in hex.
* @param {number} size in bytes
* @return {string} random bytes in hex
*/
const generateSecureRandomBytesInHex = (size) => {
return crypto.randomBytes(size).toString("hex");
};
/**
* Generate secure random bytes of given size
* and return value in Base64.
* @param {number} size in bytes
* @return {string} random bytes in base64
*/
const generateSecureRandomBytesInBase64 = (size) => {
return crypto.randomBytes(size).toString("base64");
};
/**
* Hashes the given password and salt concatenated with the
* SHA-256 crypto standard hash function and returns the value in hex.
* @param {string} password
* @param {hex} secureSalt
* @return {hex} 32-byte hash in hex
*/
function hashPassWithSaltInHex(password, secureSalt) {
return hashVarargInHex(password, secureSalt);
}
/**
* Hashes the given password and salt concatenated with the
* SHA-256 crypto standard hash function and returns the value in Base64.
* @param {string} password
* @param {base64} secureSalt
* @return {base64} 32-byte hash in Base64
*/
function hashPassWithSaltInBase64(password, secureSalt) {
return hashVarargInBase64(password, secureSalt);
}
/**
* Hash a variable number of arguments concatenated
* with the SHA-256 crypto standard hash function and
* return result in hex.
* @param {...any} args
* @return {digest} Sha-256 hash in hex
*/
function hashVarargInHex(...args) {
return hashInput(args.join("")).digest("hex");
}
/**
* Hash a variable number of arguments concatenated
* with the SHA-256 crypto standard hash function and
* return result in Base64.
* @param {...any} args
* @return {digest} Sha-256 hash in Base64
*/
function hashVarargInBase64(...args) {
return hashInput(args.join("")).digest("base64");
}
/**
* Hash a variable number of arguments concatenated
* with the SHA-256 crypto standard hash function and
* return result.
* @param {any} input
* @return {digest} Sha-256 hash
*/
function hashInput(input) {
return crypto
.createHash("sha256")
.update(input);
}
module.exports = {
generateSecureRandomBytesInHex,
generateSecureRandomBytesInBase64,
generateSecureSaltInHex,
generateSecureSaltInBase64,
hashPassWithSaltInHex,
hashPassWithSaltInBase64,
hashVarargInHex,
hashVarargInBase64,
};
|