aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tdutils/td/utils/Ed25519.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/tdutils/td/utils/Ed25519.cpp b/tdutils/td/utils/Ed25519.cpp
index 7128a9cb6..21137cf3a 100644
--- a/tdutils/td/utils/Ed25519.cpp
+++ b/tdutils/td/utils/Ed25519.cpp
@@ -275,7 +275,11 @@ Result<SecureString> Ed25519::compute_shared_secret(const PublicKey &public_key,
#if OPENSSL_VERSION_NUMBER >= 0x10101000L
BigNum p = BigNum::from_hex("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed").move_as_ok();
auto public_y = public_key.as_octet_string();
- public_y.as_mutable_slice()[31] = static_cast<char>(public_y[31] & 127);
+ MutableSlice pub_slc = public_y.as_mutable_slice();
+ if (pub_slc.size() != PublicKey::LENGTH) {
+ return Status::Error("Wrong public key");
+ }
+ pub_slc[31] = static_cast<char>(public_y[31] & 127);
BigNum y = BigNum::from_le_binary(public_y);
BigNum y2 = y.clone();
y += 1;