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

Method encrypt_header

tdport/td/e2e/MessageEncryption.cpp:157–174  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155}
156
157td::Result<td::SecureString> MessageEncryption::encrypt_header(td::Slice decrypted_header, td::Slice encrypted_message,
158 td::Slice secret) {
159 if (encrypted_message.size() < 16) {
160 return td::Status::Error("Failed to encrypt header: encrypted_message is too small");
161 }
162 if (decrypted_header.size() != 32) {
163 return td::Status::Error("Failed to encrypt header: header must be 32 bytes");
164 }
165 auto large_key = kdf_expand(secret, "tde2e_encrypt_header");
166 auto encryption_key = large_key.as_slice().substr(0, 32);
167
168 auto msg_id = encrypted_message.substr(0, 16);
169 auto cbc_state = calc_aes_cbc_state_from_hash(kdf_expand(encryption_key, msg_id));
170
171 td::SecureString encrypted_header(32, 0);
172 cbc_state.encrypt(decrypted_header, encrypted_header.as_mutable_slice());
173 return encrypted_header;
174}
175
176td::Result<td::SecureString> MessageEncryption::decrypt_header(td::Slice encrypted_header, td::Slice encrypted_message,
177 td::Slice secret) {

Callers

nothing calls this directly

Calls 1

as_sliceMethod · 0.80

Tested by

no test coverage detected