implemented encryption of EncryptedBlockInfo
This commit is contained in:
parent
2fb4657fed
commit
992fcf6b98
@ -61,11 +61,14 @@ void EncryptorAES_destroy(EncryptorAES* ptr){
|
|||||||
void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst){
|
void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst){
|
||||||
assert(dst.size >= EncryptorAES_calcDstSize(src.size));
|
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
|
// emit EncryptedBlockInfo to beginning of result
|
||||||
EncryptedBlockInfo block_info = { .padding_size = 16 - src.size % 16 };
|
memcpy(dst.data, ptr->buf.data, sizeof(EncryptedBlockInfo));
|
||||||
memcpy(dst.data, &block_info, sizeof(block_info));
|
dst.data += sizeof(EncryptedBlockInfo);
|
||||||
dst.data += sizeof(block_info);
|
dst.size -= sizeof(EncryptedBlockInfo);
|
||||||
dst.size -= sizeof(block_info);
|
|
||||||
|
|
||||||
// write full blocks
|
// write full blocks
|
||||||
while(src.size > ptr->buf.size){
|
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
|
// read EncryptedBlockInfo from beginning of data
|
||||||
EncryptedBlockInfo block_info;
|
EncryptedBlockInfo block_info;
|
||||||
memcpy(&block_info, src.data, sizeof(block_info));
|
memcpy(&block_info, src.data, sizeof(EncryptedBlockInfo));
|
||||||
src.data += sizeof(block_info);
|
src.data += sizeof(EncryptedBlockInfo);
|
||||||
src.size -= sizeof(block_info);
|
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;
|
*decrypted_size = src.size - block_info.padding_size;
|
||||||
|
|
||||||
// write full blocks
|
// write full blocks
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user