. */ namespace SP\Core\Crypt; use SP\Core\Context\SessionContext; /** * Class Session * * @package SP\Core\Crypt */ class Session { /** * Devolver la clave maestra de la sesión * * @param SessionContext $sessionContext * @return string * @throws \Defuse\Crypto\Exception\CryptoException */ public static function getSessionKey(SessionContext $sessionContext) { return $sessionContext->getVault()->getData(self::getKey($sessionContext)); } /** * @param SessionContext $sessionContext * @return string */ private static function getKey(SessionContext $sessionContext) { return session_id() . $sessionContext->getSidStartTime(); } /** * Guardar la clave maestra en la sesión * * @param $data * @param SessionContext $sessionContext * @throws \Defuse\Crypto\Exception\CryptoException */ public static function saveSessionKey($data, SessionContext $sessionContext) { $sessionContext->setVault((new Vault())->saveData($data, self::getKey($sessionContext))); } /** * Regenerar la clave de sesión * * @param SessionContext $sessionContext * @throws \Defuse\Crypto\Exception\CryptoException */ public static function reKey(SessionContext $sessionContext) { debugLog(__METHOD__); $oldSeed = session_id() . $sessionContext->getSidStartTime(); session_regenerate_id(true); $newSeed = session_id() . $sessionContext->setSidStartTime(time()); $sessionContext->setVault($sessionContext->getVault()->reKey($newSeed, $oldSeed)); } }