mirror of
https://github.com/phpseclib/phpseclib.git
synced 2025-01-27 00:58:25 +00:00
don't re-generate Eval mode stuff when only IV has changed
This commit is contained in:
parent
23ffa6452e
commit
eddbdcc66c
@ -186,7 +186,7 @@ class ChaCha20 extends Salsa20
|
|||||||
*
|
*
|
||||||
* @param string $nonce
|
* @param string $nonce
|
||||||
*/
|
*/
|
||||||
public function setNonce($nonce)
|
public function setNonce($nonce)
|
||||||
{
|
{
|
||||||
if (!is_string($nonce)) {
|
if (!is_string($nonce)) {
|
||||||
throw new \UnexpectedValueException('The nonce should be a string');
|
throw new \UnexpectedValueException('The nonce should be a string');
|
||||||
@ -238,7 +238,7 @@ class ChaCha20 extends Salsa20
|
|||||||
|
|
||||||
$this->enbuffer = $this->debuffer = ['ciphertext' => '', 'counter' => $this->counter];
|
$this->enbuffer = $this->debuffer = ['ciphertext' => '', 'counter' => $this->counter];
|
||||||
|
|
||||||
$this->changed = false;
|
$this->changed = $this->nonIVChanged = false;
|
||||||
|
|
||||||
if ($this->nonce === false) {
|
if ($this->nonce === false) {
|
||||||
throw new InsufficientSetupException('No nonce has been defined');
|
throw new InsufficientSetupException('No nonce has been defined');
|
||||||
|
@ -351,6 +351,15 @@ abstract class SymmetricKey
|
|||||||
*/
|
*/
|
||||||
protected $changed = true;
|
protected $changed = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does Eval engie need to be (re)initialized?
|
||||||
|
*
|
||||||
|
* @see self::setup()
|
||||||
|
* @var bool
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
protected $nonIVChanged = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Padding status
|
* Padding status
|
||||||
*
|
*
|
||||||
@ -742,7 +751,6 @@ abstract class SymmetricKey
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->nonce = $nonce;
|
$this->nonce = $nonce;
|
||||||
$this->changed = true;
|
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -859,7 +867,6 @@ abstract class SymmetricKey
|
|||||||
|
|
||||||
$this->key = $key;
|
$this->key = $key;
|
||||||
$this->key_length = strlen($key);
|
$this->key_length = strlen($key);
|
||||||
$this->changed = true;
|
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2104,7 +2111,6 @@ abstract class SymmetricKey
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->continuousBuffer = false;
|
$this->continuousBuffer = false;
|
||||||
$this->changed = true;
|
|
||||||
|
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
}
|
}
|
||||||
@ -2271,7 +2277,7 @@ abstract class SymmetricKey
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->changed = true;
|
$this->changed = $this->nonIVChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2404,9 +2410,13 @@ abstract class SymmetricKey
|
|||||||
$this->setupKey();
|
$this->setupKey();
|
||||||
break;
|
break;
|
||||||
case self::ENGINE_EVAL:
|
case self::ENGINE_EVAL:
|
||||||
$this->setupKey();
|
if ($this->nonIVChanged) {
|
||||||
$this->setupInlineCrypt();
|
$this->setupKey();
|
||||||
|
$this->setupInlineCrypt();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->nonIVChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -395,7 +395,7 @@ class RC2 extends BlockCipher
|
|||||||
|
|
||||||
$this->key = call_user_func_array('pack', $l);
|
$this->key = call_user_func_array('pack', $l);
|
||||||
$this->key_length = strlen($this->key);
|
$this->key_length = strlen($this->key);
|
||||||
$this->changed = true;
|
$this->changed = $this->nonIVChanged = true;
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +310,6 @@ class RC4 extends StreamCipher
|
|||||||
{
|
{
|
||||||
if ($this->changed) {
|
if ($this->changed) {
|
||||||
$this->setup();
|
$this->setup();
|
||||||
$this->changed = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$stream = &$this->stream[$mode];
|
$stream = &$this->stream[$mode];
|
||||||
|
@ -267,7 +267,7 @@ class Rijndael extends BlockCipher
|
|||||||
|
|
||||||
$this->Nb = $length >> 5;
|
$this->Nb = $length >> 5;
|
||||||
$this->block_size = $length >> 3;
|
$this->block_size = $length >> 3;
|
||||||
$this->changed = true;
|
$this->changed = $this->nonIVChanged = true;
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ class Salsa20 extends StreamCipher
|
|||||||
|
|
||||||
$this->enbuffer = $this->debuffer = ['ciphertext' => '', 'counter' => $this->counter];
|
$this->enbuffer = $this->debuffer = ['ciphertext' => '', 'counter' => $this->counter];
|
||||||
|
|
||||||
$this->changed = false;
|
$this->changed = $this->nonIVChanged = false;
|
||||||
|
|
||||||
if ($this->nonce === false) {
|
if ($this->nonce === false) {
|
||||||
throw new InsufficientSetupException('No nonce has been defined');
|
throw new InsufficientSetupException('No nonce has been defined');
|
||||||
|
@ -271,7 +271,7 @@ class TripleDES extends DES
|
|||||||
// copied from self::setKey()
|
// copied from self::setKey()
|
||||||
$this->key = $key;
|
$this->key = $key;
|
||||||
$this->key_length = strlen($key);
|
$this->key_length = strlen($key);
|
||||||
$this->changed = true;
|
$this->changed = $this->nonIVChanged = true;
|
||||||
$this->setEngine();
|
$this->setEngine();
|
||||||
|
|
||||||
if ($this->mode_3cbc) {
|
if ($this->mode_3cbc) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user