/**
 * Collection of helper function that are Ampache specific.
 */

// NPM imports
import jsSHA from "jssha";


/**
 * Build an HMAC token for authentication against Ampache API.
 *
 * @param   password    User password to derive HMAC from.
 * @return  An object with the generated HMAC and time used.
 *
 * @remark  This builds an HMAC as expected by Ampache API, which is not a
 *          standard HMAC.
 */
export function buildHMAC(password) {
    const time = Math.floor(Date.now() / 1000);

    let shaObj = new jsSHA("SHA-256", "TEXT");
    shaObj.update(password);
    const key = shaObj.getHash("HEX");

    shaObj = new jsSHA("SHA-256", "TEXT");
    shaObj.update(time + key);

    return {
        time: time,
        passphrase: shaObj.getHash("HEX"),
    };
}