aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorArseny Smirnov <arseny30@gmail.com>2025-05-27 15:23:05 +0100
committerArseny Smirnov <arseny30@gmail.com>2025-05-27 15:23:05 +0100
commit3c511df6287494a24793b2293848dfdeb746e3d4 (patch)
tree824d40e4e8ef22d0ee349e4878a08232e6bc39b8
parent7a2e9a681dc6a6013b1e573a8fe3f17c274e3f48 (diff)
e2e: version 1
-rw-r--r--tde2e/td/e2e/Blockchain.h2
-rw-r--r--tde2e/td/e2e/Call.cpp10
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);