|
| 1 | +# STSAFE-A120 Test Makefile for Raspberry Pi |
| 2 | +# |
| 3 | +# Copyright 2025 wolfSSL Inc. |
| 4 | + |
| 5 | +CC = gcc |
| 6 | +CFLAGS = -Wall -Wextra -O2 -g |
| 7 | + |
| 8 | +# wolfSSL configuration |
| 9 | +# Option 1: Use installed wolfSSL (after make install) |
| 10 | +#WOLFSSL_DIR = /usr/local |
| 11 | +# Option 2: Use local wolfSSL source |
| 12 | +WOLFSSL_DIR = $(HOME)/wolfssl |
| 13 | + |
| 14 | +# STSELib paths |
| 15 | +STSELIB_DIR = $(HOME)/STSELib |
| 16 | +PLATFORM_DIR = ./platform |
| 17 | + |
| 18 | +# Include paths |
| 19 | +# Note: Current directory (.) must come first so our user_settings.h is found |
| 20 | +INCLUDES = -I. \ |
| 21 | + -I$(STSELIB_DIR) \ |
| 22 | + -I$(PLATFORM_DIR) \ |
| 23 | + -I$(WOLFSSL_DIR) |
| 24 | + |
| 25 | +# wolfSSL library flags |
| 26 | +# For installed wolfSSL: |
| 27 | +#LDFLAGS = -L$(WOLFSSL_DIR)/lib -lwolfssl -lm |
| 28 | +# For local wolfSSL source (using .libs): |
| 29 | +LDFLAGS = -L$(WOLFSSL_DIR)/src/.libs -lwolfssl -lm -Wl,-rpath,$(WOLFSSL_DIR)/src/.libs |
| 30 | + |
| 31 | +# wolfSSL compile flags |
| 32 | +# WOLFSSL_USER_SETTINGS tells wolfSSL to include user_settings.h |
| 33 | +CFLAGS += -DWOLFSSL_USER_SETTINGS |
| 34 | + |
| 35 | +# STSELib source files |
| 36 | +STSELIB_CORE_SRC = $(STSELIB_DIR)/core/stse_device.c \ |
| 37 | + $(STSELIB_DIR)/core/stse_frame.c \ |
| 38 | + $(STSELIB_DIR)/core/stse_generic_typedef.c \ |
| 39 | + $(STSELIB_DIR)/core/stse_platform.c \ |
| 40 | + $(STSELIB_DIR)/core/stse_session.c |
| 41 | + |
| 42 | +STSELIB_API_SRC = $(wildcard $(STSELIB_DIR)/api/*.c) |
| 43 | +STSELIB_SERVICES_SRC = $(wildcard $(STSELIB_DIR)/services/stsafea/*.c) \ |
| 44 | + $(wildcard $(STSELIB_DIR)/services/stsafel/*.c) |
| 45 | +STSELIB_CERT_SRC = $(wildcard $(STSELIB_DIR)/certificate/*.c) |
| 46 | + |
| 47 | +# Platform source files |
| 48 | +PLATFORM_SRC = $(PLATFORM_DIR)/stse_platform_linux.c |
| 49 | + |
| 50 | +# Platform crypto source (wolfSSL implementation) |
| 51 | +# Uncomment when building with wolfSSL crypto support: |
| 52 | +PLATFORM_CRYPTO_SRC = $(PLATFORM_DIR)/stse_platform_crypto_wolfssl.c |
| 53 | + |
| 54 | +# Test source files |
| 55 | +TEST_SRC = stsafe_test.c |
| 56 | +WOLFSSL_TEST_SRC = wolfssl_stsafe_test.c |
| 57 | +WOLFSSL_FULL_TEST_SRC = wolfssl_stsafe_full_test.c |
| 58 | + |
| 59 | +# All sources |
| 60 | +ALL_SRC = $(STSELIB_CORE_SRC) $(STSELIB_API_SRC) $(STSELIB_SERVICES_SRC) \ |
| 61 | + $(STSELIB_CERT_SRC) $(PLATFORM_SRC) $(PLATFORM_CRYPTO_SRC) $(TEST_SRC) |
| 62 | + |
| 63 | +# wolfSSL STSAFE port source |
| 64 | +WOLFSSL_STSAFE_SRC = $(WOLFSSL_DIR)/wolfcrypt/src/port/st/stsafe.c |
| 65 | + |
| 66 | +# Targets |
| 67 | +TARGET = stsafe_test |
| 68 | +WOLFSSL_TARGET = wolfssl_stsafe_test |
| 69 | +WOLFSSL_FULL_TARGET = wolfssl_stsafe_full_test |
| 70 | + |
| 71 | +.PHONY: all clean test info basic wolfssl wolfssl-full |
| 72 | + |
| 73 | +all: $(TARGET) |
| 74 | + |
| 75 | +# Full build with wolfSSL crypto support |
| 76 | +$(TARGET): $(TEST_SRC) $(PLATFORM_SRC) $(PLATFORM_CRYPTO_SRC) |
| 77 | + $(CC) $(CFLAGS) $(INCLUDES) -o $@ \ |
| 78 | + $(TEST_SRC) \ |
| 79 | + $(PLATFORM_SRC) \ |
| 80 | + $(PLATFORM_CRYPTO_SRC) \ |
| 81 | + $(STSELIB_CORE_SRC) \ |
| 82 | + $(STSELIB_API_SRC) \ |
| 83 | + $(STSELIB_SERVICES_SRC) \ |
| 84 | + $(STSELIB_CERT_SRC) \ |
| 85 | + $(LDFLAGS) |
| 86 | + |
| 87 | +# Basic build without wolfSSL (for initial testing without host sessions) |
| 88 | +basic: $(TEST_SRC) $(PLATFORM_SRC) |
| 89 | + $(CC) $(CFLAGS) $(INCLUDES) -o $(TARGET) \ |
| 90 | + $(TEST_SRC) \ |
| 91 | + $(PLATFORM_SRC) \ |
| 92 | + $(STSELIB_CORE_SRC) \ |
| 93 | + $(STSELIB_API_SRC) \ |
| 94 | + $(STSELIB_SERVICES_SRC) \ |
| 95 | + $(STSELIB_CERT_SRC) |
| 96 | + |
| 97 | +# wolfSSL crypto callback test build |
| 98 | +# Note: We compile stsafe.c directly since it's not built into libwolfssl by default |
| 99 | +# IMPORTANT: Use WOLFSSL_USE_OPTIONS_H to get options.h included for proper wolfSSL settings |
| 100 | +# We add -DWOLFSSL_STSAFEA120 -DUSE_STSAFE_RNG_SEED to enable STSAFE in stsafe.c |
| 101 | +WOLFSSL_STSAFE_FLAGS = -DWOLFSSL_USE_OPTIONS_H -DWOLFSSL_STSAFEA120 -DUSE_STSAFE_RNG_SEED -Wno-strict-prototypes |
| 102 | +WOLFSSL_BASE_FLAGS = -Wall -Wextra -O2 -g |
| 103 | +wolfssl: $(WOLFSSL_TEST_SRC) $(PLATFORM_SRC) $(PLATFORM_CRYPTO_SRC) |
| 104 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 105 | + -c $(WOLFSSL_STSAFE_SRC) -o stsafe.o |
| 106 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 107 | + -c $(PLATFORM_SRC) -o stse_platform_linux.o |
| 108 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 109 | + -c $(PLATFORM_CRYPTO_SRC) -o stse_platform_crypto.o |
| 110 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 111 | + -o $(WOLFSSL_TARGET) \ |
| 112 | + $(WOLFSSL_TEST_SRC) \ |
| 113 | + stse_platform_linux.o stse_platform_crypto.o stsafe.o \ |
| 114 | + $(STSELIB_CORE_SRC) \ |
| 115 | + $(STSELIB_API_SRC) \ |
| 116 | + $(STSELIB_SERVICES_SRC) \ |
| 117 | + $(STSELIB_CERT_SRC) \ |
| 118 | + $(LDFLAGS) |
| 119 | + |
| 120 | +test: $(TARGET) |
| 121 | + ./$(TARGET) |
| 122 | + |
| 123 | +test-wolfssl: wolfssl |
| 124 | + ./$(WOLFSSL_TARGET) |
| 125 | + |
| 126 | +# Full wolfSSL integration test with ECDH and benchmarks |
| 127 | +wolfssl-full: $(WOLFSSL_FULL_TEST_SRC) $(PLATFORM_SRC) $(PLATFORM_CRYPTO_SRC) |
| 128 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 129 | + -c $(WOLFSSL_STSAFE_SRC) -o stsafe.o |
| 130 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 131 | + -c $(PLATFORM_SRC) -o stse_platform_linux.o |
| 132 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 133 | + -c $(PLATFORM_CRYPTO_SRC) -o stse_platform_crypto.o |
| 134 | + $(CC) $(WOLFSSL_BASE_FLAGS) $(WOLFSSL_STSAFE_FLAGS) -I$(STSELIB_DIR) -I$(PLATFORM_DIR) -I$(WOLFSSL_DIR) \ |
| 135 | + -o $(WOLFSSL_FULL_TARGET) \ |
| 136 | + $(WOLFSSL_FULL_TEST_SRC) \ |
| 137 | + stse_platform_linux.o stse_platform_crypto.o stsafe.o \ |
| 138 | + $(STSELIB_CORE_SRC) \ |
| 139 | + $(STSELIB_API_SRC) \ |
| 140 | + $(STSELIB_SERVICES_SRC) \ |
| 141 | + $(STSELIB_CERT_SRC) \ |
| 142 | + $(LDFLAGS) |
| 143 | + |
| 144 | +test-wolfssl-full: wolfssl-full |
| 145 | + ./$(WOLFSSL_FULL_TARGET) |
| 146 | + |
| 147 | +clean: |
| 148 | + rm -f $(TARGET) $(WOLFSSL_TARGET) $(WOLFSSL_FULL_TARGET) *.o stsafe.o stse_platform_linux.o stse_platform_crypto.o |
| 149 | + |
| 150 | +# Show configuration |
| 151 | +info: |
| 152 | + @echo "STSELib directory: $(STSELIB_DIR)" |
| 153 | + @echo "wolfSSL directory: $(WOLFSSL_DIR)" |
| 154 | + @echo "Platform directory: $(PLATFORM_DIR)" |
| 155 | + @echo "Include paths: $(INCLUDES)" |
| 156 | + @echo "Linker flags: $(LDFLAGS)" |
| 157 | + @echo "" |
| 158 | + @echo "Build targets:" |
| 159 | + @echo " make - Build with wolfSSL crypto support (full features)" |
| 160 | + @echo " make basic - Build without wolfSSL (basic tests only)" |
| 161 | + @echo " make test - Build and run tests" |
| 162 | + @echo " make clean - Clean build artifacts" |
0 commit comments