Fix secret chat's completeRekey (#753)
* Fix secret chat's completeRekey * Update AuthKeyHandler.php Co-authored-by: Daniil Gentili <daniil@daniil.it>
This commit is contained in:
parent
48368be109
commit
0d6f09565f
@ -248,7 +248,7 @@ trait AuthKeyHandler
|
|||||||
throw new \danog\MadelineProto\SecurityException('Invalid key fingerprint!');
|
throw new \danog\MadelineProto\SecurityException('Invalid key fingerprint!');
|
||||||
}
|
}
|
||||||
yield $this->methodCallAsyncRead('messages.sendEncryptedService', ['peer' => $chat, 'message' => ['_' => 'decryptedMessageService', 'action' => ['_' => 'decryptedMessageActionCommitKey', 'exchange_id' => $params['exchange_id'], 'key_fingerprint' => $key['fingerprint']]]], ['datacenter' => $this->datacenter->curdc]);
|
yield $this->methodCallAsyncRead('messages.sendEncryptedService', ['peer' => $chat, 'message' => ['_' => 'decryptedMessageService', 'action' => ['_' => 'decryptedMessageActionCommitKey', 'exchange_id' => $params['exchange_id'], 'key_fingerprint' => $key['fingerprint']]]], ['datacenter' => $this->datacenter->curdc]);
|
||||||
unset($this->temp_rekeyed_secret_chats[$chat]);
|
unset($this->temp_rekeyed_secret_chats[$params['exchange_id']]);
|
||||||
$this->secret_chats[$chat]['rekeying'] = [0];
|
$this->secret_chats[$chat]['rekeying'] = [0];
|
||||||
$this->secret_chats[$chat]['old_key'] = $this->secret_chats[$chat]['key'];
|
$this->secret_chats[$chat]['old_key'] = $this->secret_chats[$chat]['key'];
|
||||||
$this->secret_chats[$chat]['key'] = $key;
|
$this->secret_chats[$chat]['key'] = $key;
|
||||||
@ -267,10 +267,10 @@ trait AuthKeyHandler
|
|||||||
*/
|
*/
|
||||||
private function completeRekey(int $chat, array $params): \Generator
|
private function completeRekey(int $chat, array $params): \Generator
|
||||||
{
|
{
|
||||||
if ($this->secret_chats[$chat]['rekeying'][0] !== 2 || !isset($this->temp_rekeyed_secret_chats['fingerprint'])) {
|
if ($this->secret_chats[$chat]['rekeying'][0] !== 2 || !isset($this->temp_rekeyed_secret_chats[$params['exchange_id']]['fingerprint'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($this->temp_rekeyed_secret_chats['fingerprint'] !== $params['key_fingerprint']) {
|
if ($this->temp_rekeyed_secret_chats[$params['exchange_id']]['fingerprint'] !== $params['key_fingerprint']) {
|
||||||
yield $this->methodCallAsyncRead('messages.sendEncryptedService', ['peer' => $chat, 'message' => ['_' => 'decryptedMessageService', 'action' => ['_' => 'decryptedMessageActionAbortKey', 'exchange_id' => $params['exchange_id']]]], ['datacenter' => $this->datacenter->curdc]);
|
yield $this->methodCallAsyncRead('messages.sendEncryptedService', ['peer' => $chat, 'message' => ['_' => 'decryptedMessageService', 'action' => ['_' => 'decryptedMessageActionAbortKey', 'exchange_id' => $params['exchange_id']]]], ['datacenter' => $this->datacenter->curdc]);
|
||||||
|
|
||||||
throw new \danog\MadelineProto\SecurityException('Invalid key fingerprint!');
|
throw new \danog\MadelineProto\SecurityException('Invalid key fingerprint!');
|
||||||
@ -278,7 +278,7 @@ trait AuthKeyHandler
|
|||||||
$this->logger->logger('Completing rekeying of secret chat '.$chat.'...', \danog\MadelineProto\Logger::VERBOSE);
|
$this->logger->logger('Completing rekeying of secret chat '.$chat.'...', \danog\MadelineProto\Logger::VERBOSE);
|
||||||
$this->secret_chats[$chat]['rekeying'] = [0];
|
$this->secret_chats[$chat]['rekeying'] = [0];
|
||||||
$this->secret_chats[$chat]['old_key'] = $this->secret_chats[$chat]['key'];
|
$this->secret_chats[$chat]['old_key'] = $this->secret_chats[$chat]['key'];
|
||||||
$this->secret_chats[$chat]['key'] = $this->temp_rekeyed_secret_chats[$chat];
|
$this->secret_chats[$chat]['key'] = $this->temp_rekeyed_secret_chats[$params['exchange_id']];
|
||||||
$this->secret_chats[$chat]['ttr'] = 100;
|
$this->secret_chats[$chat]['ttr'] = 100;
|
||||||
$this->secret_chats[$chat]['updated'] = \time();
|
$this->secret_chats[$chat]['updated'] = \time();
|
||||||
unset($this->temp_rekeyed_secret_chats[$params['exchange_id']]);
|
unset($this->temp_rekeyed_secret_chats[$params['exchange_id']]);
|
||||||
@ -347,9 +347,7 @@ trait AuthKeyHandler
|
|||||||
if (isset($this->temp_requested_secret_chats[$chat])) {
|
if (isset($this->temp_requested_secret_chats[$chat])) {
|
||||||
unset($this->temp_requested_secret_chats[$chat]);
|
unset($this->temp_requested_secret_chats[$chat]);
|
||||||
}
|
}
|
||||||
if (isset($this->temp_rekeyed_secret_chats[$chat])) {
|
|
||||||
unset($this->temp_rekeyed_secret_chats[$chat]);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
yield $this->methodCallAsyncRead('messages.discardEncryption', ['chat_id' => $chat], ['datacenter' => $this->datacenter->curdc]);
|
yield $this->methodCallAsyncRead('messages.discardEncryption', ['chat_id' => $chat], ['datacenter' => $this->datacenter->curdc]);
|
||||||
|
Loading…
Reference in New Issue
Block a user