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 | |
| 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')
| -rw-r--r-- | aes/src/box.c | 140 | ||||
| -rw-r--r-- | aes/src/box_aes.c | 114 |
2 files changed, 57 insertions, 197 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, diff --git a/aes/src/box_aes.c b/aes/src/box_aes.c index 8c79335..c566b36 100644 --- a/aes/src/box_aes.c +++ b/aes/src/box_aes.c @@ -56,17 +56,6 @@ static AES_StatusCode aes_box_derive_params_aes256( return AES_SUCCESS; } -static AES_StatusCode aes_box_parse_block_aes( - AES_BoxBlock* dest, - const char* src, - AES_ErrorDetails* err_details -) { - if (dest == NULL) - return aes_error_null_argument(err_details, "dest"); - - return aes_AES_parse_block(&dest->aes_block, src, err_details); -} - static AES_StatusCode aes_box_parse_key_aes128( AES_BoxKey* dest, const char* src, @@ -100,19 +89,6 @@ static AES_StatusCode aes_box_parse_key_aes256( return aes256_parse_key(&dest->aes256_key, src, err_details); } -static AES_StatusCode aes_box_format_block_aes( - AES_BoxBlockString* dest, - 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 aes128_format_block(&dest->aes, &src->aes_block, err_details); -} - static AES_StatusCode aes_box_format_key_aes128( AES_BoxKeyString* dest, const AES_BoxKey* src, @@ -152,22 +128,6 @@ static AES_StatusCode aes_box_format_key_aes256( return aes256_format_key(&dest->aes256, &src->aes256_key, err_details); } -static AES_StatusCode aes_box_xor_block_aes( - AES_BoxBlock* dest, - const AES_BoxBlock* src, - AES_ErrorDetails* err_details -) { - AES_UNUSED_PARAMETER(err_details); - dest->aes_block = aes_xor_blocks(dest->aes_block, src->aes_block); - return AES_SUCCESS; -} - -static AES_StatusCode aes_box_inc_block_aes(AES_BoxBlock* ctr, AES_ErrorDetails* err_details) { - AES_UNUSED_PARAMETER(err_details); - ctr->aes_block = aes_inc_block(ctr->aes_block); - return AES_SUCCESS; -} - static AES_StatusCode aes_box_get_block_size_aes( size_t* block_size, AES_ErrorDetails* err_details @@ -177,133 +137,95 @@ static AES_StatusCode aes_box_get_block_size_aes( return AES_SUCCESS; } -static AES_StatusCode aes_box_store_block_aes( - void* dest, - const AES_BoxBlock* src, - AES_ErrorDetails* err_details -) { - AES_UNUSED_PARAMETER(err_details); - aes_store_block(dest, src->aes_block); - return AES_SUCCESS; -} - -static AES_StatusCode aes_box_load_block_aes( - AES_BoxBlock* dest, - const void* src, - AES_ErrorDetails* err_details -) { - AES_UNUSED_PARAMETER(err_details); - dest->aes_block = aes_load_block(src); - return AES_SUCCESS; -} - static AES_StatusCode aes_box_encrypt_block_aes128( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxEncryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes128_encrypt_block_(input->aes_block, ¶ms->aes128_encryption_keys); + *output = aes128_encrypt_block_(*input, ¶ms->aes128_encryption_keys); return AES_SUCCESS; } static AES_StatusCode aes_box_decrypt_block_aes128( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxDecryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes128_decrypt_block_(input->aes_block, ¶ms->aes128_decryption_keys); + *output = aes128_decrypt_block_(*input, ¶ms->aes128_decryption_keys); return AES_SUCCESS; } static AES_StatusCode aes_box_encrypt_block_aes192( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxEncryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes192_encrypt_block_(input->aes_block, ¶ms->aes192_encryption_keys); + *output = aes192_encrypt_block_(*input, ¶ms->aes192_encryption_keys); return AES_SUCCESS; } static AES_StatusCode aes_box_decrypt_block_aes192( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxDecryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes192_decrypt_block_(input->aes_block, ¶ms->aes192_decryption_keys); + *output = aes192_decrypt_block_(*input, ¶ms->aes192_decryption_keys); return AES_SUCCESS; } static AES_StatusCode aes_box_encrypt_block_aes256( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxEncryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes256_encrypt_block_(input->aes_block, ¶ms->aes256_encryption_keys); + *output = aes256_encrypt_block_(*input, ¶ms->aes256_encryption_keys); return AES_SUCCESS; } static AES_StatusCode aes_box_decrypt_block_aes256( - const AES_BoxBlock* input, + const AES_Block* input, const AES_BoxDecryptionRoundKeys* params, - AES_BoxBlock* output, + AES_Block* output, AES_ErrorDetails* err_details ) { AES_UNUSED_PARAMETER(err_details); - output->aes_block = aes256_decrypt_block_(input->aes_block, ¶ms->aes256_decryption_keys); + *output = aes256_decrypt_block_(*input, ¶ms->aes256_decryption_keys); return AES_SUCCESS; } AES_BoxInterface aes128_box_interface = { &aes_box_derive_params_aes128, - &aes_box_parse_block_aes, &aes_box_parse_key_aes128, - &aes_box_format_block_aes, &aes_box_format_key_aes128, &aes_box_encrypt_block_aes128, &aes_box_decrypt_block_aes128, - &aes_box_xor_block_aes, - &aes_box_inc_block_aes, &aes_box_get_block_size_aes, - &aes_box_store_block_aes, - &aes_box_load_block_aes, }; AES_BoxInterface aes192_box_interface = { &aes_box_derive_params_aes192, - &aes_box_parse_block_aes, &aes_box_parse_key_aes192, - &aes_box_format_block_aes, &aes_box_format_key_aes192, &aes_box_encrypt_block_aes192, &aes_box_decrypt_block_aes192, - &aes_box_xor_block_aes, - &aes_box_inc_block_aes, &aes_box_get_block_size_aes, - &aes_box_store_block_aes, - &aes_box_load_block_aes, }; AES_BoxInterface aes256_box_interface = { &aes_box_derive_params_aes256, - &aes_box_parse_block_aes, &aes_box_parse_key_aes256, - &aes_box_format_block_aes, &aes_box_format_key_aes256, &aes_box_encrypt_block_aes256, &aes_box_decrypt_block_aes256, - &aes_box_xor_block_aes, - &aes_box_inc_block_aes, &aes_box_get_block_size_aes, - &aes_box_store_block_aes, - &aes_box_load_block_aes, }; |
