Merge pull request #305 from embhorn/gh304

Correct use of key size in crypto/aes examples
pull/308/head
Kaleb Himes 2022-03-17 17:10:47 -05:00 committed by GitHub
commit e7e908329c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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/aes/aes-file-encrypt
crypto/aes/aescfb-file-encrypt
crypto/aes/aesctr-file-encrypt
crypto/camellia/camellia-encrypt
crypto/pkcs12/pkcs12-create-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>
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 -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;
/* 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)
return -1001;
@ -191,7 +191,7 @@ int AesDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
return -1050;
/* 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)
return -1002;
@ -273,11 +273,21 @@ int NoEcho(char* key, int size)
return 0;
}
int SizeCheck(int size)
int SizeCheck(int *size)
{
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 */
printf("Invalid AES key size\n");
ret = -1080;
@ -307,12 +317,12 @@ int main(int argc, char** argv)
switch (option) {
case 'd': /* if entered decrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'd';
break;
case 'e': /* if entered encrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'e';
break;
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;
/* 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)
return -1001;
@ -190,7 +190,7 @@ int AesDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
/* sets key */
/* 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)
return -1002;
@ -272,11 +272,21 @@ int NoEcho(char* key, int size)
return 0;
}
int SizeCheck(int size)
int SizeCheck(int *size)
{
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 */
printf("Invalid AES key size\n");
ret = -1080;
@ -306,12 +316,12 @@ int main(int argc, char** argv)
switch (option) {
case 'd': /* if entered decrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'd';
break;
case 'e': /* if entered encrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'e';
break;
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;
/* 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)
return -1001;
@ -166,7 +166,7 @@ int AesCtrDecrypt(Aes* aes, byte* key, int size, FILE* inFile, FILE* outFile)
/* sets key */
/* 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)
return -1002;
@ -236,11 +236,21 @@ int NoEcho(char* key, int size)
return 0;
}
int SizeCheck(int size)
int SizeCheck(int *size)
{
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 */
printf("Invalid AES key size\n");
ret = -1080;
@ -270,12 +280,12 @@ int main(int argc, char** argv)
switch (option) {
case 'd': /* if entered decrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'd';
break;
case 'e': /* if entered encrypt */
size = atoi(optarg);
ret = SizeCheck(size);
ret = SizeCheck(&size);
choice = 'e';
break;
case 'h': /* if entered 'help' */