From 992fcf6b98aa4289a549c87d5cee92023a24de7a Mon Sep 17 00:00:00 2001 From: Timerix Date: Mon, 21 Jul 2025 16:01:15 +0300 Subject: [PATCH] implemented encryption of EncryptedBlockInfo --- src/cryptography.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/cryptography.c b/src/cryptography.c index 1e6e858..83329a3 100755 --- a/src/cryptography.c +++ b/src/cryptography.c @@ -61,11 +61,14 @@ void EncryptorAES_destroy(EncryptorAES* ptr){ void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst){ assert(dst.size >= EncryptorAES_calcDstSize(src.size)); + const EncryptedBlockInfo block_info = { .padding_size = 16 - src.size % 16 }; + memcpy(ptr->buf.data, &block_info, sizeof(EncryptedBlockInfo)); + // encrypt this struct + br_aes_ct64_cbcenc_run(&ptr->enc_ctx, ptr->iv.data, ptr->buf.data, sizeof(EncryptedBlockInfo)); // emit EncryptedBlockInfo to beginning of result - EncryptedBlockInfo block_info = { .padding_size = 16 - src.size % 16 }; - memcpy(dst.data, &block_info, sizeof(block_info)); - dst.data += sizeof(block_info); - dst.size -= sizeof(block_info); + memcpy(dst.data, ptr->buf.data, sizeof(EncryptedBlockInfo)); + dst.data += sizeof(EncryptedBlockInfo); + dst.size -= sizeof(EncryptedBlockInfo); // write full blocks while(src.size > ptr->buf.size){ @@ -114,9 +117,11 @@ void DecryptorAES_decrypt(DecryptorAES* ptr, Array src, Array dst, u32* decrypte // read EncryptedBlockInfo from beginning of data EncryptedBlockInfo block_info; - memcpy(&block_info, src.data, sizeof(block_info)); - src.data += sizeof(block_info); - src.size -= sizeof(block_info); + memcpy(&block_info, src.data, sizeof(EncryptedBlockInfo)); + src.data += sizeof(EncryptedBlockInfo); + src.size -= sizeof(EncryptedBlockInfo); + // decrypt this struct + br_aes_ct64_cbcdec_run(&ptr->dec_ctx, ptr->iv.data, &block_info, sizeof(EncryptedBlockInfo)); *decrypted_size = src.size - block_info.padding_size; // write full blocks