mirror of
https://github.com/danog/MadelineProto.git
synced 2024-11-27 10:34:38 +01:00
Reduce overhead
This commit is contained in:
parent
7b2b69e97d
commit
9f4e245c8d
@ -32,7 +32,7 @@ use danog\MadelineProto\Stream\ConnectionContext;
|
|||||||
*
|
*
|
||||||
* @author Daniil Gentili <daniil@daniil.it>
|
* @author Daniil Gentili <daniil@daniil.it>
|
||||||
*/
|
*/
|
||||||
class ObfuscatedStream implements BufferedProxyStreamInterface
|
class ObfuscatedStream extends CtrStream implements BufferedProxyStreamInterface
|
||||||
{
|
{
|
||||||
use Stream;
|
use Stream;
|
||||||
|
|
||||||
@ -76,57 +76,23 @@ class ObfuscatedStream implements BufferedProxyStreamInterface
|
|||||||
$iv = \substr($random, 40, 16);
|
$iv = \substr($random, 40, 16);
|
||||||
$ivRev = \substr($reversed, 40, 16);
|
$ivRev = \substr($reversed, 40, 16);
|
||||||
|
|
||||||
$this->stream = new CtrStream;
|
parent::setExtra(
|
||||||
$this->stream->setExtra([
|
[
|
||||||
'encrypt' => [
|
'encrypt' => [
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
'iv' => $iv
|
'iv' => $iv
|
||||||
],
|
],
|
||||||
'decrypt' => [
|
'decrypt' => [
|
||||||
'key' => $keyRev,
|
'key' => $keyRev,
|
||||||
'iv' => $ivRev
|
'iv' => $ivRev
|
||||||
|
]
|
||||||
]
|
]
|
||||||
]);
|
);
|
||||||
yield $this->stream->connect($ctx);
|
yield from parent::connectGenerator($ctx);
|
||||||
|
|
||||||
$random = \substr_replace($random, \substr(@$this->stream->getEncryptor()->encrypt($random), 56, 8), 56, 8);
|
$random = \substr_replace($random, \substr(@$this->getEncryptor()->encrypt($random), 56, 8), 56, 8);
|
||||||
|
|
||||||
yield $this->stream->getPlainStream()->write($random);
|
yield $this->getPlainStream()->write($random);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Async close.
|
|
||||||
*
|
|
||||||
* @return Promise
|
|
||||||
*/
|
|
||||||
public function disconnect()
|
|
||||||
{
|
|
||||||
return $this->stream->disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get read buffer asynchronously.
|
|
||||||
*
|
|
||||||
* @param int $length Length of payload, as detected by this layer
|
|
||||||
*
|
|
||||||
* @return Promise
|
|
||||||
*/
|
|
||||||
public function getReadBuffer(&$length): Promise
|
|
||||||
{
|
|
||||||
return $this->stream->getReadBuffer($length);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get write buffer asynchronously.
|
|
||||||
*
|
|
||||||
* @param int $length Total length of data that is going to be piped in the buffer
|
|
||||||
*
|
|
||||||
* @return Promise
|
|
||||||
*/
|
|
||||||
public function getWriteBuffer(int $length, string $append = ''): Promise
|
|
||||||
{
|
|
||||||
return $this->stream->getWriteBuffer($length, $append);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -151,16 +117,6 @@ class ObfuscatedStream implements BufferedProxyStreamInterface
|
|||||||
$this->extra = $extra;
|
$this->extra = $extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*
|
|
||||||
* @return EncryptableSocket
|
|
||||||
*/
|
|
||||||
public function getSocket(): EncryptableSocket
|
|
||||||
{
|
|
||||||
return $this->stream->getSocket();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getName(): string
|
public static function getName(): string
|
||||||
{
|
{
|
||||||
return __CLASS__;
|
return __CLASS__;
|
||||||
|
Loading…
Reference in New Issue
Block a user