Correct use of key size in crypto/aes examples

pull/305/head
Eric Blankenhorn 2022-03-17 10:21:42 -05:00
parent 448591eed3
commit 3cfda77e38
5 changed files with 51 additions and 19 deletions

2
.gitignore vendored
View File

@ -100,6 +100,8 @@ tls/server-tls-uart
crypto/3des/3des-file-encrypt crypto/3des/3des-file-encrypt
crypto/aes/aes-file-encrypt crypto/aes/aes-file-encrypt
crypto/aes/aescfb-file-encrypt
crypto/aes/aesctr-file-encrypt
crypto/camellia/camellia-encrypt crypto/camellia/camellia-encrypt
crypto/pkcs12/pkcs12-create-example crypto/pkcs12/pkcs12-create-example
crypto/pkcs12/pkcs12-example crypto/pkcs12/pkcs12-example

View File

@ -8,7 +8,7 @@ How to use aes-file-encrypt.c
./aes-file-encrypt <-option> <KeySize> <input.file> <output.file> ./aes-file-encrypt <-option> <KeySize> <input.file> <output.file>
KeySize examples: 128, 192, 256 KeySize (in bits) allowed values: 128, 192, 256
typing -e for option will encrypt the input.file onto the output.file. typing -e for option will encrypt the input.file onto the output.file.
typing -d for option will decrypt the input.file onto the output.file. typing -d for option will decrypt the input.file onto the output.file.

View File

@ -115,7 +115,7 @@ int AesEncrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
return -1040; return -1040;
/* sets key */ /* sets key */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_ENCRYPTION);
if (ret != 0) if (ret != 0)
return -1001; return -1001;
@ -191,7 +191,7 @@ int AesDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
return -1050; return -1050;
/* sets key */ /* sets key */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_DECRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_DECRYPTION);
if (ret != 0) if (ret != 0)
return -1002; return -1002;
@ -273,11 +273,21 @@ int NoEcho(char* key, int size)
return 0; return 0;
} }
int SizeCheck(int size) int SizeCheck(int *size)
{ {
int ret = 0; int ret = 0;
if (size != 128 && size != 192 && size != 256) { /* Use key size values (size/8) */
if (*size == 128) {
*size = AES_128_KEY_SIZE;
}
else if (*size == 192) {
*size = AES_192_KEY_SIZE;
}
else if (*size == 256) {
*size = AES_256_KEY_SIZE;
}
else {
/* if the entered size does not match acceptable size */ /* if the entered size does not match acceptable size */
printf("Invalid AES key size\n"); printf("Invalid AES key size\n");
ret = -1080; ret = -1080;
@ -307,12 +317,12 @@ int main(int argc, char** argv)
switch (option) { switch (option) {
case 'd': /* if entered decrypt */ case 'd': /* if entered decrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'd'; choice = 'd';
break; break;
case 'e': /* if entered encrypt */ case 'e': /* if entered encrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'e'; choice = 'e';
break; break;
case 'h': /* if entered 'help' */ case 'h': /* if entered 'help' */

View File

@ -113,7 +113,7 @@ int AesEncrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
return -1040; return -1040;
/* sets key */ /* sets key */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_ENCRYPTION);
if (ret != 0) if (ret != 0)
return -1001; return -1001;
@ -190,7 +190,7 @@ int AesDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
/* sets key */ /* sets key */
/* decrypt uses AES_ENCRYPTION */ /* decrypt uses AES_ENCRYPTION */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_ENCRYPTION);
if (ret != 0) if (ret != 0)
return -1002; return -1002;
@ -272,11 +272,21 @@ int NoEcho(char* key, int size)
return 0; return 0;
} }
int SizeCheck(int size) int SizeCheck(int *size)
{ {
int ret = 0; int ret = 0;
if (size != 128 && size != 192 && size != 256) { /* Use key size values (size/8) */
if (*size == 128) {
*size = AES_128_KEY_SIZE;
}
else if (*size == 192) {
*size = AES_192_KEY_SIZE;
}
else if (*size == 256) {
*size = AES_256_KEY_SIZE;
}
else {
/* if the entered size does not match acceptable size */ /* if the entered size does not match acceptable size */
printf("Invalid AES key size\n"); printf("Invalid AES key size\n");
ret = -1080; ret = -1080;
@ -306,12 +316,12 @@ int main(int argc, char** argv)
switch (option) { switch (option) {
case 'd': /* if entered decrypt */ case 'd': /* if entered decrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'd'; choice = 'd';
break; break;
case 'e': /* if entered encrypt */ case 'e': /* if entered encrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'e'; choice = 'e';
break; break;
case 'h': /* if entered 'help' */ case 'h': /* if entered 'help' */

View File

@ -96,7 +96,7 @@ int AesCtrEncrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
return -1040; return -1040;
/* sets key */ /* sets key */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_ENCRYPTION);
if (ret != 0) if (ret != 0)
return -1001; return -1001;
@ -166,7 +166,7 @@ int AesCtrDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
/* sets key */ /* sets key */
/* decrypt uses AES_ENCRYPTION */ /* decrypt uses AES_ENCRYPTION */
ret = wc_AesSetKey(aes, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ret = wc_AesSetKey(aes, key, size, iv, AES_ENCRYPTION);
if (ret != 0) if (ret != 0)
return -1002; return -1002;
@ -236,11 +236,21 @@ int NoEcho(char* key, int size)
return 0; return 0;
} }
int SizeCheck(int size) int SizeCheck(int *size)
{ {
int ret = 0; int ret = 0;
if (size != 128 && size != 192 && size != 256) { /* Use key size values (size/8) */
if (*size == 128) {
*size = AES_128_KEY_SIZE;
}
else if (*size == 192) {
*size = AES_192_KEY_SIZE;
}
else if (*size == 256) {
*size = AES_256_KEY_SIZE;
}
else {
/* if the entered size does not match acceptable size */ /* if the entered size does not match acceptable size */
printf("Invalid AES key size\n"); printf("Invalid AES key size\n");
ret = -1080; ret = -1080;
@ -270,12 +280,12 @@ int main(int argc, char** argv)
switch (option) { switch (option) {
case 'd': /* if entered decrypt */ case 'd': /* if entered decrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'd'; choice = 'd';
break; break;
case 'e': /* if entered encrypt */ case 'e': /* if entered encrypt */
size = atoi(optarg); size = atoi(optarg);
ret = SizeCheck(size); ret = SizeCheck(&size);
choice = 'e'; choice = 'e';
break; break;
case 'h': /* if entered 'help' */ case 'h': /* if entered 'help' */