/** * Encrypts hash γ same way as during ravel process to find corresponding message */ public function prePhase(StashedDataPackage $stashedDataPackage) { $stashedDataPackage->setHashGamma($this->_hasher->hashSha($stashedDataPackage->getHashGamma())); $cipherCredentials = $this->_yamler->readCipherFile($fileName = $stashedDataPackage->getHashGamma()); if (!$cipherCredentials) { return $stashedDataPackage->setError('UnravelFilter::prePhase - cipher file not found'); } $this->_flashStorage->rememberCipherFileName($stashedDataPackage->getHashGamma()); $this->_flashStorage->rememberCipherCredentials($cipherCredentials); $stashedDataPackage->setHashGamma($this->_cipher->encrypt($stashedDataPackage->getHashGamma(), $cipherCredentials['key'], $cipherCredentials['iv'])); return $stashedDataPackage; }
/** * @ORM\PostLoad * * Decrypting data after finding one in DB */ public function UnravelPhase(StashedDataPackage $stashedDataPackage, LifecycleEventArgs $event) { //Event triggers only if hash β is present in current request $clientHashBeta = $this->_stashedDataPackageManager->getClientHashBeta(); if ($clientHashBeta) { $cipherCredentials = $this->_flashStorage->recallCipherCredentials(); $hashServerBeta = $this->_cipher->decrypt(stream_get_contents($stashedDataPackage->getHashBeta()), $cipherCredentials['key'], $cipherCredentials['iv']); if ($this->_hasher->verifyHashBcrypt($clientHashBeta, $hashServerBeta)) { $cipherData = stream_get_contents($stashedDataPackage->getData()); $stashedDataPackage->setData($this->_cipher->decrypt($cipherData, $clientHashBeta, $stashedDataPackage->getSaltBeta())); } else { $stashedDataPackage->setError("StashedDataPackagePhase::UnravelPhase - no record found"); } } }