"use strict"; const Encoded = require("./Encoded"); /** * @constructor * @desc Stores hashed pass-phrase as decoded Strings. * @param {String} key - The decoded key * @param {String} salt - The decoded salt * @param {Number} iter - The number of PBKDF2 iterations */ function Decoded (key, salt, iter) { this.key = key; this.salt = salt; this.iter = iter; } /** * @method * @memberof Decoded * @desc Encodes the Decoded object into an Encoded object. * @param {String} enc - Encoding scheme to be used * @returns {Encoded} The Encoded object * @see Encoded */ Decoded.prototype.encode = function (enc) { const encodedKey = new Buffer(this.key, enc); const encodedSalt = new Buffer(this.salt, enc); const iter = this.iter; return new Encoded(encodedKey, encodedSalt, iter); } /** * @method * @memberof Decoded * @desc Concatenates the stored hash data into a hash string. * @desc The hash string has the format `iter:salt:key`. * @returns {String} The hash string */ Decoded.prototype.toString = function () { return `${this.iter}:${this.salt}:${this.key}`; } /** * @method * @memberof Decoded * @returns {String} */ Decoded.prototype.getKey = function () { return this.key; } /** * @method * @memberof Decoded * @param {Buffer} key */ Decoded.prototype.setKey = function (key) { this.key = key; } /** * @method * @memberof Decoded * @returns {Buffer} */ Decoded.prototype.getSalt = function () { return this.salt; } /** * @method * @memberof Decoded * @param {Buffer} salt */ Decoded.prototype.setSalt = function (salt) { this.salt = salt; } /** * @method * @memberof Decoded * @returns {Number} */ Decoded.prototype.getIteration = function () { return this.iter; } /** * @method * @memberof Decoded * @param {Number} iter */ Decoded.prototype.setIteration = function (iter) { this.iter = iter; } module.exports = Decoded;