Files
2025-03-12 17:06:23 +01:00

288 lines
6.6 KiB
PHP

<?php
require sfConfig::get('sf_plugins_dir') . '/stSecurityPlugin/lib/vendor/defuse/autoload.php';
class Crypt
{
const VERSION = 2;
protected static $instance = null;
protected $progressbarMsg = '';
protected $encryptKey = null;
/**
* Tworzy instancje obiektu
*
* @return Crypt
*/
public static function getInstance()
{
if (null === self::$instance)
{
self::$instance = new self();
}
return self::$instance;
}
public function executeCryptAllUsers($step)
{
$c = new Criteria();
$c->add(UserDataPeer::CRYPT, 0);
$c->setLimit(1);
$uncryptUsers = UserDataPeer::doSelect($c);
if ($uncryptUsers)
{
foreach ($uncryptUsers as $userData)
{
$userData->save(null, true);
}
}
return $step + 1;
}
public function executeCryptAllOrderUsersBilling($step)
{
$c = new Criteria();
$c->add(OrderUserDataBillingPeer::CRYPT, 0);
$c->setLimit(1);
$uncryptUsersBilling = OrderUserDataBillingPeer::doSelect($c);
if ($uncryptUsersBilling)
{
foreach ($uncryptUsersBilling as $userDataBilling)
{
$userDataBilling->save(null, true);
}
}
return $step + 1;
}
public function executeCryptAllOrderUsersDelivery($step)
{
$c = new Criteria();
$c->add(OrderUserDataDeliveryPeer::CRYPT, 0);
$c->setLimit(1);
$uncryptUsersDelivery = OrderUserDataDeliveryPeer::doSelect($c);
if ($uncryptUsersDelivery)
{
foreach ($uncryptUsersDelivery as $userDataDelivery)
{
$userDataDelivery->save(null, true);
}
}
return $step + 1;
}
public function close()
{
$i18n = sfContext::getInstance()->getI18N();
$this->progressbarMsg = $i18n->__('Zakończono powodzeniem.', null, 'stSecurityBackend');
}
public function getMessage()
{
return $this->progressbarMsg;
}
public function isEncrypted($version)
{
return $version > 0;
}
public function checkVersion($version)
{
return $version == self::VERSION;
}
public function Encrypt($string)
{
if (!$string)
{
return $string;
}
if (self::VERSION == 1)
{
$key = self::getShopHash();
if (null === $key || !self::is_mcrypt())
{
return $string;
}
/* Open module, and create IV */
$td = mcrypt_module_open('des', '', 'cfb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1)
{
/* Encrypt data */
/**
* Hack for warning error message that $string is empty.
*/
if (empty($string))
$c_t = @mcrypt_generic($td, $string);
else
$c_t = mcrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$c_t = $iv . $c_t;
return base64_encode($c_t);
} //end if
}
else
{
return \Defuse\Crypto\Crypto::encrypt($string, $this->getEncryptKey());
}
}
/**
* @param string $license
* @return string|null
* @deprecated use getEncryptKey
*/
public static function getShopHash($license = null)
{
if (null !== $license)
{
return md5($license);
}
$config = stConfig::getInstance('stRegister');
if ($config->get('shop_hash') && $config->get('shop_hash') != "")
{
return $config->get('shop_hash');
}
return null;
}
/**
* @return bool
* @deprecated
*/
public static function is_mcrypt()
{
if (function_exists("mcrypt_module_open"))
{
return true;
}
else
{
return false;
}
}
protected function getEncryptKey()
{
if (null === $this->encryptKey)
{
$cryptKeyPath = sfConfig::get('sf_data_dir') . '/encrypt.key.php';
if (!is_file($cryptKeyPath))
{
$key = \Defuse\Crypto\Key::createNewRandomKey();
$cryptKeyPath = file_put_contents($cryptKeyPath, sprintf("<?php\nreturn \Defuse\Crypto\Key::loadFromAsciiSafeString('%s');", $key->saveToAsciiSafeString()));
$this->encryptKey = $key;
}
else
{
$this->encryptKey = include $cryptKeyPath;
}
}
return $this->encryptKey;
}
public function Decrypt($string, $version = null)
{
if (!$string)
{
return $string;
}
if (null === $version || $version < 2)
{
$key = self::getShopHash();
if (null === $key || !self::is_mcrypt())
{
return $string;
}
$string = base64_decode($string);
/* Open module, and create IV */
$td = mcrypt_module_open('des', '', 'cfb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($string, 0, $iv_size);
$string = substr($string, $iv_size);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1)
{
/* Encrypt data */
$c_t = @mdecrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $c_t;
} //end if
}
else
{
return \Defuse\Crypto\Crypto::decrypt($string, $this->getEncryptKey());
}
}
public function executeCryptAllInvoiceCustomer($step)
{
$c = new Criteria();
$c->add(InvoiceUserCustomerPeer::CRYPT, 0);
$c->setLimit(1);
$uncryptInvoiceUserCustomer = InvoiceUserCustomerPeer::doSelect($c);
if ($uncryptInvoiceUserCustomer)
{
foreach ($uncryptInvoiceUserCustomer as $invoiceUserCustomer)
{
$invoiceUserCustomer->save(null, true);
}
}
return $step + 1;
}
public function executeCryptAllInvoiceSeller($step)
{
$c = new Criteria();
$c->add(InvoiceUserSellerPeer::CRYPT, 0);
$c->setLimit(1);
$uncryptInvoiceUserSeller = InvoiceUserSellerPeer::doSelect($c);
if ($uncryptInvoiceUserSeller)
{
foreach ($uncryptInvoiceUserSeller as $invoiceUserSeller)
{
$invoiceUserSeller->save(null, true);
}
}
return $step + 1;
}
}