aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/aes/src
diff options
context:
space:
mode:
Diffstat (limited to 'aes/src')
-rw-r--r--aes/src/algorithm.c109
-rw-r--r--aes/src/block.c9
-rw-r--r--aes/src/box.c7
-rw-r--r--aes/src/key.c15
-rw-r--r--aes/src/padding.c5
5 files changed, 99 insertions, 46 deletions
diff --git a/aes/src/algorithm.c b/aes/src/algorithm.c
index 2c3e056..bdbd1e9 100644
--- a/aes/src/algorithm.c
+++ b/aes/src/algorithm.c
@@ -85,18 +85,37 @@ static AES_StatusCode aes_format_key_aes256(
return aes256_format_key(&dest->aes256, &src->aes256_key, err_details);
}
+static AES_StatusCode check_expand_key_params(
+ const AES_Key* key,
+ AES_EncryptionRoundKeys* encryption_keys,
+ AES_DecryptionRoundKeys* decryption_keys,
+ AES_ErrorDetails* err_details
+) {
+ if (key == NULL)
+ return aes_error_null_argument(err_details, "key");
+ if (encryption_keys == NULL)
+ return aes_error_null_argument(err_details, "encryption_keys");
+ if (decryption_keys == NULL)
+ return aes_error_null_argument(err_details, "decryption_keys");
+ return AES_SUCCESS;
+}
+
static AES_StatusCode aes_expand_key_aes128(
const AES_Key* key,
AES_EncryptionRoundKeys* encryption_keys,
AES_DecryptionRoundKeys* decryption_keys,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status =
+ check_expand_key_params(key, encryption_keys, decryption_keys, err_details);
+ if (aes_is_error(status))
+ return status;
+
aes128_expand_key(&key->aes128_key, &encryption_keys->aes128_enc_keys);
aes128_derive_decryption_keys(
&encryption_keys->aes128_enc_keys, &decryption_keys->aes128_dec_keys
);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_expand_key_aes192(
@@ -105,12 +124,16 @@ static AES_StatusCode aes_expand_key_aes192(
AES_DecryptionRoundKeys* decryption_keys,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status =
+ check_expand_key_params(key, encryption_keys, decryption_keys, err_details);
+ if (aes_is_error(status))
+ return status;
+
aes192_expand_key(&key->aes192_key, &encryption_keys->aes192_enc_keys);
aes192_derive_decryption_keys(
&encryption_keys->aes192_enc_keys, &decryption_keys->aes192_dec_keys
);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_expand_key_aes256(
@@ -119,11 +142,45 @@ static AES_StatusCode aes_expand_key_aes256(
AES_DecryptionRoundKeys* decryption_keys,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status =
+ check_expand_key_params(key, encryption_keys, decryption_keys, err_details);
+ if (aes_is_error(status))
+ return status;
+
aes256_expand_key(&key->aes256_key, &encryption_keys->aes256_enc_keys);
aes256_derive_decryption_keys(
&encryption_keys->aes256_enc_keys, &decryption_keys->aes256_dec_keys
);
+ return status;
+}
+
+static AES_StatusCode check_encrypt_params(
+ const AES_Block* input,
+ const AES_EncryptionRoundKeys* params,
+ AES_Block* output,
+ AES_ErrorDetails* err_details
+) {
+ if (input == NULL)
+ return aes_error_null_argument(err_details, "input");
+ if (params == NULL)
+ return aes_error_null_argument(err_details, "params");
+ if (output == NULL)
+ return aes_error_null_argument(err_details, "output");
+ return AES_SUCCESS;
+}
+
+static AES_StatusCode check_decrypt_params(
+ const AES_Block* input,
+ const AES_DecryptionRoundKeys* params,
+ AES_Block* output,
+ AES_ErrorDetails* err_details
+) {
+ if (input == NULL)
+ return aes_error_null_argument(err_details, "input");
+ if (params == NULL)
+ return aes_error_null_argument(err_details, "params");
+ if (output == NULL)
+ return aes_error_null_argument(err_details, "output");
return AES_SUCCESS;
}
@@ -133,9 +190,12 @@ static AES_StatusCode aes_encrypt_block_aes128(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_encrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes128_encrypt_block(*input, &params->aes128_enc_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_decrypt_block_aes128(
@@ -144,9 +204,12 @@ static AES_StatusCode aes_decrypt_block_aes128(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_decrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes128_decrypt_block(*input, &params->aes128_dec_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_encrypt_block_aes192(
@@ -155,9 +218,12 @@ static AES_StatusCode aes_encrypt_block_aes192(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_encrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes192_encrypt_block(*input, &params->aes192_enc_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_decrypt_block_aes192(
@@ -166,9 +232,12 @@ static AES_StatusCode aes_decrypt_block_aes192(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_decrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes192_decrypt_block(*input, &params->aes192_dec_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_encrypt_block_aes256(
@@ -177,9 +246,12 @@ static AES_StatusCode aes_encrypt_block_aes256(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_encrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes256_encrypt_block(*input, &params->aes256_enc_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_StatusCode aes_decrypt_block_aes256(
@@ -188,9 +260,12 @@ static AES_StatusCode aes_decrypt_block_aes256(
AES_Block* output,
AES_ErrorDetails* err_details
) {
- AES_UNUSED_PARAMETER(err_details);
+ AES_StatusCode status = check_decrypt_params(input, params, output, err_details);
+ if (aes_is_error(status))
+ return status;
+
*output = aes256_decrypt_block(*input, &params->aes256_dec_keys);
- return AES_SUCCESS;
+ return status;
}
static AES_Ops aes128_ops = {
diff --git a/aes/src/block.c b/aes/src/block.c
index 552c445..3fbd24f 100644
--- a/aes/src/block.c
+++ b/aes/src/block.c
@@ -29,9 +29,6 @@ AES_StatusCode aes_format_block(
const AES_Block* block,
AES_ErrorDetails* err_details
) {
- assert(str);
- assert(block);
-
if (str == NULL)
return aes_error_null_argument(err_details, "str");
if (block == NULL)
@@ -54,9 +51,6 @@ AES_StatusCode aes_format_block_as_matrix(
const AES_Block* block,
AES_ErrorDetails* err_details
) {
- assert(str);
- assert(block);
-
if (str == NULL)
return aes_error_null_argument(err_details, "str");
if (block == NULL)
@@ -78,9 +72,6 @@ AES_StatusCode aes_format_block_as_matrix(
}
AES_StatusCode aes_parse_block(AES_Block* dest, const char* src, AES_ErrorDetails* err_details) {
- assert(dest);
- assert(src);
-
if (dest == NULL)
return aes_error_null_argument(err_details, "dest");
if (src == NULL)
diff --git a/aes/src/box.c b/aes/src/box.c
index e4750dc..c62edec 100644
--- a/aes/src/box.c
+++ b/aes/src/box.c
@@ -139,6 +139,13 @@ AES_StatusCode aes_box_encrypt_block(
AES_Block* output,
AES_ErrorDetails* err_details
) {
+ if (box == NULL)
+ return aes_error_null_argument(err_details, "box");
+ if (input == NULL)
+ return aes_error_null_argument(err_details, "input");
+ if (output == NULL)
+ return aes_error_null_argument(err_details, "output");
+
return aes_box_encrypt_block_in_mode[box->mode](box, input, output, err_details);
}
diff --git a/aes/src/key.c b/aes/src/key.c
index 35f858c..64cd460 100644
--- a/aes/src/key.c
+++ b/aes/src/key.c
@@ -16,9 +16,6 @@ AES_StatusCode aes128_format_key(
const AES128_Key* key,
AES_ErrorDetails* err_details
) {
- assert(str);
- assert(key);
-
if (str == NULL)
return aes_error_null_argument(err_details, "str");
if (key == NULL)
@@ -41,9 +38,6 @@ AES_StatusCode aes192_format_key(
const AES192_Key* key,
AES_ErrorDetails* err_details
) {
- assert(str);
- assert(key);
-
if (str == NULL)
return aes_error_null_argument(err_details, "str");
if (key == NULL)
@@ -76,9 +70,6 @@ AES_StatusCode aes256_format_key(
const AES256_Key* key,
AES_ErrorDetails* err_details
) {
- assert(str);
- assert(key);
-
if (str == NULL)
return aes_error_null_argument(err_details, "str");
if (key == NULL)
@@ -111,9 +102,6 @@ AES_StatusCode aes128_parse_key(AES128_Key* dest, const char* src, AES_ErrorDeta
}
AES_StatusCode aes192_parse_key(AES192_Key* dest, const char* src, AES_ErrorDetails* err_details) {
- assert(dest);
- assert(src);
-
if (dest == NULL)
return aes_error_null_argument(err_details, "dest");
if (src == NULL)
@@ -156,9 +144,6 @@ AES_StatusCode aes192_parse_key(AES192_Key* dest, const char* src, AES_ErrorDeta
}
AES_StatusCode aes256_parse_key(AES256_Key* dest, const char* src, AES_ErrorDetails* err_details) {
- assert(dest);
- assert(src);
-
if (dest == NULL)
return aes_error_null_argument(err_details, "dest");
if (src == NULL)
diff --git a/aes/src/padding.c b/aes/src/padding.c
index 54c6c9c..6016cff 100644
--- a/aes/src/padding.c
+++ b/aes/src/padding.c
@@ -34,9 +34,6 @@ AES_StatusCode aes_extract_padding_size(
size_t* padding_size,
AES_ErrorDetails* err_details
) {
- assert(src);
- assert(padding_size);
-
if (src == NULL)
return aes_error_null_argument(err_details, "src");
if (padding_size == NULL)
@@ -67,8 +64,6 @@ AES_StatusCode aes_fill_with_padding(
size_t padding_size,
AES_ErrorDetails* err_details
) {
- assert(dest);
-
if (dest == NULL)
return aes_error_null_argument(err_details, "dest");