16 private static $_cipherInfo;
18 private const SUPPORTED_CIPHER_MODE_COMBINATIONS = [
19 MCRYPT_BLOWFISH => [MCRYPT_MODE_ECB],
20 MCRYPT_RIJNDAEL_128 => [MCRYPT_MODE_ECB],
21 MCRYPT_RIJNDAEL_256 => [MCRYPT_MODE_CBC],
26 $this->_key = substr(__CLASS__, -32, 32);
38 }
while (strlen(
$result) < $length);
39 return substr(
$result, -$length);
44 $filename =
__DIR__ .
'/Crypt/_files/_cipher_info.php';
46 if (!self::$_cipherInfo) {
47 self::$_cipherInfo = include $filename;
59 return self::$_cipherInfo[$cipherName][$modeName][
'key_size'];
70 return self::$_cipherInfo[$cipherName][$modeName][
'iv_size'];
76 public function getCipherModeCombinations(): array
79 foreach (self::SUPPORTED_CIPHER_MODE_COMBINATIONS as $cipher => $modes) {
81 foreach ($modes as
$mode) {
96 $crypt = new \Magento\Framework\Encryption\Crypt($this->_key, $cipher,
$mode,
$initVector);
98 $this->assertEquals($cipher, $crypt->getCipher());
99 $this->assertEquals(
$mode, $crypt->getMode());
100 $this->assertEquals(
$initVector, $crypt->getInitVector());
106 public function getConstructorExceptionData()
108 $key = substr(__CLASS__, -32, 32);
110 foreach (self::SUPPORTED_CIPHER_MODE_COMBINATIONS as $cipher => $modes) {
112 foreach ($modes as
$mode) {
116 $result[
'tooLongKey-' . $cipher .
'-' .
$mode .
'-false'] = [$tooLongKey, $cipher,
$mode,
false];
117 $keyPrefix =
'key-' . $cipher .
'-' .
$mode;
118 $result[$keyPrefix .
'-tooShortInitVector'] = [$key, $cipher,
$mode, $tooShortInitVector];
119 $result[$keyPrefix .
'-tooLongInitVector'] = [$key, $cipher,
$mode, $tooLongInitVector];
136 $cryptExpected = new \Magento\Framework\Encryption\Crypt($this->_key, MCRYPT_BLOWFISH, MCRYPT_MODE_ECB,
false);
137 $cryptActual = new \Magento\Framework\Encryption\Crypt($this->_key);
139 $this->assertEquals($cryptExpected->getCipher(), $cryptActual->getCipher());
140 $this->assertEquals($cryptExpected->getMode(), $cryptActual->getMode());
141 $this->assertEquals($cryptExpected->getInitVector(), $cryptActual->getInitVector());
149 $fixturesFilename =
__DIR__ .
'/Crypt/_files/_crypt_fixtures.php';
151 $result = include $fixturesFilename;
153 foreach (
$result as &$cryptParams) {
154 $cryptParams[5] = base64_decode($cryptParams[5]);
165 $crypt = new \Magento\Framework\Encryption\Crypt($key, $cipher,
$mode,
$initVector);
166 $actualData = $crypt->encrypt($inputData);
167 $this->assertEquals($expectedData, $actualData);
175 $crypt = new \Magento\Framework\Encryption\Crypt($key, $cipher,
$mode,
$initVector);
176 $actualData = $crypt->decrypt($inputData);
177 $this->assertEquals($expectedData, $actualData);
185 $crypt1 = new \Magento\Framework\Encryption\Crypt($this->_key, $cipher,
$mode,
true);
186 $initVector1 = $crypt1->getInitVector();
188 $crypt2 = new \Magento\Framework\Encryption\Crypt($this->_key, $cipher,
$mode,
true);
189 $initVector2 = $crypt2->getInitVector();
192 $this->assertEquals($expectedSize, strlen($initVector1));
193 $this->assertEquals($expectedSize, strlen($initVector2));
194 $this->assertNotEquals($initVector2, $initVector1);
202 $crypt = new \Magento\Framework\Encryption\Crypt($this->_key, $cipher,
$mode,
false);
203 $actualInitVector = $crypt->getInitVector();
206 $this->assertEquals($expectedInitVector, $actualInitVector);
testConstructor($cipher, $mode)
testConstructorDefaults()
defined('TESTS_BP')||define('TESTS_BP' __DIR__
if($exist=($block->getProductCollection() && $block->getProductCollection() ->getSize())) $mode
testDecrypt($key, $cipher, $mode, $initVector, $expectedData, $inputData)
_getInitVectorSize($cipherName, $modeName)
testInitVectorNone($cipher, $mode)
_getRandomString($length)
testConstructorException($key, $cipher, $mode, $initVector)
testInitVectorRandom($cipher, $mode)
testEncrypt($key, $cipher, $mode, $initVector, $inputData, $expectedData)
_getKeySize($cipherName, $modeName)