fixed AESBlockDecryptor bug
This commit is contained in:
parent
9dc7de1b41
commit
d32f7d4b89
@ -48,7 +48,9 @@ Result(u32) AESBlockEncryptor_encrypt(AESBlockEncryptor* ptr,
|
||||
// write IV to the beginning of dst
|
||||
__Array_writeNext(&dst, ptr->iv, __AES_BLOCK_IV_SIZE);
|
||||
|
||||
const EncryptedBlockHeader header = { .padding_size = 16 - src.size % 16 };
|
||||
EncryptedBlockHeader header;
|
||||
memset(&header, 0, sizeof(header));
|
||||
header.padding_size = (16 - src.size % 16) % 16;
|
||||
// write header to buffer
|
||||
memcpy(ptr->buf, &header, sizeof(header));
|
||||
// encrypt header
|
||||
@ -68,8 +70,8 @@ Result(u32) AESBlockEncryptor_encrypt(AESBlockEncryptor* ptr,
|
||||
// encrypt buffer with remaining data
|
||||
if(src.size > 0){
|
||||
memcpy(ptr->buf, src.data, src.size);
|
||||
u32 src_size_padded = src.size + header.padding_size;
|
||||
memset(ptr->buf + src.size, 0, header.padding_size);
|
||||
u32 src_size_padded = src.size + header.padding_size;
|
||||
ptr->enc_class->run((void*)ptr->enc_keys,
|
||||
ptr->iv,
|
||||
ptr->buf, src_size_padded);
|
||||
@ -118,7 +120,6 @@ Result(u32) AESBlockDecryptor_decrypt(AESBlockDecryptor* ptr,
|
||||
ptr->dec_class->run((void*)ptr->dec_keys, ptr->iv, &header, sizeof(header));
|
||||
// size of decrypted data without padding
|
||||
u32 decrypted_size = src.size - header.padding_size;
|
||||
const u32 src_size_padded = src.size;
|
||||
src.size = decrypted_size;
|
||||
|
||||
// decrypt full buffers
|
||||
@ -133,6 +134,8 @@ Result(u32) AESBlockDecryptor_decrypt(AESBlockDecryptor* ptr,
|
||||
// decrypt buffer with remaining data
|
||||
if(src.size > 0){
|
||||
memcpy(ptr->buf, src.data, src.size);
|
||||
memset(ptr->buf + src.size, 0, header.padding_size);
|
||||
u32 src_size_padded = src.size + header.padding_size;
|
||||
ptr->dec_class->run((void*)ptr->dec_keys,
|
||||
ptr->iv,
|
||||
ptr->buf, src_size_padded);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user