diff --git a/tdutils/td/utils/crypto.cpp b/tdutils/td/utils/crypto.cpp index 90e1bbcec..3ef0193eb 100644 --- a/tdutils/td/utils/crypto.cpp +++ b/tdutils/td/utils/crypto.cpp @@ -279,6 +279,16 @@ void aes_cbc_decrypt(const UInt256 &aes_key, UInt128 *aes_iv, Slice from, Mutabl aes_cbc_xcrypt(aes_key, aes_iv, from, to, false); } +AesCbcState::AesCbcState(const UInt256 &key, const UInt128 &iv) : key_(key), iv_(iv) { +} + +void AesCbcState::encrypt(Slice from, MutableSlice to) { + ::td::aes_cbc_encrypt(key_, &iv_, from, to); +} +void AesCbcState::decrypt(Slice from, MutableSlice to) { + ::td::aes_cbc_decrypt(key_, &iv_, from, to); +} + class AesCtrState::Impl { public: Impl(const UInt256 &key, const UInt128 &iv) { diff --git a/tdutils/td/utils/crypto.h b/tdutils/td/utils/crypto.h index 71fc3a869..6cb6d1adf 100644 --- a/tdutils/td/utils/crypto.h +++ b/tdutils/td/utils/crypto.h @@ -44,6 +44,18 @@ class AesCtrState { std::unique_ptr ctx_; }; +class AesCbcState { + public: + AesCbcState(const UInt256 &key, const UInt128 &iv); + + void encrypt(Slice from, MutableSlice to); + void decrypt(Slice from, MutableSlice to); + + private: + UInt256 key_; + UInt128 iv_; +}; + void sha1(Slice data, unsigned char output[20]); void sha256(Slice data, MutableSlice output);