diff options
| author | Egor Tensin <egor@tensin.name> | 2026-07-21 14:44:58 +0200 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-07-21 15:03:00 +0200 |
| commit | 31b275f8c201570af8a22dfe8c5ceaa9624b638c (patch) | |
| tree | 8e11af31ec04c7c91b512a548bf23a61bc752d8b /aes/src/box.c | |
| parent | aes: minor refactoring (diff) | |
| download | aes-tools-31b275f8c201570af8a22dfe8c5ceaa9624b638c.tar.gz aes-tools-31b275f8c201570af8a22dfe8c5ceaa9624b638c.zip | |
blocks are the same for every variant
Diffstat (limited to 'aes/src/box.c')
| -rw-r--r-- | aes/src/box.c | 140 |
1 files changed, 39 insertions, 101 deletions
diff --git a/aes/src/box.c b/aes/src/box.c index 3d12591..d279fd8 100644 --- a/aes/src/box.c +++ b/aes/src/box.c @@ -21,7 +21,7 @@ AES_StatusCode aes_box_init( AES_Algorithm algorithm, const AES_BoxKey* box_key, AES_Mode mode, - const AES_BoxBlock* iv, + const AES_Block* iv, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -43,8 +43,8 @@ AES_StatusCode aes_box_init( static AES_StatusCode aes_box_encrypt_block_ecb( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { return box->algorithm->encrypt_block(input, &box->encryption_keys, output, err_details); @@ -52,16 +52,12 @@ static AES_StatusCode aes_box_encrypt_block_ecb( static AES_StatusCode aes_box_encrypt_block_cbc( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; - AES_BoxBlock xored_input = *input; - - status = box->algorithm->xor_block(&xored_input, &box->iv, err_details); - if (aes_is_error(status)) - return status; + AES_Block xored_input = aes_xor_blocks(*input, box->iv); status = box->algorithm->encrypt_block(&xored_input, &box->encryption_keys, output, err_details); @@ -74,8 +70,8 @@ static AES_StatusCode aes_box_encrypt_block_cbc( static AES_StatusCode aes_box_encrypt_block_cfb( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -84,18 +80,16 @@ static AES_StatusCode aes_box_encrypt_block_cfb( if (aes_is_error(status)) return status; - status = box->algorithm->xor_block(output, input, err_details); - if (aes_is_error(status)) - return status; - + *output = aes_xor_blocks(*output, *input); box->iv = *output; + return status; } static AES_StatusCode aes_box_encrypt_block_ofb( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -105,18 +99,15 @@ static AES_StatusCode aes_box_encrypt_block_ofb( return status; *output = box->iv; - - status = box->algorithm->xor_block(output, input, err_details); - if (aes_is_error(status)) - return status; + *output = aes_xor_blocks(*output, *input); return status; } static AES_StatusCode aes_box_encrypt_block_ctr( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -125,21 +116,16 @@ static AES_StatusCode aes_box_encrypt_block_ctr( if (aes_is_error(status)) return status; - status = box->algorithm->xor_block(output, input, err_details); - if (aes_is_error(status)) - return status; - - status = box->algorithm->inc_block(&box->iv, err_details); - if (aes_is_error(status)) - return status; + *output = aes_xor_blocks(*output, *input); + box->iv = aes_inc_block(box->iv); return status; } typedef AES_StatusCode (*AES_BoxEncryptBlockInMode)( AES_Box*, - const AES_BoxBlock*, - AES_BoxBlock*, + const AES_Block*, + AES_Block*, AES_ErrorDetails* ); @@ -153,8 +139,8 @@ static AES_BoxEncryptBlockInMode aes_box_encrypt_block_in_mode[] = { AES_StatusCode aes_box_encrypt_block( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { return aes_box_encrypt_block_in_mode[box->mode](box, input, output, err_details); @@ -162,8 +148,8 @@ AES_StatusCode aes_box_encrypt_block( static AES_StatusCode aes_box_decrypt_block_ecb( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { return box->algorithm->decrypt_block(input, &box->decryption_keys, output, err_details); @@ -171,8 +157,8 @@ static AES_StatusCode aes_box_decrypt_block_ecb( static AES_StatusCode aes_box_decrypt_block_cbc( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -181,18 +167,16 @@ static AES_StatusCode aes_box_decrypt_block_cbc( if (aes_is_error(status)) return status; - status = box->algorithm->xor_block(output, &box->iv, err_details); - if (aes_is_error(status)) - return status; - + *output = aes_xor_blocks(*output, box->iv); box->iv = *input; + return status; } static AES_StatusCode aes_box_decrypt_block_cfb( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; @@ -201,11 +185,9 @@ static AES_StatusCode aes_box_decrypt_block_cfb( if (aes_is_error(status)) return status; - status = box->algorithm->xor_block(output, input, err_details); - if (aes_is_error(status)) - return status; - + *output = aes_xor_blocks(*output, *input); box->iv = *input; + return status; } @@ -221,8 +203,8 @@ static AES_BoxDecryptBlockInMode aes_box_decrypt_block_in_mode[] = { AES_StatusCode aes_box_decrypt_block( AES_Box* box, - const AES_BoxBlock* input, - AES_BoxBlock* output, + const AES_Block* input, + AES_Block* output, AES_ErrorDetails* err_details ) { return aes_box_decrypt_block_in_mode[box->mode](box, input, output, err_details); @@ -270,22 +252,14 @@ static AES_StatusCode aes_box_encrypt_buffer_block( AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; - AES_BoxBlock plaintext; - - status = box->algorithm->load_block(&plaintext, src, err_details); - if (aes_is_error(status)) - return status; - - AES_BoxBlock ciphertext; + AES_Block plaintext = aes_load_block(src); + AES_Block ciphertext; status = aes_box_encrypt_block(box, &plaintext, &ciphertext, err_details); if (aes_is_error(status)) return status; - status = box->algorithm->store_block(dest, &ciphertext, err_details); - if (aes_is_error(status)) - return status; - + aes_store_block(dest, ciphertext); return status; } @@ -475,22 +449,14 @@ static AES_StatusCode aes_box_decrypt_buffer_block( AES_ErrorDetails* err_details ) { AES_StatusCode status = AES_SUCCESS; - AES_BoxBlock ciphertext; - - status = box->algorithm->load_block(&ciphertext, src, err_details); - if (aes_is_error(status)) - return status; - - AES_BoxBlock plaintext; + AES_Block ciphertext = aes_load_block(src); + AES_Block plaintext; status = aes_box_decrypt_block(box, &ciphertext, &plaintext, err_details); if (aes_is_error(status)) return status; - status = box->algorithm->store_block(dest, &plaintext, err_details); - if (aes_is_error(status)) - return status; - + aes_store_block(dest, plaintext); return status; } @@ -603,20 +569,6 @@ AES_StatusCode aes_box_decrypt_buffer( } } -AES_StatusCode aes_box_parse_block( - AES_BoxBlock* dest, - AES_Algorithm algorithm, - const char* src, - AES_ErrorDetails* err_details -) { - if (dest == NULL) - return aes_error_null_argument(err_details, "dest"); - if (src == NULL) - return aes_error_null_argument(err_details, "src"); - - return aes_box_interfaces[algorithm]->parse_block(dest, src, err_details); -} - AES_StatusCode aes_box_parse_key( AES_BoxKey* dest, AES_Algorithm algorithm, @@ -631,20 +583,6 @@ AES_StatusCode aes_box_parse_key( return aes_box_interfaces[algorithm]->parse_key(dest, src, err_details); } -AES_StatusCode aes_box_format_block( - AES_BoxBlockString* dest, - AES_Algorithm algorithm, - const AES_BoxBlock* src, - AES_ErrorDetails* err_details -) { - if (dest == NULL) - return aes_error_null_argument(err_details, "dest"); - if (src == NULL) - return aes_error_null_argument(err_details, "src"); - - return aes_box_interfaces[algorithm]->format_block(dest, src, err_details); -} - AES_StatusCode aes_box_format_key( AES_BoxKeyString* dest, AES_Algorithm algorithm, |
