/** * Crea una clave temporal para encriptar la clave maestra y guardarla. * * @param int $maxTime El tiempo máximo de validez de la clave * @return bool|string */ public static function setTempMasterPass($maxTime = 14400) { // Encriptar la clave maestra con hash aleatorio generado $randomKey = Crypt::generateAesKey(Util::generate_random_bytes()); $pass = Crypt::mkCustomMPassEncrypt($randomKey, SessionUtil::getSessionMPass()); if (!is_array($pass)) { return false; } ConfigDB::setCacheConfigValue('tempmaster_pass', bin2hex($pass[0])); ConfigDB::setCacheConfigValue('tempmaster_passiv', bin2hex($pass[1])); ConfigDB::setCacheConfigValue('tempmaster_passhash', Crypt::mkHashPassword($randomKey)); ConfigDB::setCacheConfigValue('tempmaster_passtime', time()); ConfigDB::setCacheConfigValue('tempmaster_maxtime', time() + $maxTime); ConfigDB::setCacheConfigValue('tempmaster_attempts', 0); if (!ConfigDB::writeConfig(true)) { return false; } // Guardar la clave temporal hasta que finalice la sesión Session::setTemporaryMasterPass($randomKey); return $randomKey; }
/** * Desencriptar la clave maestra de la sesión. * * @return string con la clave maestra */ public static function getSessionMPass() { $cryptPass = Crypt::generateAesKey(session_id()); return Crypt::getDecrypt(Session::getMPass(), Session::getMPassIV(), $cryptPass); }
/** * Obtener una clave de cifrado basada en la clave del usuario y un salt. * * @return string con la clave de cifrado */ private function getCypherPass() { return Crypt::generateAesKey($this->_userPass . $this->_userLogin); }