--- title: danog\MadelineProto\Stream\Common\CtrStream: AES CTR stream wrapper. description: Manages AES CTR encryption/decryption --- # `danog\MadelineProto\Stream\Common\CtrStream` [Back to index](../../../../index.md) > Author: Daniil Gentili AES CTR stream wrapper. Manages AES CTR encryption/decryption ## Method list: * `connect(\danog\MadelineProto\Stream\ConnectionContext $ctx): \Generator` * `disconnect(): \Amp\Promise` * `getWriteBufferGenerator(int $length): \Generator` * `getReadBufferGenerator(int $length): \Generator` * `bufferReadGenerator(\Amp\Promise $promise): \Generator That resolves with a string when the provided promise is resolved and the data is decrypted` * `bufferWrite(string $data): \Promise Succeeds once the data has been successfully written to the stream.` * `setExtra(array $data): void` * `getSocket(): \Amp\Socket\EncryptableSocket` * `getStream(): \danog\MadelineProto\Stream\RawStreamInterface` * `getReadBuffer(int $length): \Amp\Promise` * `getWriteBuffer(int $length, string $append): \Amp\Promise` ## Methods: ### `connect(\danog\MadelineProto\Stream\ConnectionContext $ctx): \Generator` Connect to stream. Parameters: * `$ctx`: `\danog\MadelineProto\Stream\ConnectionContext` The connection context #### See also: * [`\danog\MadelineProto\Stream\ConnectionContext`: Connection context class.](../ConnectionContext.md) * `\Generator` ### `disconnect(): \Amp\Promise` Async close. #### See also: * `\Amp\Promise` ### `getWriteBufferGenerator(int $length): \Generator` Get write buffer asynchronously. Parameters: * `$length`: `int` Length of data that is going to be written to the write buffer #### See also: * `\Generator` ### `getReadBufferGenerator(int $length): \Generator` Get read buffer asynchronously. Parameters: * `$length`: `int` Length of payload, as detected by this layer #### See also: * `\Generator` ### `bufferReadGenerator(\Amp\Promise $promise): \Generator That resolves with a string when the provided promise is resolved and the data is decrypted` Decrypts read data asynchronously. Parameters: * `$promise`: `\Amp\Promise` Promise that resolves with a string when new data is available or `null` if the stream has closed. Return value: That resolves with a string when the provided promise is resolved and the data is decrypted #### See also: * `\Amp\Promise` ### `bufferWrite(string $data): \Promise Succeeds once the data has been successfully written to the stream.` Writes data to the stream. Parameters: * `$data`: `string` Bytes to write. Return value: Succeeds once the data has been successfully written to the stream. ### `setExtra(array $data): void` Set obfuscation keys/IVs. Parameters: * `$data`: `array` Keys ### `getSocket(): \Amp\Socket\EncryptableSocket` {@inheritdoc} #### See also: * `\Amp\Socket\EncryptableSocket` ### `getStream(): \danog\MadelineProto\Stream\RawStreamInterface` {@inheritDoc} #### See also: * [`\danog\MadelineProto\Stream\RawStreamInterface`: Raw stream interface.](../RawStreamInterface.md) ### `getReadBuffer(int $length): \Amp\Promise` Get read buffer asynchronously. Parameters: * `$length`: `int` Length of payload, as detected by this layer #### See also: * `\Amp\Promise` ### `getWriteBuffer(int $length, string $append): \Amp\Promise` Get write buffer asynchronously. Parameters: * `$length`: `int` Total length of data that is going to be piped in the buffer * `$append`: `string` Data to append after entire buffer is written #### See also: * `\Amp\Promise` --- Generated by [danog/phpdoc](https://phpdoc.daniil.it)