UNPKG

vodafone-station-cli

Version:

Access your Vodafone Station from the comfort of the command line.

39 lines (38 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareParameters = prepareParameters; exports.deriveKey = deriveKey; exports.deriveKeyTechnicolor = deriveKeyTechnicolor; exports.encrypt = encrypt; exports.decrypt = decrypt; const tslib_1 = require("tslib"); /* eslint-disable new-cap */ const sjcl_1 = tslib_1.__importDefault(require("sjcl")); const SJCL_ITERATIONS = 1000; const SJCL_KEYSIZEBITS = 128; const SJCL_TAGLENGTH = 128; function prepareParameters(derivedKey, ivHex, authData) { return { authData: sjcl_1.default.codec.utf8String.toBits(authData), iv: sjcl_1.default.codec.hex.toBits(ivHex), prf: new sjcl_1.default.cipher.aes(sjcl_1.default.codec.hex.toBits(derivedKey)), }; } function deriveKey(password, salt) { const derivedKeyBits = sjcl_1.default.misc.pbkdf2(password, sjcl_1.default.codec.hex.toBits(salt), SJCL_ITERATIONS, SJCL_KEYSIZEBITS); return sjcl_1.default.codec.hex.fromBits(derivedKeyBits); } function deriveKeyTechnicolor(password, salt) { const derivedKeyBits = sjcl_1.default.misc.pbkdf2(password, salt, SJCL_ITERATIONS, SJCL_KEYSIZEBITS); return sjcl_1.default.codec.hex.fromBits(derivedKeyBits); } function encrypt(derivedKey, plainText, ivHex, authData) { const bitParams = prepareParameters(derivedKey, ivHex, authData); const encryptedBits = sjcl_1.default.mode.ccm.encrypt(bitParams.prf, sjcl_1.default.codec.utf8String.toBits(plainText), bitParams.iv, bitParams.authData, SJCL_TAGLENGTH); return sjcl_1.default.codec.hex.fromBits(encryptedBits); } function decrypt(derivedKey, cipherTextHex, ivHex, authData) { const bitParams = prepareParameters(derivedKey, ivHex, authData); const decryptedBits = sjcl_1.default.mode.ccm.decrypt(bitParams.prf, sjcl_1.default.codec.hex.toBits(cipherTextHex), bitParams.iv, bitParams.authData, SJCL_TAGLENGTH); return sjcl_1.default.codec.utf8String.fromBits(decryptedBits); }