diff options
| author | Egor Tensin <egor@tensin.name> | 2026-07-21 18:57:25 +0200 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-07-21 18:57:25 +0200 |
| commit | 27d80744b46b6476ce4761a6199e6293d41c91ab (patch) | |
| tree | d30f336682a24520c628a15fc84bcfbd1501199d /aes | |
| parent | aes/box: remove useless interface method (diff) | |
| download | aes-tools-27d80744b46b6476ce4761a6199e6293d41c91ab.tar.gz aes-tools-27d80744b46b6476ce4761a6199e6293d41c91ab.zip | |
minor refactoring
Diffstat (limited to 'aes')
| -rw-r--r-- | aes/include/aes/box_aes.h | 6 | ||||
| -rw-r--r-- | aes/include/aes/box_data.h | 10 | ||||
| -rw-r--r-- | aes/src/box.c | 41 | ||||
| -rw-r--r-- | aes/src/box_aes.c | 6 |
4 files changed, 32 insertions, 31 deletions
diff --git a/aes/include/aes/box_aes.h b/aes/include/aes/box_aes.h index 476f692..c9b9b67 100644 --- a/aes/include/aes/box_aes.h +++ b/aes/include/aes/box_aes.h @@ -11,9 +11,9 @@ extern "C" { #endif -extern AES_BoxInterface aes128_box_interface; -extern AES_BoxInterface aes192_box_interface; -extern AES_BoxInterface aes256_box_interface; +extern AES_BoxOps aes128_box_ops; +extern AES_BoxOps aes192_box_ops; +extern AES_BoxOps aes256_box_ops; #ifdef __cplusplus } diff --git a/aes/include/aes/box_data.h b/aes/include/aes/box_data.h index b0a82a5..3e49fa0 100644 --- a/aes/include/aes/box_data.h +++ b/aes/include/aes/box_data.h @@ -6,6 +6,7 @@ #pragma once #include "aes.h" +#include "algorithm.h" #include "error.h" #include "mode.h" @@ -78,14 +79,15 @@ typedef struct { AES_BoxFormatKey format_key; AES_BoxEncryptBlock encrypt_block; AES_BoxDecryptBlock decrypt_block; -} AES_BoxInterface; +} AES_BoxOps; typedef struct { - const AES_BoxInterface* algorithm; - AES_BoxEncryptionRoundKeys encryption_keys; - AES_BoxDecryptionRoundKeys decryption_keys; + AES_Algorithm algorithm; AES_Mode mode; AES_Block iv; + AES_BoxEncryptionRoundKeys encryption_keys; + AES_BoxDecryptionRoundKeys decryption_keys; + const AES_BoxOps* ops; } AES_Box; #ifdef __cplusplus diff --git a/aes/src/box.c b/aes/src/box.c index 178f1dc..dd50f25 100644 --- a/aes/src/box.c +++ b/aes/src/box.c @@ -10,10 +10,10 @@ #include <stdlib.h> #include <string.h> -static const AES_BoxInterface* aes_box_interfaces[] = { - &aes128_box_interface, - &aes192_box_interface, - &aes256_box_interface, +static const AES_BoxOps* aes_box_ops_list[] = { + &aes128_box_ops, + &aes192_box_ops, + &aes256_box_ops, }; AES_StatusCode aes_box_init( @@ -26,18 +26,18 @@ AES_StatusCode aes_box_init( ) { AES_StatusCode status = AES_SUCCESS; - box->algorithm = aes_box_interfaces[algorithm]; + box->algorithm = algorithm; + box->mode = mode; + if (iv != NULL) + box->iv = *iv; + box->ops = aes_box_ops_list[algorithm]; - status = box->algorithm->calc_round_keys( + status = box->ops->calc_round_keys( box_key, &box->encryption_keys, &box->decryption_keys, err_details ); if (aes_is_error(status)) return status; - box->mode = mode; - if (iv != NULL) - box->iv = *iv; - return status; } @@ -47,7 +47,7 @@ static AES_StatusCode aes_box_encrypt_block_ecb( AES_Block* output, AES_ErrorDetails* err_details ) { - return box->algorithm->encrypt_block(input, &box->encryption_keys, output, err_details); + return box->ops->encrypt_block(input, &box->encryption_keys, output, err_details); } static AES_StatusCode aes_box_encrypt_block_cbc( @@ -59,8 +59,7 @@ static AES_StatusCode aes_box_encrypt_block_cbc( AES_StatusCode status = AES_SUCCESS; AES_Block xored_input = aes_xor_blocks(*input, box->iv); - status = - box->algorithm->encrypt_block(&xored_input, &box->encryption_keys, output, err_details); + status = box->ops->encrypt_block(&xored_input, &box->encryption_keys, output, err_details); if (aes_is_error(status)) return status; @@ -76,7 +75,7 @@ static AES_StatusCode aes_box_encrypt_block_cfb( ) { AES_StatusCode status = AES_SUCCESS; - status = box->algorithm->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); + status = box->ops->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); if (aes_is_error(status)) return status; @@ -94,7 +93,7 @@ static AES_StatusCode aes_box_encrypt_block_ofb( ) { AES_StatusCode status = AES_SUCCESS; - status = box->algorithm->encrypt_block(&box->iv, &box->encryption_keys, &box->iv, err_details); + status = box->ops->encrypt_block(&box->iv, &box->encryption_keys, &box->iv, err_details); if (aes_is_error(status)) return status; @@ -112,7 +111,7 @@ static AES_StatusCode aes_box_encrypt_block_ctr( ) { AES_StatusCode status = AES_SUCCESS; - status = box->algorithm->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); + status = box->ops->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); if (aes_is_error(status)) return status; @@ -152,7 +151,7 @@ static AES_StatusCode aes_box_decrypt_block_ecb( AES_Block* output, AES_ErrorDetails* err_details ) { - return box->algorithm->decrypt_block(input, &box->decryption_keys, output, err_details); + return box->ops->decrypt_block(input, &box->decryption_keys, output, err_details); } static AES_StatusCode aes_box_decrypt_block_cbc( @@ -163,7 +162,7 @@ static AES_StatusCode aes_box_decrypt_block_cbc( ) { AES_StatusCode status = AES_SUCCESS; - status = box->algorithm->decrypt_block(input, &box->decryption_keys, output, err_details); + status = box->ops->decrypt_block(input, &box->decryption_keys, output, err_details); if (aes_is_error(status)) return status; @@ -181,7 +180,7 @@ static AES_StatusCode aes_box_decrypt_block_cfb( ) { AES_StatusCode status = AES_SUCCESS; - status = box->algorithm->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); + status = box->ops->encrypt_block(&box->iv, &box->encryption_keys, output, err_details); if (aes_is_error(status)) return status; @@ -546,7 +545,7 @@ AES_StatusCode aes_box_parse_key( if (src == NULL) return aes_error_null_argument(err_details, "src"); - return aes_box_interfaces[algorithm]->parse_key(dest, src, err_details); + return aes_box_ops_list[algorithm]->parse_key(dest, src, err_details); } AES_StatusCode aes_box_format_key( @@ -560,5 +559,5 @@ AES_StatusCode aes_box_format_key( if (src == NULL) return aes_error_null_argument(err_details, "src"); - return aes_box_interfaces[algorithm]->format_key(dest, src, err_details); + return aes_box_ops_list[algorithm]->format_key(dest, src, err_details); } diff --git a/aes/src/box_aes.c b/aes/src/box_aes.c index 368ec9e..d0c9a41 100644 --- a/aes/src/box_aes.c +++ b/aes/src/box_aes.c @@ -194,7 +194,7 @@ static AES_StatusCode aes_box_decrypt_block_aes256( return AES_SUCCESS; } -AES_BoxInterface aes128_box_interface = { +AES_BoxOps aes128_box_ops = { &aes_box_derive_params_aes128, &aes_box_parse_key_aes128, &aes_box_format_key_aes128, @@ -202,7 +202,7 @@ AES_BoxInterface aes128_box_interface = { &aes_box_decrypt_block_aes128, }; -AES_BoxInterface aes192_box_interface = { +AES_BoxOps aes192_box_ops = { &aes_box_derive_params_aes192, &aes_box_parse_key_aes192, &aes_box_format_key_aes192, @@ -210,7 +210,7 @@ AES_BoxInterface aes192_box_interface = { &aes_box_decrypt_block_aes192, }; -AES_BoxInterface aes256_box_interface = { +AES_BoxOps aes256_box_ops = { &aes_box_derive_params_aes256, &aes_box_parse_key_aes256, &aes_box_format_key_aes256, |
