diff options
| author | Arseny Smirnov <arseny30@gmail.com> | 2025-05-27 15:23:05 +0100 |
|---|---|---|
| committer | Arseny Smirnov <arseny30@gmail.com> | 2025-05-27 15:23:05 +0100 |
| commit | 3c511df6287494a24793b2293848dfdeb746e3d4 (patch) | |
| tree | 824d40e4e8ef22d0ee349e4878a08232e6bc39b8 /tde2e | |
| parent | 7a2e9a681dc6a6013b1e573a8fe3f17c274e3f48 (diff) | |
e2e: version 1
Diffstat (limited to 'tde2e')
| -rw-r--r-- | tde2e/td/e2e/Blockchain.h | 2 | ||||
| -rw-r--r-- | tde2e/td/e2e/Call.cpp | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/tde2e/td/e2e/Blockchain.h b/tde2e/td/e2e/Blockchain.h index fad35e91e..59d48e34c 100644 --- a/tde2e/td/e2e/Blockchain.h +++ b/tde2e/td/e2e/Blockchain.h @@ -43,7 +43,7 @@ struct GroupParticipant { td::int64 user_id{0}; td::int32 flags{0}; PublicKey public_key{}; - td::int32 version{0}; + td::int32 version{1}; bool add_users() const { return (flags & GroupParticipantFlags::AddUsers) != 0; } diff --git a/tde2e/td/e2e/Call.cpp b/tde2e/td/e2e/Call.cpp index dfbb4659e..11ff1591c 100644 --- a/tde2e/td/e2e/Call.cpp +++ b/tde2e/td/e2e/Call.cpp @@ -698,10 +698,6 @@ td::Result<td::SecureString> Call::decrypt_shared_key() { if (decrypted_shared_key.size() != 32) { return td::Status::Error("Invalid shared key (size != 32)"); } - group_shared_key_ = td::SecureString( - MessageEncryption::hmac_sha512(group_shared_key_, blockchain_.get_last_block_hash().as_slice()) - .as_slice() - .substr(0, 32)); return decrypted_shared_key; } } @@ -726,6 +722,12 @@ td::Status Call::update_group_shared_key() { } TRY_RESULT_ASSIGN(group_shared_key_, decrypt_shared_key()); + if (group_state->version() >= 1) { + group_shared_key_ = td::SecureString( + MessageEncryption::hmac_sha512(group_shared_key_, blockchain_.get_last_block_hash().as_slice()) + .as_slice() + .substr(0, 32)); + } return call_encryption_.add_shared_key(td::narrow_cast<td::int32>(blockchain_.get_height()), blockchain_.get_last_block_hash(), group_shared_key_.copy(), group_state); |
