Skip to content

Commit

Permalink
Fixes for IAR. Switch to new src/keystore.c for keys. Fixes for bui…
Browse files Browse the repository at this point in the history
…lding keytools in Visual Studio.
  • Loading branch information
dgarske authored and danielinux committed Jul 26, 2022
1 parent ef0b760 commit 3c2c26b
Show file tree
Hide file tree
Showing 14 changed files with 45 additions and 57 deletions.
6 changes: 4 additions & 2 deletions IDE/IAR/generate_key.bat
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
keytools\keygen.exe --ecc256 ..\..\src\ecc256_pub_key.c
move ecc256.der ..\..\
cd ..\..
REM Build the src/keystore.c
IDE\IAR\keytools\keygen.exe --ecc256 -g wolfboot_signing_private_key.der
cd IDE\IAR
1 change: 0 additions & 1 deletion IDE/IAR/keys/ecc256.der

This file was deleted.

20 changes: 0 additions & 20 deletions IDE/IAR/keys/ecc256_pub_key.c

This file was deleted.

Binary file modified IDE/IAR/keytools/keygen.exe
Binary file not shown.
Binary file modified IDE/IAR/keytools/sign.exe
Binary file not shown.
4 changes: 2 additions & 2 deletions IDE/IAR/wolfboot.ewp
Original file line number Diff line number Diff line change
Expand Up @@ -2198,10 +2198,10 @@
<name>$PROJ_DIR$\..\..\src\boot_arm.c</name>
</file>
<file>
<name>$PROJ_DIR$\keys\ecc256_pub_key.c</name>
<name>$PROJ_DIR$\..\..\src\image.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\image.c</name>
<name>$PROJ_DIR$\..\..\src\keystore.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\libwolfboot.c</name>
Expand Down
2 changes: 1 addition & 1 deletion include/image.h
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ static void wolfBoot_image_confirm_signature_ok(struct wolfBoot_image *img)
if ((mask & (1UL << id)) != (1UL << id)) \
wolfBoot_panic()

#define VERIFY_VERSION_ALLOWED do{} while(0);
#define VERIFY_VERSION_ALLOWED(fb_ok) do{} while(0)

#endif

Expand Down
6 changes: 3 additions & 3 deletions src/image.c
Original file line number Diff line number Diff line change
Expand Up @@ -836,8 +836,9 @@ int wolfBoot_get_dts_size(void *dts_addr)
#ifdef WOLFBOOT_FIXED_PARTITIONS
int wolfBoot_open_image(struct wolfBoot_image *img, uint8_t part)
{
#ifdef MMU
int ret;
uint32_t size;
#endif
uint8_t *image;
if (!img)
return -1;
Expand Down Expand Up @@ -867,7 +868,7 @@ int wolfBoot_open_image(struct wolfBoot_image *img, uint8_t part)
return -1;
img->hdr_ok = 1;
img->fw_base = img->hdr;
img->fw_size = (uint32_t)size;
img->fw_size = (uint32_t)ret;
return 0;
}
#endif
Expand Down Expand Up @@ -924,7 +925,6 @@ int wolfBoot_verify_authenticity(struct wolfBoot_image *img)
#else
int wolfBoot_verify_authenticity(struct wolfBoot_image *img)
{
int ret;
uint8_t *stored_signature;
uint16_t stored_signature_size;
uint8_t *pubkey_hint;
Expand Down
2 changes: 1 addition & 1 deletion tools/keytools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ CC = gcc
WOLFBOOTDIR = ../..
WOLFDIR = $(WOLFBOOTDIR)/lib/wolfssl/
CFLAGS = -Wall -Wextra -Werror
CFLAGS += -I. -DWOLFSSL_USER_SETTINGS -I$(WOLFDIR) -I$(WOLFBOOTDIR)/include -DWOLFBOOT_KEYTOOLS -DWOLFSSL_AES_DIRECT -DWOLFSSL_AES_COUNTER
CFLAGS += -I. -DWOLFSSL_USER_SETTINGS -I$(WOLFDIR) -I$(WOLFBOOTDIR)/include -DWOLFBOOT_KEYTOOLS

# option variables
DEBUG_FLAGS = -g -DDEBUG -DDEBUG_SIGNTOOL -DDEBUG_WOLFSSL -DDEBUG_WOLFSSL_VERBOSE -fsanitize=address
Expand Down
4 changes: 3 additions & 1 deletion tools/keytools/keygen.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#ifndef _WIN32
#include <unistd.h>
#endif

#include <wolfssl/wolfcrypt/settings.h>
#ifndef NO_RSA
Expand Down
20 changes: 10 additions & 10 deletions tools/keytools/sign.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ static uint8_t *load_key(uint8_t **key_buffer, uint32_t *key_buffer_sz,
fseek(f, 0, SEEK_SET);
*key_buffer = malloc(*key_buffer_sz);
if (*key_buffer) {
io_sz = fread(*key_buffer, 1, *key_buffer_sz, f);
io_sz = (int)fread(*key_buffer, 1, *key_buffer_sz, f);
if (io_sz != (int)*key_buffer_sz) {
printf("Key file read error!\n");
goto failure;
Expand Down Expand Up @@ -554,7 +554,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
read_sz = image_sz - pos;
if (read_sz > 32)
read_sz = 32;
io_sz = fread(buf, 1, read_sz, f);
io_sz = (int)fread(buf, 1, read_sz, f);
if ((io_sz < 0) && !feof(f)) {
ret = -1;
break;
Expand Down Expand Up @@ -598,7 +598,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
read_sz = image_sz - pos;
if (read_sz > 32)
read_sz = 32;
io_sz = fread(buf, 1, read_sz, f);
io_sz = (int)fread(buf, 1, read_sz, f);
if ((io_sz < 0) && !feof(f)) {
ret = -1;
break;
Expand Down Expand Up @@ -644,7 +644,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
read_sz = image_sz - pos;
if (read_sz > 128)
read_sz = 128;
io_sz = fread(buf, 1, read_sz, f);
io_sz = (int)fread(buf, 1, read_sz, f);
if ((io_sz < 0) && !feof(f)) {
ret = -1;
break;
Expand Down Expand Up @@ -801,7 +801,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
printf("Open signature file %s failed\n", CMD.signature_file);
goto failure;
}
io_sz = fread(signature, 1, CMD.signature_sz, f);
io_sz = (int)fread(signature, 1, CMD.signature_sz, f);
fclose(f);
if (io_sz != (int)CMD.signature_sz) {
printf("Error reading file %s\n", CMD.signature_file);
Expand Down Expand Up @@ -837,7 +837,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
read_sz = image_sz;
if (read_sz > sizeof(buf))
read_sz = sizeof(buf);
read_sz = fread(buf, 1, read_sz, f2);
read_sz = (uint32_t)fread(buf, 1, read_sz, f2);
if ((read_sz == 0) && (feof(f2)))
break;
fwrite(buf, 1, read_sz, f);
Expand Down Expand Up @@ -873,12 +873,12 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
CMD.encrypt_key_file, strerror(errno));
exit(1);
}
ret = fread(key, 1, keySz, fek);
ret = (int)fread(key, 1, keySz, fek);
if (ret != keySz) {
fprintf(stderr, "Error reading key from %s\n", CMD.encrypt_key_file);
exit(1);
}
ret = fread(iv, 1, ivSz, fek);
ret = (int)fread(iv, 1, ivSz, fek);
if (ret != ivSz) {
fprintf(stderr, "Error reading IV from %s\n", CMD.encrypt_key_file);
exit(1);
Expand All @@ -904,7 +904,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
wc_Chacha_SetIV(&cha, iv, 0);
for (pos = 0; pos < fsize; pos += ENC_BLOCK_SIZE) {
int fread_retval;
fread_retval = fread(buf, 1, ENC_BLOCK_SIZE, f);
fread_retval = (int)fread(buf, 1, ENC_BLOCK_SIZE, f);
if ((fread_retval == 0) && feof(f)) {
break;
}
Expand All @@ -917,7 +917,7 @@ static int make_header_ex(int is_diff, uint8_t *pubkey, uint32_t pubkey_sz,
wc_AesSetKeyDirect(&aes_e, key, keySz, iv, AES_ENCRYPTION);
for (pos = 0; pos < fsize; pos += ENC_BLOCK_SIZE) {
int fread_retval;
fread_retval = fread(buf, 1, ENC_BLOCK_SIZE, f);
fread_retval = (int)fread(buf, 1, ENC_BLOCK_SIZE, f);
if ((fread_retval == 0) && feof(f)) {
break;
}
Expand Down
4 changes: 4 additions & 0 deletions tools/keytools/user_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@
/* Chacha stream cipher */
#define HAVE_CHACHA

/* AES */
#define WOLFSSL_AES_COUNTER
#define WOLFSSL_AES_DIRECT

/* Disables */
#define NO_CMAC
#define NO_HMAC
Expand Down
16 changes: 8 additions & 8 deletions tools/keytools/wolfBootKeygenTool.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;WOLFSSL_USER_SETTINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\lib\wolfssl;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -106,8 +106,8 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);WOLFSSL_USER_SETTINGS</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;..\..\lib\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -122,8 +122,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;WOLFSSL_USER_SETTINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\lib\wolfssl;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -140,8 +140,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions);WOLFSSL_USER_SETTINGS</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;..\..\lib\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand Down
17 changes: 9 additions & 8 deletions tools/keytools/wolfBootSignTool.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;WOLFSSL_USER_SETTINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\lib\wolfssl;..\..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;DELTA_UPDATES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -106,8 +106,8 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);WOLFSSL_USER_SETTINGS</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;..\..\lib\wolfssl;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;DELTA_UPDATES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -122,8 +122,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;WOLFSSL_USER_SETTINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\lib\wolfssl;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;DELTA_UPDATES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -140,8 +140,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions);WOLFSSL_USER_SETTINGS</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;..\..\lib\wolfssl;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;DELTA_UPDATES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.;../../lib/wolfssl;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand All @@ -151,6 +151,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\lib\wolfssl\wolfcrypt\src\aes.c" />
<ClCompile Include="..\..\lib\wolfssl\wolfcrypt\src\asn.c" />
<ClCompile Include="..\..\lib\wolfssl\wolfcrypt\src\chacha.c" />
<ClCompile Include="..\..\lib\wolfssl\wolfcrypt\src\coding.c" />
Expand Down

0 comments on commit 3c2c26b

Please sign in to comment.