MCPcopy Create free account
hub / github.com/TelegramMessenger/cocoon / decrypt_header

Method decrypt_header

tdport/td/e2e/MessageEncryption.cpp:176–194  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174}
175
176td::Result<td::SecureString> MessageEncryption::decrypt_header(td::Slice encrypted_header, td::Slice encrypted_message,
177 td::Slice secret) {
178 if (encrypted_message.size() < 16) {
179 return td::Status::Error("Failed to decrypt: invalid message size");
180 }
181 if (encrypted_header.size() != 32) {
182 return td::Status::Error("Failed to decrypt: invalid header size");
183 }
184
185 auto large_key = kdf_expand(secret, "tde2e_encrypt_header");
186 auto encryption_key = large_key.as_slice().substr(0, 32);
187
188 auto msg_id = encrypted_message.substr(0, 16);
189 auto cbc_state = calc_aes_cbc_state_from_hash(hmac_sha512(encryption_key, msg_id));
190
191 td::SecureString decrypted_header(32, 0);
192 cbc_state.decrypt(encrypted_header, decrypted_header.as_mutable_slice());
193 return decrypted_header;
194}
195
196} // namespace tde2e_core

Callers

nothing calls this directly

Calls 1

as_sliceMethod · 0.80

Tested by

no test coverage detected