Compare commits

..

1 Commits

Author SHA1 Message Date
kaleb-himes
e04a7b5782 wolfEntropy Adaptive Proportion Fix 2025 2025-06-24 10:22:49 -06:00
2199 changed files with 217402 additions and 821904 deletions

View File

@@ -1,21 +0,0 @@
###############################################################################
# In this file, you should add the line of the file that needs to be ignored.
# The line should be exactly as it appears in the file.
###############################################################################
0x0b, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x65, /* .Enginee */
0x66, 0x6f, 0x40, 0x77, 0x6f, 0x6c, 0x66, 0x73, /* fo@wolfs */
0x0a, 0x8b, 0x98, 0xf3, 0xe3, 0xff, 0x4e, 0x44, /* ......ND */
ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd\n\
static const byte plaintext[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras lacus odio, pretium vel sagittis ac, facilisis quis diam. Vivamus condimentum velit sed dolor consequat interdum. Etiam eleifend ornare felis, eleifend egestas odio vulputate eu. Sed nec orci nunc. Etiam quis mi augue. Donec ullamcorper suscipit lorem, vel luctus augue cursus fermentum. Etiam a porta arcu, in convallis sem. Integer efficitur elementum diam, vel scelerisque felis posuere placerat. Donec vestibulum sit amet leo sit amet tincidunt. Etiam et vehicula turpis. Phasellus quis finibus sapien. Sed et tristique turpis. Nullam vitae sagittis tortor, et aliquet lorem. Cras a leo scelerisque, convallis lacus ut, fermentum urna. Mauris quis urna diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam aliquam vehicula orci id pulvinar. Proin mollis, libero sollicitudin tempor ultrices, massa augue tincidunt turpis, sit amet aliquam neque nibh nec dui. Fusce finibus massa quis rutrum suscipit cras amet";
rsource "Kconfig.tls-generic"
/* Loop over authenticated associated data AD1..ADn */
/* no easy answer [c'est la vie]. Just division */
const uint8_t* hashIn, int hashSz)
XMEMCPY(hash + (curveSz - hashSz), hashIn, hashSz);
0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, /* creen would be i */
0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, /* creen would be i */
\pagenumbering{alph}
DES3_KEY_SIZE = 24, /* 3 des ede */
/* functions added to support above needed, removed TOOM and KARATSUBA */
#include <sys/systm.h>
* extern global version from /usr/src/sys/sys/systm.h */

View File

@@ -6,10 +6,8 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: > value: >
Thanks for reporting a bug. If you would prefer a private method, Thanks for reporting an bug. If you would prefer a private method,
or if this is a vulnerability report please email support@wolfssl.com please email support@wolfssl.com
instead. This is publicly viewable and not appropriate for vulnerability
reports.
- type: input - type: input
id: contact id: contact
attributes: attributes:

View File

@@ -6,9 +6,7 @@ body:
attributes: attributes:
value: > value: >
Thanks for reporting an issue. If you would prefer a private method, Thanks for reporting an issue. If you would prefer a private method,
or if this is a vulnerability report please email support@wolfssl.com please email support@wolfssl.com
instead. This is publicly viewable and not appropriate for vulnerability
reports.
- type: input - type: input
id: version id: version
attributes: attributes:

View File

@@ -1,108 +0,0 @@
cmake_minimum_required(VERSION 3.18)
project(wolfcrypt_stm32h753 LANGUAGES C ASM)
set(WOLFSSL_ROOT "/opt/wolfssl" CACHE PATH "wolfSSL source")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
enable_language(ASM)
# Include paths for CMSIS device headers and STM32 HAL
# Order matters: CMSIS must come before HAL
include_directories(BEFORE
${CMAKE_SOURCE_DIR}
/opt/CMSIS_5/CMSIS/Core/Include # Core CMSIS (core_cm7.h, etc.) - must be first
/opt/cmsis-device-h7/Include # Device-specific CMSIS (stm32h7xx.h)
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc
)
# STM32 HAL source files (minimal set for CRYP and HASH)
# Note: These files are cloned in the Dockerfile before CMake runs
set(HAL_SRC_DIR /opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src)
# Check if HAL directory exists, then add source files
if(EXISTS ${HAL_SRC_DIR})
set(HAL_SOURCES
${HAL_SRC_DIR}/stm32h7xx_hal.c
${HAL_SRC_DIR}/stm32h7xx_hal_rcc.c
${HAL_SRC_DIR}/stm32h7xx_hal_rcc_ex.c
${HAL_SRC_DIR}/stm32h7xx_hal_cortex.c
${HAL_SRC_DIR}/stm32h7xx_hal_dma.c
${HAL_SRC_DIR}/stm32h7xx_hal_dma_ex.c
${HAL_SRC_DIR}/stm32h7xx_hal_rng.c
# CRYP HAL files enabled for AES_GCM only
${HAL_SRC_DIR}/stm32h7xx_hal_cryp.c
${HAL_SRC_DIR}/stm32h7xx_hal_cryp_ex.c
# HASH HAL files disabled - Renode doesn't implement HASH peripheral
# ${HAL_SRC_DIR}/stm32h7xx_hal_hash.c
# ${HAL_SRC_DIR}/stm32h7xx_hal_hash_ex.c
)
else()
message(WARNING "HAL source directory not found: ${HAL_SRC_DIR}")
set(HAL_SOURCES "")
endif()
# wolfSSL build options
set(WOLFSSL_USER_SETTINGS ON CACHE BOOL "Use user_settings.h")
set(WOLFSSL_CRYPT_TESTS OFF CACHE BOOL "")
set(WOLFSSL_EXAMPLES OFF CACHE BOOL "")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
add_subdirectory(${WOLFSSL_ROOT} ${CMAKE_BINARY_DIR}/wolfssl-build EXCLUDE_FROM_ALL)
target_include_directories(wolfssl PRIVATE
/opt/CMSIS_5/CMSIS/Core/Include # Core CMSIS first
/opt/cmsis-device-h7/Include # Device CMSIS
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc
${CMAKE_SOURCE_DIR} # For stm32h7xx_hal_conf.h
)
# Suppress the GENSEED_FORTEST warning (expected for emulation/test builds)
target_compile_options(wolfssl PRIVATE -Wno-cpp)
# wolfSSL STM32 port source file (needed for HASH and CRYPTO hardware acceleration)
set(WOLFSSL_STM32_PORT_SRC ${WOLFSSL_ROOT}/wolfcrypt/src/port/st/stm32.c)
add_executable(wolfcrypt_test.elf
startup_stm32h753.c
main.c
${WOLFSSL_ROOT}/wolfcrypt/test/test.c
${HAL_SOURCES}
${WOLFSSL_STM32_PORT_SRC}
)
target_include_directories(wolfcrypt_test.elf PRIVATE
${CMAKE_SOURCE_DIR}
${WOLFSSL_ROOT}
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc
/opt/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy
)
target_compile_definitions(wolfcrypt_test.elf PRIVATE
WOLFSSL_USER_SETTINGS
STM32H753xx
USE_HAL_DRIVER
USE_HAL_CONF # Enable HAL configuration
# NO_AES_CBC is defined in user_settings.h, no need to define it here
)
# HAL source files need the same compile options and must include stdint.h
# Disable all warnings for HAL files (third-party code we don't control)
set_source_files_properties(${HAL_SOURCES} PROPERTIES
COMPILE_FLAGS "-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Os -include stdint.h -w"
)
target_compile_options(wolfcrypt_test.elf PRIVATE
-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard
-ffunction-sections -fdata-sections -Os
)
target_link_options(wolfcrypt_test.elf PRIVATE
-T${CMAKE_SOURCE_DIR}/stm32h753.ld
-Wl,--gc-sections
-nostartfiles
-specs=nano.specs
-specs=nosys.specs
)
target_link_libraries(wolfcrypt_test.elf PRIVATE wolfssl m c gcc nosys)

View File

@@ -1,194 +0,0 @@
#!/bin/bash
set -euo pipefail
LOG=/tmp/wolfcrypt-renode.log
TIMEOUT=300 # Maximum 5 minutes
echo "Running wolfCrypt test in Renode..."
# Try to find Renode binary in common installation locations
# When installed via .deb package, Renode is typically in /usr/bin/renode
RENODE_BIN="${RENODE_BIN:-$(command -v renode 2>/dev/null || true)}"
if [ -z "$RENODE_BIN" ]; then
# Check common installation paths (order matters - check standard locations first)
for path in /usr/bin/renode /usr/local/bin/renode /opt/renode/renode; do
if [ -x "$path" ]; then
RENODE_BIN="$path"
break
fi
done
fi
if [ -z "$RENODE_BIN" ] || [ ! -x "$RENODE_BIN" ]; then
echo "Renode binary not found in image."
echo "Checked paths: /usr/bin/renode, /usr/local/bin/renode, /opt/renode/renode"
echo "PATH: $PATH"
which renode || echo "renode not in PATH"
exit 2
fi
echo "Using Renode binary: $RENODE_BIN"
# Determine Renode root directory (where platforms/ directory is located)
if [ -d "/opt/renode/platforms" ]; then
RENODE_ROOT="/opt/renode"
elif [ -d "/usr/lib/renode/platforms" ]; then
RENODE_ROOT="/usr/lib/renode"
elif [ -d "/usr/share/renode/platforms" ]; then
RENODE_ROOT="/usr/share/renode"
else
# Try to find Renode root by checking where the binary is
RENODE_DIR=$(dirname "$(readlink -f "${RENODE_BIN}" 2>/dev/null || echo "${RENODE_BIN}")")
if [ -d "${RENODE_DIR}/../platforms" ]; then
RENODE_ROOT=$(readlink -f "${RENODE_DIR}/.." 2>/dev/null || echo "${RENODE_DIR}/..")
else
echo "Warning: Could not determine Renode root directory"
RENODE_ROOT=""
fi
fi
# Set RENODE_ROOT environment variable (Renode uses this to find platform files)
if [ -n "$RENODE_ROOT" ]; then
export RENODE_ROOT
echo "Using Renode root: ${RENODE_ROOT}"
# Also create .renode-root file in firmware directory as backup
echo "${RENODE_ROOT}" > /opt/firmware/.renode-root
chmod 644 /opt/firmware/.renode-root
else
echo "ERROR: Could not determine Renode root directory"
exit 1
fi
# Verify platform file exists
PLATFORM_FILE="${RENODE_ROOT}/platforms/cpus/stm32h753.repl"
if [ ! -f "${PLATFORM_FILE}" ]; then
echo "ERROR: Platform file not found at ${PLATFORM_FILE}"
echo "Searching for platform files..."
find "${RENODE_ROOT}" -name "stm32h753.repl" 2>/dev/null | head -5 || true
exit 1
fi
echo "Platform file found at: ${PLATFORM_FILE}"
# Change to firmware directory
cd /opt/firmware
# Create a modified Renode script with absolute path to platform file
# This avoids the .renode-root file lookup issue
cat > /opt/firmware/run-renode-absolute.resc <<EOF
# Renode test script for STM32H753 (with absolute platform path)
using sysbus
mach create "stm32h753"
# Use absolute path to platform file to avoid .renode-root lookup issues
machine LoadPlatformDescription @${PLATFORM_FILE}
sysbus LoadELF @/opt/firmware/wolfcrypt_test.elf
# Connect USART3 to the console for wolfCrypt output
showAnalyzer usart3
# Start emulation and run for a long time
# The entrypoint script will kill Renode when test completes
emulation RunFor "600s"
EOF
# Start Renode in background, output to log (unbuffered)
# Use the modified script with absolute path
echo "Starting Renode with command: ${RENODE_BIN} --disable-xwt --console -e \"i @/opt/firmware/run-renode-absolute.resc\""
stdbuf -oL -eL "${RENODE_BIN}" --disable-xwt --console -e "i @/opt/firmware/run-renode-absolute.resc" > "${LOG}" 2>&1 &
RENODE_PID=$!
echo "Renode PID: $RENODE_PID"
# Monitor the log for completion, errors, and flush output frequently
START_TIME=$(date +%s)
RESULT=""
LAST_LOG_SIZE=0
while true; do
# Check if Renode is still running
if ! kill -0 "$RENODE_PID" 2>/dev/null; then
break
fi
# Flush new log content to stdout (unbuffered)
if [ -f "${LOG}" ]; then
CURRENT_LOG_SIZE=$(stat -f%z "${LOG}" 2>/dev/null || stat -c%s "${LOG}" 2>/dev/null || echo 0)
if [ "$CURRENT_LOG_SIZE" -gt "$LAST_LOG_SIZE" ]; then
# Output new lines
tail -c +$((LAST_LOG_SIZE + 1)) "${LOG}" 2>/dev/null | head -c $((CURRENT_LOG_SIZE - LAST_LOG_SIZE))
LAST_LOG_SIZE=$CURRENT_LOG_SIZE
fi
fi
# Check for Renode errors (must check before completion to catch errors early)
if grep -q "\[ERROR\]" "${LOG}" 2>/dev/null; then
echo ""
echo "ERROR: Renode reported an error!"
RESULT="renode_error"
break
fi
# Check for completion messages
if grep -q "=== wolfCrypt test passed! ===" "${LOG}" 2>/dev/null; then
RESULT="passed"
break
fi
if grep -q "=== wolfCrypt test FAILED ===" "${LOG}" 2>/dev/null; then
RESULT="failed"
break
fi
# Check timeout
CURRENT_TIME=$(date +%s)
ELAPSED=$((CURRENT_TIME - START_TIME))
if [ "$ELAPSED" -ge "$TIMEOUT" ]; then
echo ""
echo "Timeout after ${TIMEOUT} seconds"
RESULT="timeout"
break
fi
sleep 0.5
done
# Kill Renode if still running
if kill -0 "$RENODE_PID" 2>/dev/null; then
kill "$RENODE_PID" 2>/dev/null || true
wait "$RENODE_PID" 2>/dev/null || true
fi
# Show the log output
cat "${LOG}"
# Report result
case "$RESULT" in
passed)
echo ""
echo "wolfCrypt tests completed successfully."
exit 0
;;
failed)
echo ""
echo "wolfCrypt tests FAILED."
exit 1
;;
renode_error)
echo ""
echo "Renode reported an error - test aborted."
exit 1
;;
timeout)
echo ""
echo "wolfCrypt tests timed out after ${TIMEOUT} seconds."
exit 1
;;
*)
echo ""
echo "wolfCrypt tests did not report a result."
exit 1
;;
esac

View File

@@ -1,137 +0,0 @@
/* main.c - Entry point for wolfCrypt test on STM32H753 under Renode
*
* Runs the wolfCrypt test suite with output via USART3.
*/
#include <stdint.h>
#include <stddef.h>
#include <stdio.h>
/* wolfCrypt test entry point */
extern int wolfcrypt_test(void *args);
/* USART3 registers (STM32H7) */
#define USART3_BASE 0x40004800UL
#define USART3_CR1 (*(volatile uint32_t *)(USART3_BASE + 0x00))
#define USART3_BRR (*(volatile uint32_t *)(USART3_BASE + 0x0C))
#define USART3_ISR (*(volatile uint32_t *)(USART3_BASE + 0x1C))
#define USART3_TDR (*(volatile uint32_t *)(USART3_BASE + 0x28))
#define USART_CR1_UE (1 << 0)
#define USART_CR1_TE (1 << 3)
#define USART_ISR_TXE (1 << 7)
/* RCC registers for enabling USART3 clock */
#define RCC_BASE 0x58024400UL
#define RCC_APB1LENR (*(volatile uint32_t *)(RCC_BASE + 0xE8))
#define RCC_APB1LENR_USART3EN (1 << 18)
static void uart_init(void)
{
/* Enable USART3 clock */
RCC_APB1LENR |= RCC_APB1LENR_USART3EN;
/* Configure USART3: 115200 baud at 64MHz HSI */
USART3_BRR = 64000000 / 115200;
USART3_CR1 = USART_CR1_UE | USART_CR1_TE;
}
static void uart_putc(char c)
{
while (!(USART3_ISR & USART_ISR_TXE))
;
USART3_TDR = c;
}
static void uart_puts(const char *s)
{
while (*s) {
if (*s == '\n')
uart_putc('\r');
uart_putc(*s++);
}
}
/* newlib _write syscall - redirects printf to UART */
int _write(int fd, const char *buf, int len)
{
(void)fd;
for (int i = 0; i < len; i++) {
if (buf[i] == '\n')
uart_putc('\r');
uart_putc(buf[i]);
}
return len;
}
/* Heap management for malloc - required by printf with format strings */
extern char __heap_start__;
extern char __heap_end__;
void *_sbrk(ptrdiff_t incr)
{
static char *heap_ptr = NULL;
char *prev_heap_ptr;
if (heap_ptr == NULL) {
heap_ptr = &__heap_start__;
}
prev_heap_ptr = heap_ptr;
if (heap_ptr + incr > &__heap_end__) {
/* Out of heap memory */
return (void *)-1;
}
heap_ptr += incr;
return prev_heap_ptr;
}
/* Simple counter for time - used by GENSEED_FORTEST */
static volatile uint32_t tick_counter = 0;
/* time() stub for wolfSSL GENSEED_FORTEST */
#include <time.h>
time_t time(time_t *t)
{
tick_counter += 12345; /* Simple pseudo-random increment */
time_t val = (time_t)tick_counter;
if (t)
*t = val;
return val;
}
/* Result variable - can be monitored by Renode at fixed address */
volatile int test_result __attribute__((section(".data"))) = -1;
volatile int test_complete __attribute__((section(".data"))) = 0;
int main(int argc, char **argv)
{
(void)argc;
(void)argv;
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
uart_init();
uart_puts("\n\n=== Starting wolfCrypt test ===\n\n");
test_result = wolfcrypt_test(NULL);
test_complete = 1;
if (test_result == 0) {
uart_puts("\n\n=== wolfCrypt test passed! ===\n");
} else {
uart_puts("\n\n=== wolfCrypt test FAILED ===\n");
}
/* Spin forever after the test completes */
while (1) {
__asm__ volatile ("wfi");
}
return test_result;
}

View File

@@ -1,20 +0,0 @@
# Renode test script for STM32H753
# Note: @platforms/cpus/stm32h753.repl is relative to Renode root
# If RENODE_ROOT is set, Renode will use it; otherwise it looks for .renode-root file
using sysbus
mach create "stm32h753"
# Try relative path first (works if RENODE_ROOT or .renode-root is set correctly)
# If this fails, the absolute path will be tried in entrypoint.sh
machine LoadPlatformDescription @platforms/cpus/stm32h753.repl
sysbus LoadELF @/opt/firmware/wolfcrypt_test.elf
# Connect USART3 to the console for wolfCrypt output
showAnalyzer usart3
# Start emulation and run for a long time
# The entrypoint script will kill Renode when test completes
emulation RunFor "600s"

View File

@@ -1,101 +0,0 @@
/* Minimal startup code for STM32H753 running under Renode */
#include <stdint.h>
#include <stddef.h>
extern int main(int argc, char** argv);
void Default_Handler(void);
void Reset_Handler(void);
/* Symbols provided by the linker script */
extern unsigned long _estack;
extern unsigned long __data_start__;
extern unsigned long __data_end__;
extern unsigned long __bss_start__;
extern unsigned long __bss_end__;
extern unsigned long _sidata; /* start of .data in flash */
/* Minimal init_array support */
extern void (*__preinit_array_start[])(void);
extern void (*__preinit_array_end[])(void);
extern void (*__init_array_start[])(void);
extern void (*__init_array_end[])(void);
static void call_init_array(void)
{
size_t count, i;
count = __preinit_array_end - __preinit_array_start;
for (i = 0; i < count; i++)
__preinit_array_start[i]();
count = __init_array_end - __init_array_start;
for (i = 0; i < count; i++)
__init_array_start[i]();
}
void Reset_Handler(void)
{
unsigned long *src, *dst;
/* Copy .data from flash to RAM */
src = &_sidata;
for (dst = &__data_start__; dst < &__data_end__;)
*dst++ = *src++;
/* Zero .bss */
for (dst = &__bss_start__; dst < &__bss_end__;)
*dst++ = 0;
/* Call static constructors */
call_init_array();
/* Call main */
(void)main(0, (char**)0);
/* Infinite loop after main returns */
while (1) {
__asm__ volatile ("wfi");
}
}
void Default_Handler(void)
{
while (1) {
__asm__ volatile ("wfi");
}
}
/* Exception handlers - all weak aliases to Default_Handler */
void NMI_Handler(void) __attribute__((weak, alias("Default_Handler")));
void HardFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
void MemManage_Handler(void) __attribute__((weak, alias("Default_Handler")));
void BusFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
void UsageFault_Handler(void) __attribute__((weak, alias("Default_Handler")));
void SVC_Handler(void) __attribute__((weak, alias("Default_Handler")));
void DebugMon_Handler(void) __attribute__((weak, alias("Default_Handler")));
void PendSV_Handler(void) __attribute__((weak, alias("Default_Handler")));
void SysTick_Handler(void) __attribute__((weak, alias("Default_Handler")));
/* Vector table */
__attribute__ ((section(".isr_vector"), used))
void (* const g_pfnVectors[])(void) = {
(void (*)(void))(&_estack), /* Initial stack pointer */
Reset_Handler, /* Reset Handler */
NMI_Handler, /* NMI Handler */
HardFault_Handler, /* Hard Fault Handler */
MemManage_Handler, /* MPU Fault Handler */
BusFault_Handler, /* Bus Fault Handler */
UsageFault_Handler, /* Usage Fault Handler */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
SVC_Handler, /* SVCall Handler */
DebugMon_Handler, /* Debug Monitor Handler */
0, /* Reserved */
PendSV_Handler, /* PendSV Handler */
SysTick_Handler /* SysTick Handler */
/* IRQ vectors would continue here */
};

View File

@@ -1,109 +0,0 @@
/* Minimal STM32H753 memory map for Renode run */
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K
DTCM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
}
_estack = ORIGIN(RAM) + LENGTH(RAM);
_Min_Heap_Size = 128K;
_Min_Stack_Size = 128K;
ENTRY(Reset_Handler)
SECTIONS
{
.isr_vector :
{
. = ALIGN(4);
KEEP(*(.isr_vector))
. = ALIGN(4);
} > FLASH
.text :
{
. = ALIGN(4);
*(.text*)
*(.rodata*)
*(.glue_7)
*(.glue_7t)
*(.eh_frame)
. = ALIGN(4);
_etext = .;
} > FLASH
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
.ARM.exidx :
{
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} > FLASH
.preinit_array :
{
PROVIDE_HIDDEN(__preinit_array_start = .);
KEEP(*(.preinit_array*))
PROVIDE_HIDDEN(__preinit_array_end = .);
} > FLASH
.init_array :
{
PROVIDE_HIDDEN(__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array*))
PROVIDE_HIDDEN(__init_array_end = .);
} > FLASH
.fini_array :
{
PROVIDE_HIDDEN(__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array*))
PROVIDE_HIDDEN(__fini_array_end = .);
} > FLASH
/* Location in flash where .data will be stored */
_sidata = LOADADDR(.data);
.data :
{
. = ALIGN(4);
__data_start__ = .;
*(.data*)
. = ALIGN(4);
__data_end__ = .;
} > RAM AT> FLASH
.bss :
{
. = ALIGN(4);
__bss_start__ = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap_stack (NOLOAD):
{
. = ALIGN(8);
PROVIDE(__heap_start__ = .);
. = . + _Min_Heap_Size;
PROVIDE(__heap_end__ = .);
PROVIDE(end = __heap_end__);
. = ALIGN(8);
PROVIDE(__stack_start__ = .);
. = . + _Min_Stack_Size;
PROVIDE(__stack_end__ = .);
} > RAM
}
PROVIDE(_init = 0);
PROVIDE(_fini = 0);

View File

@@ -1,208 +0,0 @@
/* Minimal HAL configuration for STM32H753 wolfCrypt build under Renode.
* RNG and CRYP HAL are enabled. CRYP is used for AES_GCM only (other AES modes disabled).
* HASH is disabled as Renode doesn't implement it.
*/
#ifndef STM32H7xx_HAL_CONF_H
#define STM32H7xx_HAL_CONF_H
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------- Module Selection ----------------------------- */
#define HAL_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_GPIO_MODULE_ENABLED
#define HAL_RNG_MODULE_ENABLED
#define HAL_CRYP_MODULE_ENABLED /* Enabled for AES_GCM only */
/* #define HAL_HASH_MODULE_ENABLED */ /* Disabled - Renode doesn't implement HASH */
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_EXTI_MODULE_ENABLED
/* Disabled modules (explicit for clarity) */
/* #define HAL_SDRAM_MODULE_ENABLED */
/* ------------------------- Oscillator Values ---------------------------- */
#if !defined(HSE_VALUE)
#define HSE_VALUE 25000000UL /* External oscillator frequency in Hz */
#endif
#if !defined(HSE_STARTUP_TIMEOUT)
#define HSE_STARTUP_TIMEOUT 100UL /* Time out for HSE start up in ms */
#endif
#if !defined(CSI_VALUE)
#define CSI_VALUE 4000000UL /* Internal oscillator CSI in Hz */
#endif
#if !defined(HSI_VALUE)
#define HSI_VALUE 64000000UL /* Internal oscillator HSI in Hz */
#endif
#if !defined(HSI48_VALUE)
#define HSI48_VALUE 48000000UL /* Value of the Internal High Speed oscillator for USB in Hz */
#endif
#if !defined(LSE_VALUE)
#define LSE_VALUE 32768UL /* External low speed oscillator in Hz */
#endif
#if !defined(LSE_STARTUP_TIMEOUT)
#define LSE_STARTUP_TIMEOUT 5000UL /* Time out for LSE start up in ms */
#endif
#if !defined(LSI_VALUE)
#define LSI_VALUE 32000UL /* Internal low speed oscillator in Hz */
#endif
#if !defined(EXTERNAL_CLOCK_VALUE)
#define EXTERNAL_CLOCK_VALUE 12288000UL /* External audio clock in Hz */
#endif
/* ------------------------- System Configuration -------------------------- */
#define VDD_VALUE 3300UL /* Value of VDD in mV */
#define TICK_INT_PRIORITY 0x0FUL /* Tick interrupt priority */
#define USE_RTOS 0U
#define PREFETCH_ENABLE 0U
#define USE_HAL_ADC_REGISTER_CALLBACKS 0U
#define USE_HAL_CEC_REGISTER_CALLBACKS 0U
#define USE_HAL_COMP_REGISTER_CALLBACKS 0U
#define USE_HAL_CORDIC_REGISTER_CALLBACKS 0U
#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U
#define USE_HAL_DAC_REGISTER_CALLBACKS 0U
#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U
#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U
#define USE_HAL_DMA_REGISTER_CALLBACKS 0U
#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U
#define USE_HAL_DSI_REGISTER_CALLBACKS 0U
#define USE_HAL_DTS_REGISTER_CALLBACKS 0U
#define USE_HAL_ETH_REGISTER_CALLBACKS 0U
#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0U
#define USE_HAL_FMAC_REGISTER_CALLBACKS 0U
#define USE_HAL_GFXMMU_REGISTER_CALLBACKS 0U
#define USE_HAL_HASH_REGISTER_CALLBACKS 0U
#define USE_HAL_HCD_REGISTER_CALLBACKS 0U
#define USE_HAL_HRTIM_REGISTER_CALLBACKS 0U
#define USE_HAL_I2C_REGISTER_CALLBACKS 0U
#define USE_HAL_I2S_REGISTER_CALLBACKS 0U
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U
#define USE_HAL_JPEG_REGISTER_CALLBACKS 0U
#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U
#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U
#define USE_HAL_MDIOS_REGISTER_CALLBACKS 0U
#define USE_HAL_MMC_REGISTER_CALLBACKS 0U
#define USE_HAL_NAND_REGISTER_CALLBACKS 0U
#define USE_HAL_NOR_REGISTER_CALLBACKS 0U
#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U
#define USE_HAL_OSPI_REGISTER_CALLBACKS 0U
#define USE_HAL_OTFDEC_REGISTER_CALLBACKS 0U
#define USE_HAL_PCD_REGISTER_CALLBACKS 0U
#define USE_HAL_PSSI_REGISTER_CALLBACKS 0U
#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#define USE_HAL_RNG_REGISTER_CALLBACKS 0U
#define USE_HAL_RTC_REGISTER_CALLBACKS 0U
#define USE_HAL_SAI_REGISTER_CALLBACKS 0U
#define USE_HAL_SD_REGISTER_CALLBACKS 0U
#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U
#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U
#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U
#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U
#define USE_HAL_SWPMI_REGISTER_CALLBACKS 0U
#define USE_HAL_TIM_REGISTER_CALLBACKS 0U
#define USE_HAL_UART_REGISTER_CALLBACKS 0U
#define USE_HAL_USART_REGISTER_CALLBACKS 0U
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U
#define USE_HAL_XSPI_REGISTER_CALLBACKS 0U
/* ------------------------- SPI peripheral configuration ------------------ */
#define USE_SPI_CRC 0U
/* ------------------------- Assertion ------------------------------------- */
/* #define USE_FULL_ASSERT 1U */
#define assert_param(expr) ((void)0U)
/* ------------------------- Ethernet Configuration ------------------------ */
#define ETH_TX_DESC_CNT 4U
#define ETH_RX_DESC_CNT 4U
#define ETH_MAC_ADDR0 0x02U
#define ETH_MAC_ADDR1 0x00U
#define ETH_MAC_ADDR2 0x00U
#define ETH_MAC_ADDR3 0x00U
#define ETH_MAC_ADDR4 0x00U
#define ETH_MAC_ADDR5 0x00U
/* ------------------------- Include HAL headers --------------------------- */
/**
* @brief Include module's header file
*/
#ifdef HAL_RCC_MODULE_ENABLED
#include "stm32h7xx_hal_rcc.h"
#endif /* HAL_RCC_MODULE_ENABLED */
#ifdef HAL_GPIO_MODULE_ENABLED
#include "stm32h7xx_hal_gpio.h"
#endif /* HAL_GPIO_MODULE_ENABLED */
#ifdef HAL_DMA_MODULE_ENABLED
#include "stm32h7xx_hal_dma.h"
#endif /* HAL_DMA_MODULE_ENABLED */
#ifdef HAL_CORTEX_MODULE_ENABLED
#include "stm32h7xx_hal_cortex.h"
#endif /* HAL_CORTEX_MODULE_ENABLED */
#ifdef HAL_EXTI_MODULE_ENABLED
#include "stm32h7xx_hal_exti.h"
#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32h7xx_hal_flash.h"
#endif /* HAL_FLASH_MODULE_ENABLED */
#ifdef HAL_PWR_MODULE_ENABLED
#include "stm32h7xx_hal_pwr.h"
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_RNG_MODULE_ENABLED
#include "stm32h7xx_hal_rng.h"
#endif /* HAL_RNG_MODULE_ENABLED */
/* CRYP enabled for AES_GCM only */
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32h7xx_hal_cryp.h"
#endif
/* #ifdef HAL_HASH_MODULE_ENABLED
#include "stm32h7xx_hal_hash.h"
#endif */
/* Exported macro ------------------------------------------------------------*/
#ifdef USE_FULL_ASSERT
/**
* @brief The assert_param macro is used for function's parameters check.
* @param expr: If expr is false, it calls assert_failed function
* which reports the name of the source file and the source
* line number of the call that failed.
* If expr is true, it returns no value.
* @retval None
*/
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
void assert_failed(uint8_t *file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
#ifdef __cplusplus
}
#endif
#endif /* STM32H7xx_HAL_CONF_H */

View File

@@ -1,24 +0,0 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_AR arm-none-eabi-ar)
set(CMAKE_RANLIB arm-none-eabi-ranlib)
set(CMAKE_C_STANDARD 11)
set(CPU_FLAGS "-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard")
set(OPT_FLAGS "-Os -ffunction-sections -fdata-sections")
set(CMSIS_INCLUDES "-I/opt/cmsis-device-h7/Include -I/opt/CMSIS_5/CMSIS/Core/Include -I/opt/firmware")
set(CMAKE_C_FLAGS_INIT "${CPU_FLAGS} ${OPT_FLAGS} ${CMSIS_INCLUDES} -DSTM32H753xx")
set(CMAKE_CXX_FLAGS_INIT "${CPU_FLAGS} ${OPT_FLAGS} ${CMSIS_INCLUDES} -DSTM32H753xx")
set(CMAKE_ASM_FLAGS_INIT "${CPU_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--gc-sections -static")

View File

@@ -1,95 +0,0 @@
/* user_settings_renode.h - wolfSSL/wolfCrypt configuration for STM32H753 under Renode
*
* Minimal, semihosting-friendly build for Cortex-M7 / STM32H753.
* Hardware RNG and CRYPTO (AES-GCM only) are enabled via Renode's STM32H753 emulation.
* HASH is disabled as Renode doesn't implement the HASH peripheral.
*/
#ifndef USER_SETTINGS_RENODE_H
#define USER_SETTINGS_RENODE_H
/* ------------------------- Platform ------------------------------------- */
#define WOLFSSL_ARM_CORTEX_M
#define WOLFSSL_STM32H7 /* STM32H7 series (includes H753) */
#define WOLFSSL_STM32_CUBEMX /* Use STM32 HAL for CRYPTO */
/* NO_STM32_CRYPTO is NOT defined, so CRYPTO will be enabled */
/* Disable HASH - Renode doesn't implement HASH peripheral */
#define NO_STM32_HASH
/* Required for consistent math library settings (CTC_SETTINGS) */
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
/* ------------------------- Threading / OS ------------------------------- */
#define SINGLE_THREADED
/* ------------------------- Filesystem / I/O ----------------------------- */
#define WOLFSSL_NO_CURRDIR
#define NO_FILESYSTEM
#define NO_WRITEV
/* ------------------------- wolfCrypt Only ------------------------------- */
#define WOLFCRYPT_ONLY
#define NO_DH
#define NO_DSA
/* Disable DES/3DES - Renode CRYPTO only supports AES_GCM */
#define NO_DES
#define NO_DES3
/* ------------------------- AES Mode Configuration ----------------------- */
/* Disable all AES modes except GCM - Renode CRYPTO only supports AES_GCM */
/* NO_AES_CBC prevents HAVE_AES_CBC from being defined in settings.h */
#define NO_AES_CBC
/* ------------------------- RNG Configuration ---------------------------- */
/* Enable STM32 hardware RNG (emulated by Renode) using direct register access */
#define WOLFSSL_STM32_RNG_NOLIB
/* NO_STM32_RNG is NOT defined, so STM32_RNG will be auto-enabled */
#define NO_DEV_RANDOM
#define HAVE_HASHDRBG
/* ------------------------- Math Library --------------------------------- */
/* Use SP Math (Single Precision) - modern, efficient, and secure */
#define WOLFSSL_SP_MATH_ALL
#define WOLFSSL_HAVE_SP_RSA
#define WOLFSSL_HAVE_SP_DH
#define WOLFSSL_HAVE_SP_ECC
#define WOLFSSL_SP_ARM_CORTEX_M_ASM
#define SP_WORD_SIZE 32
/* ------------------------- Crypto Hardening ----------------------------- */
#define WC_RSA_BLINDING
#define ECC_TIMING_RESISTANT
/* ------------------------- Size Optimization ---------------------------- */
#define WOLFSSL_SMALL_STACK
/* ------------------------- Test Configuration --------------------------- */
/* Use smaller key sizes for faster test runs in emulation */
#define BENCH_EMBEDDED
/* Use our own main() instead of the one in test.c */
#define NO_MAIN_DRIVER
/* ------------------------- Post-options.h cleanup ----------------------- */
/* Ensure unsupported AES modes stay disabled even after options.h processing */
/* These undefs will be processed after options.h includes, preventing
* Renode-unsupported modes from being used */
#ifdef HAVE_AES_CBC
#undef HAVE_AES_CBC
#endif
#ifdef HAVE_AES_ECB
#undef HAVE_AES_ECB
#endif
#ifdef HAVE_AES_CTR
#undef HAVE_AES_CTR
#endif
#ifdef HAVE_AES_CFB
#undef HAVE_AES_CFB
#endif
#ifdef HAVE_AES_OFB
#undef HAVE_AES_OFB
#endif
#endif /* USER_SETTINGS_RENODE_H */

View File

@@ -1,34 +0,0 @@
name: WolfSSL Ada Build Tests
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
build:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install gnat
run: |
sudo apt-get update
sudo apt-get install -y gnat gprbuild
- name: Checkout wolfssl
uses: actions/checkout@master
with:
repository: wolfssl/wolfssl
path: wolfssl
- name: Build wolfssl Ada
working-directory: ./wolfssl/wrapper/Ada
run: |
mkdir obj
gprbuild default.gpr
gprbuild examples.gpr

View File

@@ -1,465 +0,0 @@
name: Arduino CI Build (1 of 4) wolfssl
#
# Test fetches wolfssl-examples/Arduino and uses local, latest github master branch wolfssl
#
# These 4 workflows across 3 repos are interdependent for the current $REPO_OWNER:
#
# THIS Arduino CI Build 1: https://github.com/$REPO_OWNER/wolfssl # /.github/workflows/arduino.yml
# - Builds Arduino library from local clone of wolfssl master branch
# - Fetches examples from https://github.com/$REPO_OWNER/wolfssl-examples
#
# Arduino CI Build 2: https://github.com/$REPO_OWNER/wolfssl-examples # /.github/workflows/arduino-release.yml
# - Tests examples based on latest published release of Arduino library, NOT latest on wolfssl github.
# - Should be identical to Arduino CI Build 3 in every way but wolfssl install.
# - Copies only compile script from wolfssl-examples
# - Builds local examples
# - No other repos used
#
# Arduino CI Build 3: https://github.com/$REPO_OWNER/wolfssl-examples # /.github/workflows/arduino.yml
# - Fetches current wolfSSL from https://github.com/$REPO_OWNER/wolfssl
# - Creates an updated Arduino library
# - Compiles local examples
# - Contains the source of `compile-all-examples.sh` and respective board-list.txt
#
# Arduino CI Build 4: https://github.com/$REPO_OWNER/Arduino-wolfssl # /.github/workflows/arduino.yml
# - Assembles and installs an updated Arduino wolfssl library from LOCAL wolfssl master source
# - Copies only compile script copied from wolfssl-examples
# - Builds local examples
# - No other repos used
#
#
# ** NOTE TO MAINTAINERS **
#
# Consider using winmerge or similar tool to keep the 4 arduino[-release].yml files in relative sync.
# Although there are some specific differences, most of the contents are otherwise identical.
#
# See https://github.com/wolfSSL/Arduino-wolfSSL
#
# To test locally:
# cd [your WOLFSSL_ROOT], e.g. cd /mnt/c/workspace/wolfssl-$USER
# [optional checkout] e.g. git checkout tags/v5.8.4-stable
# pushd ./IDE/ARDUINO
# export ARDUINO_ROOT="$HOME/Arduino/libraries"
# ./wolfssl-arduino.sh INSTALL
# cd [your WOLFSSL_EXAMPLES_ROOT] e.g. /mnt/c/workspace/wolfssl-examples-$USER
#
# START OF COMMON SECTION
on:
push:
branches: [ '**', 'master', 'main', 'release/**' ]
paths:
# Specific to this Arduino CI Build (1 of 4)
- '.github/workflows/arduino.yml'
- 'IDE/ARDUINO/**'
- 'src/**'
- 'wolfcrypt/**'
- 'wolfssl/**'
pull_request:
branches: [ '**' ]
paths:
- '.github/workflows/arduino.yml'
- 'IDE/ARDUINO/**'
- 'src/**'
- 'wolfcrypt/**'
- 'wolfssl/**'
workflow_dispatch:
concurrency:
# Same branch push cancels other jobs. Other PR branches untouched
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
fqbn:
# When editing this list, be sure to also edit file: board_list.txt
# The compile-all-examples.sh optionally takes a FQBN parameter to
# optionally compile all examples ONLY for the respective fully qualified board name.
# See https://github.com/wolfSSL/wolfssl-examples/blob/master/Arduino/sketches/board_list.txt
- arduino:avr:ethernet
- arduino:avr:leonardoeth
- arduino:avr:mega
- arduino:avr:nano
- arduino:avr:uno
- arduino:avr:yun
- arduino:samd:mkrwifi1010
- arduino:samd:mkr1000
- arduino:samd:mkrfox1200
- arduino:mbed_edge:edge_control
- arduino:mbed_nano:nanorp2040connect
- arduino:mbed_portenta:envie_m7
- arduino:mbed_portenta:portenta_x8
- arduino:renesas_uno:unor4wifi
- arduino:sam:arduino_due_x
- arduino:samd:arduino_zero_native
- arduino:samd:tian
- esp32:esp32:esp32
- esp32:esp32:esp32s2
- esp32:esp32:esp32s3
- esp32:esp32:esp32c3
- esp32:esp32:esp32c6
- esp32:esp32:esp32h2
- esp8266:esp8266:generic
- teensy:avr:teensy40
# Not yet supported, not in standard library
# - esp32:esp32:nano_nora
# End strategy matrix
env:
REPO_OWNER: ${{ github.repository_owner }}
steps:
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo apt-get clean
df -h
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Arduino CLI
run: |
# Script to fetch and run install.sh from arduino/arduino-cli
# The install script will test to see if the recently installed apps in the path
# So set it up in advance:
mkdir -p "${PWD}/bin"
echo "${PWD}/bin" >> $GITHUB_PATH
# Sets the install directory to a consistent path at the repo root.
ROOT_BIN="$GITHUB_WORKSPACE/bin"
# Ensures that BINDIR exists before the installer runs
mkdir -p "$ROOT_BIN"
# Save as a global environment variable
echo "$ROOT_BIN" >> "$GITHUB_PATH"
# Download and run install script from Arduino:
# -S show errors; -L follow redirects; -v Verbose
set +e # don't abort on error
set -o pipefail
curl -vSL --retry 5 --retry-delay 10 \
https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh \
| sh -x
rc=$?
c_rc=${PIPESTATUS[0]} # curl's exit code
s_rc=${PIPESTATUS[1]} # sh's exit code
set -e # restore default abort-on-error
# If there was a curl error, we have our own local copy that is more reliable and can add our own debugging
if [ "$rc" -ne 0 ]; then
echo "Primary install failed: curl=$c_rc, sh=$s_rc. Falling back..." >&2
echo "Using local copy of arduino_install.sh"
pushd ./Arduino/sketches
chmod +x ./arduino_install.sh
# Mimic curl install, does not use current directory:
BINDIR="$ROOT_BIN" sh -x ./arduino_install.sh
popd
else
echo "Alternative install script not needed."
fi
- name: Confirm Arduino CLI Install
run: arduino-cli version
- name: Derive CORE_ID (vendor:arch from FQBN)
run: |
CORE_ID="$(echo '${{ matrix.fqbn }}' | cut -d: -f1-2)"
echo "CORE_ID=$CORE_ID" >> "$GITHUB_ENV"
- name: Setup Arduino CLI
run: |
arduino-cli config init
# wait 10 minutes for big downloads (or use 0 for no limit)
arduino-cli config set network.connection_timeout 600s
arduino-cli config add board_manager.additional_urls https://www.pjrc.com/teensy/package_teensy_index.json
arduino-cli config add board_manager.additional_urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
arduino-cli core update-index
echo "CORE_ID: $CORE_ID"
arduino-cli core install "$CORE_ID"
# The above is instead of:
# arduino-cli core install esp32:esp32 # ESP32
# arduino-cli core install arduino:avr # Arduino Uno, Mega, Nano
# arduino-cli core install arduino:sam # Arduino Due
# arduino-cli core install arduino:samd # Arduino Zero
# arduino-cli core install teensy:avr # PJRC Teensy
# arduino-cli core install esp8266:esp8266 # ESP8266
# arduino-cli core install arduino:mbed_nano # nanorp2040connect
# arduino-cli core install arduino:mbed_portenta # portenta_h7_m7
# arduino-cli core install arduino:mbed_edge
# arduino-cli core install arduino:renesas_uno
# For reference:
# mbed nano not yet tested
# sudo "/home/$USER/.arduino15/packages/arduino/hardware/mbed_nano/4.2.4/post_install.sh"
# Always install networking (not part of FQBN matrix)
# The first one also creates directory: /home/runner/Arduino/libraries
arduino-cli lib install "ArduinoJson" # Example dependency
arduino-cli lib install "WiFiNINA" # ARDUINO_SAMD_NANO_33_IOT
arduino-cli lib install "Ethernet" # Install Ethernet library
arduino-cli lib install "Bridge" # Pseudo-network for things like arduino:samd:tian
- name: Set Job Environment Variables
run: |
# Script to assign some common environment variables after everything is installed
ICON_OK=$(printf "\xE2\x9C\x85")
ICON_FAIL=$(printf "\xE2\x9D\x8C")
echo "GITHUB_WORK=$(realpath "$GITHUB_WORKSPACE/../..")" >> "$GITHUB_ENV"
echo "ARDUINO_ROOT=$(realpath "$HOME/Arduino/libraries")" >> "$GITHUB_ENV"
# Show predefined summary:
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
# Show assigned build:env values (e.g. "wolfssl", "gojimmpi" or other owners):
echo "REPO_OWNER = $REPO_OWNER"
echo "GITHUB_ENV=$GITHUB_ENV"
# Show our custom values:
echo "GITHUB_WORK = $GITHUB_WORK"
echo "ARDUINO_ROOT = $ARDUINO_ROOT"
# WOLFSSL_EXAMPLES_ROOT is the repo root, not example location
echo "WOLFSSL_EXAMPLES_ROOT = $WOLFSSL_EXAMPLES_ROOT"
- name: Cache Arduino Packages
uses: actions/cache@v4
with:
path: |
~/.arduino15
~/.cache/arduino
# Exclude staging directory from cache to save space
!~/.arduino15/staging
# Arduino libraries
# Specific to Arduino CI Build (2 of 4) Arduinbo Release wolfSSL for Local Examples
# Include all libraries, as the latest Arduino-wolfSSL will only change upon release.
~/Arduino/libraries
# Ensure wolfssl is not cached, we're always using the latest. See separate cache.
!~/Arduino/libraries/wolfssl
key: arduino-${{ runner.os }}-${{ env.CORE_ID }}-${{ hashFiles('Arduino/sketches/board_list.txt') }}
restore-keys: |
arduino-${{ runner.os }}-${{ env.CORE_ID }}-
arduino-${{ runner.os }}-
- name: Get wolfssl-examples
run: |
# Fetch Arduino examples from the wolfssl-examples repo
echo "Start pwd:"
pwd
# we're typically in $GITHUB_WORKSPACE=/home/runner/work/wolfssl/wolfssl
# goto /home/runner/work to fetch wolfssl-examples
echo "Current pwd for wolfssl-examples clone fetch: $(pwd)"
GITHUB_WORK=$(realpath "$GITHUB_WORKSPACE/../..")
echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE"
# Typically /home/runner/work
echo "GITHUB_WORK=$GITHUB_WORK"
pushd "$GITHUB_WORK"
echo "Updated pwd for wolfssl-examples clone fetch: $(pwd)"
git clone --depth 1 https://github.com/$REPO_OWNER/wolfssl-examples.git wolfssl-examples-publish
cd ./wolfssl-examples-publish
echo "WOLFSSL_EXAMPLES_ROOT=$(pwd)"
echo "Path for wolfssl-examples-publish: $(pwd)"
popd # GITHUB_WORK
# ** END ** Get wolfssl-examples
- name: Install wolfSSL Arduino library
run: |
# Run the local wolfssl-arduino.sh install script to install wolfssl Arduino library.
echo "Installing wolfSSL Arduino library (no cache hit)."
rm -rf "$ARDUINO_ROOT/wolfssl"
# Methods of installing Arduino library:
# 1) arduino-cli lib install "wolfSSL"
# 2) manual copy of files (typical of the Arduino-wolfssl repo)
# 3) run ./wolfssl-arduino.sh INSTALL (typical of the wolfssl repo)
echo "Current pwd for wolfssl-examples clone fetch: $(pwd)"
GITHUB_WORK=$(realpath "$GITHUB_WORKSPACE/../..")
echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE"
# Typically /home/runner/work
echo "GITHUB_WORK=$GITHUB_WORK"
pwd
pushd ./IDE/ARDUINO
# Set default ARDUINO_ROOT to Arduino library.
export ARDUINO_ROOT="$HOME/Arduino/libraries"
export WOLFSSL_EXAMPLES_ROOT="$GITHUB_WORK/wolfssl-examples-publish"
echo "ARDUINO_ROOT: $WOLFSSL_EXAMPLES_ROOT"
echo "WOLFSSL_EXAMPLES_ROOT: $WOLFSSL_EXAMPLES_ROOT"
bash ./wolfssl-arduino.sh INSTALL # Install wolfSSL library
popd
# ** END ** Install wolfSSL Arduino library
- name: List installed Arduino libraries
run: arduino-cli lib list
- name: Get compile-all-examples.sh
run: |
# Fetch compile script FROM THE CURRENT OWNER.
# This repo is Arduino-wolfssl; we'll fetch the script from the wolfssl-examples for the same repository owner.
echo "Repository owner: $REPO_OWNER"
echo "Current directory: $PWD"
echo "Current pwd for wolfssl-examples clone fetch: $PWD"
WOLFSSL_EXAMPLES_DIRECTORY="$ARDUINO_ROOT/wolfssl/examples"
THIS_BOARD_LIST="board_list.txt"
echo "WOLFSSL_EXAMPLES_DIRECTORY=$WOLFSSL_EXAMPLES_DIRECTORY"
# Fetch script and board list into WOLFSSL_EXAMPLES_DIRECTORY
echo "Fetching board_list.txt from REPO_OWNER=$REPO_OWNER"
curl -L "https://raw.githubusercontent.com/$REPO_OWNER/wolfssl-examples/master/Arduino/sketches/board_list.txt" \
-o "$WOLFSSL_EXAMPLES_DIRECTORY/$THIS_BOARD_LIST"
# Check if the first line is "404: Not Found" - which would indicate the curl path above is bad.
FILE="$WOLFSSL_EXAMPLES_DIRECTORY/board_list.txt"
# Ensure the file exists
if [[ ! -f "$FILE" ]]; then
echo "File not found: $FILE"
exit 1
fi
# Check if the first line is "404: Not Found"
if [[ $(head -n 1 "$FILE") == "404: Not Found" ]]; then
echo "The first line is '404: Not Found'"
exit 1
fi
# Fetch the compile script from repo: https://github.com/[$USER]/wolfssl-examples/
echo "Fetching compile-all-examples.sh from REPO_OWNER=$REPO_OWNER"
curl -L "https://raw.githubusercontent.com/$REPO_OWNER/wolfssl-examples/master/Arduino/sketches/compile-all-examples.sh" \
-o "$WOLFSSL_EXAMPLES_DIRECTORY/compile-all-examples.sh"
# Check if the first line is "404: Not Found" - which would indicate the curl path above is bad.
FILE="$WOLFSSL_EXAMPLES_DIRECTORY/compile-all-examples.sh"
# Ensure the file exists
if [[ ! -f "$FILE" ]]; then
echo "File not found: $FILE"
exit 1
fi
# Check if the first line is "404: Not Found"
if [[ $(head -n 1 "$FILE") == "404: Not Found" ]]; then
echo "The first line is '404: Not Found'"
exit 1
fi
pushd "$WOLFSSL_EXAMPLES_DIRECTORY"
echo "Current directory: $PWD"
echo "Current directory $PWD"
echo "Contents:"
ls -al
find ./ -type f | sort
# ensure we can execute the script here (permissions lost during curl fetch)
chmod +x ./compile-all-examples.sh
echo "Found compile script: $(ls -al ./compile-all-examples.sh ./$THIS_BOARD_LIST)"
popd
# ** END ** Get compile-all-examples.sh
# This will fail with Arduino published wolfSSL v5.7.6 and older
# as the examples moved. See https://github.com/wolfSSL/wolfssl/pull/8514
#
- name: Compile Arduino Sketches for Various Boards
run: |
# Call the compile-all-examples.sh script to compile all the examples for each of the fqbn names in the local copy of board_list.txt
echo "Current directory: $PWD"
echo "ARDUINO_ROOT: $ARDUINO_ROOT"
WOLFSSL_EXAMPLES_DIRECTORY="$ARDUINO_ROOT/wolfssl/examples"
echo "WOLFSSL_EXAMPLES_DIRECTORY: $WOLFSSL_EXAMPLES_DIRECTORY"
# Limit the number of jobs to 1 to avoid running out of memory
export ARDUINO_CLI_MAX_JOBS=1
echo "Change directory to Arduino examples..."
pushd "$WOLFSSL_EXAMPLES_DIRECTORY"
chmod +x ./compile-all-examples.sh
# The script expects all the examples to be in the current directory.
# Along with ./board_list.txt from examples repo
echo "Current directory: $PWD"
echo "Calling ./compile-all-examples.sh"
bash ./compile-all-examples.sh ./board_list.txt "${{ matrix.fqbn }}"
popd
# End Compile Arduino Sketches for Various Boards
- name: Cleanup to Save Disk Space
if: always()
run: |
echo "Disk usage before cleanup:"
df -h
echo ""
echo "Cleaning up build artifacts and temporary files..."
# Clean up Arduino build artifacts
find ~/Arduino -name "*.hex" -delete 2>/dev/null || true
find ~/Arduino -name "*.elf" -delete 2>/dev/null || true
find ~/Arduino -name "*.bin" -delete 2>/dev/null || true
find ~/Arduino -name "build" -type d -exec rm -rf {} + 2>/dev/null || true
rm -rf ~/.arduino15/packages/esp32/tools || true
rm -rf ~/.arduino15/packages/esp32/hardware || true
rm -rf ~/.espressif || true
# Clean up staging directories
rm -rf ~/.arduino15/staging/* || true
rm -rf ~/.cache/arduino/* || true
# Clean up git clone of wolfssl-examples
GITHUB_WORK=$(realpath "$GITHUB_WORKSPACE/../..")
rm -rf "$GITHUB_WORK/wolfssl-examples-publish" || true
# Clean up any temporary files in workspace
find "$GITHUB_WORKSPACE" -name "*.o" -delete 2>/dev/null || true
find "$GITHUB_WORKSPACE" -name "*.a" -delete 2>/dev/null || true
echo ""
echo "Disk usage after cleanup:"
df -h

View File

@@ -18,13 +18,12 @@ jobs:
matrix: matrix:
config: [ config: [
# Add new configs here # Add new configs here
'--enable-asynccrypt --enable-all --enable-dtls13 CFLAGS="-pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFCRYPT_TEST_LINT"', '--enable-asynccrypt --enable-all --enable-dtls13',
'--enable-asynccrypt-sw --enable-ocspstapling --enable-ocspstapling2 CFLAGS="-pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"', '--enable-asynccrypt-sw --enable-ocspstapling --enable-ocspstapling2',
'--enable-ocsp CFLAGS="-DTEST_NONBLOCK_CERTS -pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"', '--enable-ocsp CFLAGS="-DTEST_NONBLOCK_CERTS"',
] ]
name: make check name: make check
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 6 timeout-minutes: 6
steps: steps:
@@ -33,11 +32,11 @@ jobs:
- name: Test wolfSSL async - name: Test wolfSSL async
run: | run: |
./autogen.sh ./async-check.sh install
./configure ${{ matrix.config }} ./configure ${{ matrix.config }}
make check make check
- name: Print errors - name: Print errors
if: ${{ failure() }} if: ${{ failure() }}
run: | run: |
if [ -f test-suite.log ] ; then if [ -f test-suite.log ] ; then

View File

@@ -1,93 +0,0 @@
name: bind9 Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-bind
path: build-dir.tgz
retention-days: 5
bind_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 9.18.0, 9.18.28, 9.18.33 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 10
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-bind
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# hostap dependencies
sudo apt-get install -y libuv1-dev libnghttp2-dev libcap-dev libcmocka-dev
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout bind9
uses: actions/checkout@v4
with:
repository: isc-projects/bind9
path: bind
ref: v${{ matrix.ref }}
- name: Build and test bind9
working-directory: bind
run: |
export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/build-dir/lib/pkgconfig
patch -p1 < $GITHUB_WORKSPACE/osp/bind9/${{ matrix.ref }}.patch
autoreconf -ivf
./configure --with-wolfssl
sed -i 's/SUBDIRS = system//g' bin/tests/Makefile # remove failing tests
make -j V=1
make -j V=1 check

View File

@@ -1,126 +0,0 @@
name: WolfSSL CMake Build Tests
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
build:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
steps:
# pull wolfSSL
- uses: actions/checkout@master
# install cmake
- name: Install cmake
run: |
sudo apt-get update
sudo apt-get install -y cmake
# pull wolfssl
- name: Checkout wolfssl
uses: actions/checkout@master
with:
repository: wolfssl/wolfssl
path: wolfssl
# build wolfssl
- name: Build wolfssl
working-directory: ./wolfssl
run: |
mkdir build
cd build
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
-DWOLFSSL_16BIT:BOOL=no -DWOLFSSL_32BIT:BOOL=no -DWOLFSSL_AES:BOOL=yes \
-DWOLFSSL_AESCBC:BOOL=yes -DWOLFSSL_AESCCM:BOOL=yes -DWOLFSSL_AESCFB:BOOL=yes \
-DWOLFSSL_AESCTR:BOOL=yes -DWOLFSSL_AESGCM:STRING=yes -DWOLFSSL_AESKEYWRAP:BOOL=yes \
-DWOLFSSL_AESOFB:BOOL=yes -DWOLFSSL_AESSIV:BOOL=yes -DWOLFSSL_ALIGN_DATA:BOOL=yes \
-DWOLFSSL_ALPN:BOOL=ON -DWOLFSSL_ALT_CERT_CHAINS:BOOL=ON -DWOLFSSL_ARC4:BOOL=yes \
-DWOLFSSL_ARIA:BOOL=no -DWOLFSSL_ASIO:BOOL=no -DWOLFSSL_ASM:BOOL=yes -DWOLFSSL_ASN:BOOL=yes \
-DWOLFSSL_ASYNC_THREADS:BOOL=no -DWOLFSSL_BASE64_ENCODE:BOOL=yes -DWOLFSSL_CAAM:BOOL=no \
-DWOLFSSL_CERTEXT:BOOL=yes -DWOLFSSL_CERTGEN:BOOL=yes -DWOLFSSL_CERTGENCACHE:BOOL=no \
-DWOLFSSL_CERTREQ:BOOL=yes -DWOLFSSL_CHACHA:STRING=yes -DWOLFSSL_CMAC:BOOL=yes \
-DWOLFSSL_CODING:BOOL=yes -DWOLFSSL_CONFIG_H:BOOL=yes -DWOLFSSL_CRL:STRING=yes \
-DWOLFSSL_CRYPTOCB:BOOL=yes -DWOLFSSL_CRYPTOCB_NO_SW_TEST:BOOL=no \
-DWOLFSSL_CRYPT_TESTS:BOOL=yes -DWOLFSSL_CRYPT_TESTS_HELP:BOOL=no \
-DWOLFSSL_CRYPT_TESTS_LIBS:BOOL=no -DWOLFSSL_CURL:BOOL=yes -DWOLFSSL_CURVE25519:STRING=yes \
-DWOLFSSL_CURVE448:STRING=yes -DWOLFSSL_DEBUG:BOOL=yes -DWOLFSSL_DES3:BOOL=ON \
-DWOLFSSL_DES3_TLS_SUITES:BOOL=no -DWOLFSSL_DH:STRING=yes -DWOLFSSL_DH_DEFAULT_PARAMS:BOOL=yes \
-DWOLFSSL_DSA:BOOL=yes -DWOLFSSL_DTLS:BOOL=ON -DWOLFSSL_DTLS13:BOOL=yes \
-DWOLFSSL_DTLS_CID:BOOL=yes -DWOLFSSL_ECC:STRING=yes \
-DWOLFSSL_ECCCUSTCURVES:STRING=all -DWOLFSSL_ECCSHAMIR:BOOL=yes \
-DWOLFSSL_ECH:BOOL=yes -DWOLFSSL_ED25519:BOOL=yes -DWOLFSSL_ED448:STRING=yes \
-DWOLFSSL_ENCKEYS:BOOL=yes -DWOLFSSL_ENC_THEN_MAC:BOOL=yes -DWOLFSSL_ERROR_QUEUE:BOOL=yes \
-DWOLFSSL_ERROR_STRINGS:BOOL=yes -DWOLFSSL_EXAMPLES:BOOL=yes -DWOLFSSL_EXPERIMENTAL:BOOL=yes \
-DWOLFSSL_EXTENDED_MASTER:BOOL=yes -DWOLFSSL_EX_DATA:BOOL=yes -DWOLFSSL_FAST_MATH:BOOL=no \
-DWOLFSSL_FILESYSTEM:BOOL=yes -DWOLFSSL_HARDEN:BOOL=yes -DWOLFSSL_HASH_DRBG:BOOL=yes \
-DWOLFSSL_HKDF:BOOL=yes -DWOLFSSL_HPKE:BOOL=yes -DWOLFSSL_HRR_COOKIE:STRING=yes \
-DWOLFSSL_INLINE:BOOL=yes -DWOLFSSL_INSTALL:BOOL=yes -DWOLFSSL_IP_ALT_NAME:BOOL=ON \
-DWOLFSSL_KEYGEN:BOOL=yes -DWOLFSSL_KEYING_MATERIAL:BOOL=ON \
-DWOLFSSL_MD4:BOOL=ON -DWOLFSSL_MD5:BOOL=yes -DWOLFSSL_MEMORY:BOOL=yes -DWOLFSSL_NO_STUB:BOOL=no \
-DWOLFSSL_OAEP:BOOL=yes -DWOLFSSL_OCSP:BOOL=yes -DWOLFSSL_OCSPSTAPLING:BOOL=ON \
-DWOLFSSL_OCSPSTAPLING_V2:BOOL=ON -DWOLFSSL_OLD_NAMES:BOOL=yes -DWOLFSSL_OLD_TLS:BOOL=yes \
-DWOLFSSL_OPENSSLALL:BOOL=yes -DWOLFSSL_OPENSSLEXTRA:BOOL=ON -DWOLFSSL_OPTFLAGS:BOOL=yes \
-DWOLFSSL_OQS:BOOL=no -DWOLFSSL_PKCALLBACKS:BOOL=yes -DWOLFSSL_PKCS12:BOOL=yes \
-DWOLFSSL_PKCS7:BOOL=yes -DWOLFSSL_POLY1305:BOOL=yes -DWOLFSSL_POSTAUTH:BOOL=yes \
-DWOLFSSL_PWDBASED:BOOL=yes -DWOLFSSL_QUIC:BOOL=yes -DWOLFSSL_REPRODUCIBLE_BUILD:BOOL=no \
-DWOLFSSL_RNG:BOOL=yes -DWOLFSSL_RSA:BOOL=yes -DWOLFSSL_RSA_PSS:BOOL=yes \
-DWOLFSSL_SESSION_TICKET:BOOL=ON -DWOLFSSL_SHA:BOOL=yes -DWOLFSSL_SHA224:BOOL=yes \
-DWOLFSSL_SHA3:STRING=yes -DWOLFSSL_SHA384:BOOL=yes -DWOLFSSL_SHA512:BOOL=yes \
-DWOLFSSL_SHAKE128:STRING=yes -DWOLFSSL_SHAKE256:STRING=yes -DWOLFSSL_SINGLE_THREADED:BOOL=no \
-DWOLFSSL_SNI:BOOL=yes -DWOLFSSL_SP_MATH_ALL:BOOL=yes -DWOLFSSL_SRTP:BOOL=yes \
-DWOLFSSL_STUNNEL:BOOL=yes -DWOLFSSL_SUPPORTED_CURVES:BOOL=yes -DWOLFSSL_SYS_CA_CERTS:BOOL=yes \
-DWOLFSSL_TICKET_NONCE_MALLOC:BOOL=yes -DWOLFSSL_TLS13:BOOL=yes -DWOLFSSL_TLSV12:BOOL=yes \
-DWOLFSSL_TLSX:BOOL=yes -DWOLFSSL_TPM:BOOL=yes -DWOLFSSL_CLU:BOOL=yes -DWOLFSSL_USER_SETTINGS:BOOL=no \
-DWOLFSSL_USER_SETTINGS_ASM:BOOL=no -DWOLFSSL_WOLFSSH:BOOL=ON -DWOLFSSL_X86_64_BUILD_ASM:BOOL=yes \
-DWOLFSSL_MLKEM=1 -DWOLFSSL_LMS=1 -DWOLFSSL_LMSSHA256192=1 -DWOLFSSL_EXPERIMENTAL=1 \
-DWOLFSSL_X963KDF:BOOL=yes -DWOLFSSL_DILITHIUM:BOOL=yes -DWOLFSSL_PKCS11:BOOL=yes \
-DWOLFSSL_ECCSI:BOOL=yes -DWOLFSSL_SAKKE:BOOL=yes -DWOLFSSL_SIPHASH:BOOL=yes \
-DCMAKE_C_FLAGS="-DWOLFSSL_DTLS_CH_FRAG" \
..
cmake --build .
ctest -j $(nproc)
cmake --install .
# clean up
cd ..
rm -rf build
# build "lean-tls" wolfssl
- name: Build wolfssl with lean-tls
working-directory: ./wolfssl
run: |
mkdir build
cd build
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
-DWOLFSSL_LEAN_TLS:BOOL=yes \
..
cmake --build .
cmake --install .
# clean up
cd ..
rm -rf build
# CMake build with user_settings.h
- name: Build wolfssl with user_settings.h
working-directory: ./wolfssl
run: |
mkdir build
cp examples/configs/user_settings_all.h ./build/user_settings.h
cd build
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
-DWOLFSSL_USER_SETTINGS=ON -DWOLFSSL_USER_SETTINGS_ASM=ON -DWOLFSSL_EXAMPLES=ON -DWOLFSSL_CRYPT_TESTS=ON \
-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -I ." \
..
cmake --build .
ctest -j $(nproc)
cmake --install .
# clean up
cd ..
rm -rf build

View File

@@ -1,30 +0,0 @@
name: Codespell test
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
codespell:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@v2.1
with:
check_filenames: true
check_hidden: true
# Add comma separated list of words that occur multiple times that should be ignored (sorted alphabetically, case sensitive)
ignore_words_list: adin,aNULL,brunch,carryIn,chainG,ciph,cLen,cliKs,dout,haveA,inCreated,inOut,inout,larg,LEAPYEAR,Merget,optionA,parm,parms,repid,rIn,userA,ser,siz,te,Te,HSI,failT,
# The exclude_file contains lines of code that should be ignored. This is useful for individual lines which have non-words that can safely be ignored.
exclude_file: '.codespellexcludelines'
# To skip files entirely from being processed, add it to the following list:
skip: '*.cproject,*.der,*.mtpj,*.pem,*.vcxproj,.git,*.launch,*.scfg,*.revoked,./examples/asn1/dumpasn1.cfg,./examples/asn1/oid_names.h'

View File

@@ -1,53 +0,0 @@
name: Coverity Scan master branch
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 1-5'
- cron: '0 0 * * 0'
- cron: '0 12 * * 0'
jobs:
coverity:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Configure wolfSSL with enable-all M-F
if: github.event.schedule == '0 0 * * 1-5'
run: |
./autogen.sh
./configure --enable-all
- name: Configure wolfSSL with enable-all enable-smallstack Sun at 00:00
if: github.event.schedule == '0 0 * * 0'
run: |
./autogen.sh
./configure --enable-all --enable-smallstack
- name: Configure wolfSSL with bigendian Sun at 12:00
if: github.event.schedule == '0 12 * * 0'
run: |
./autogen.sh
./configure --enable-all CFLAGS="-DBIG_ENDIAN_ORDER"
- name: Check secrets
env:
token_var: ${{ secrets.COVERITY_SCAN_TOKEN }}
email_var: ${{ secrets.COVERITY_SCAN_EMAIL }}
run: |
token_len=${#token_var}
echo "$token_len"
email_len=${#email_var}
echo "$email_len"
- uses: vapier/coverity-scan-action@v1
with:
build_language: 'cxx'
project: "wolfSSL/wolfssl"
token: ${{ secrets.COVERITY_SCAN_TOKEN }}
email: ${{ secrets.COVERITY_SCAN_EMAIL }}
command: "make"

View File

@@ -15,8 +15,7 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -27,20 +26,16 @@ jobs:
configure: --enable-curl configure: --enable-curl
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-curl name: wolf-install-curl
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
test_curl: test_curl:
name: ${{ matrix.curl_ref }} name: ${{ matrix.curl_ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 15 timeout-minutes: 15
needs: build_wolfssl needs: build_wolfssl
@@ -52,15 +47,14 @@ jobs:
- name: Install test dependencies - name: Install test dependencies
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install nghttp2 libpsl5 libpsl-dev python3-impacket apache2 apache2-dev sudo apt-get install nghttp2 libpsl5 libpsl-dev
sudo pip install impacket
- name: Download lib - name: Download lib
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-curl name: wolf-install-curl
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Build curl - name: Build curl
uses: wolfSSL/actions-build-autotools-project@v1 uses: wolfSSL/actions-build-autotools-project@v1
@@ -68,9 +62,9 @@ jobs:
repository: curl/curl repository: curl/curl
path: curl path: curl
ref: ${{ matrix.curl_ref }} ref: ${{ matrix.curl_ref }}
configure: --with-wolfssl=$GITHUB_WORKSPACE/build-dir --with-test-httpd=yes configure: --with-wolfssl=$GITHUB_WORKSPACE/build-dir
check: false check: false
- name: Test curl - name: Test curl
working-directory: curl working-directory: curl
run: make -j $(nproc) test-nonflaky run: make -j test-ci

View File

@@ -1,105 +0,0 @@
name: cyrus-sasl Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
# Don't run tests as this config is tested in many other places
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-sasl
path: build-dir.tgz
retention-days: 5
sasl_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 2.1.28 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install krb5-kdc krb5-otp libkrb5-dev \
libsocket-wrapper libnss-wrapper krb5-admin-server libdb5.3-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-sasl
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout sasl
uses: actions/checkout@v4
with:
repository: cyrusimap/cyrus-sasl
ref: cyrus-sasl-${{ matrix.ref }}
path: sasl
- name: Build cyrus-sasl
working-directory: sasl
run: |
patch -p1 < $GITHUB_WORKSPACE/osp/cyrus-sasl/${{ matrix.ref }}/${{ matrix.ref }}.patch
autoreconf -ivf
./configure --with-openssl=no --with-wolfssl=$GITHUB_WORKSPACE/build-dir --with-dblib=berkeley --disable-shared
# Need to run 'make' twice with '--disable-shared' for some reason
make -j || make -j
- name: Run testsuite
working-directory: sasl
run: |
make -j -C utils testsuite saslpasswd2
# Retry up to five times
for i in {1..5}; do
TEST_RES=0
$GITHUB_WORKSPACE/osp/cyrus-sasl/${{ matrix.ref }}/run-tests.sh || TEST_RES=$?
if [ "$TEST_RES" -eq "0" ]; then
break
fi
done

View File

@@ -1,63 +0,0 @@
name: disable-pk-algs Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-rsa --enable-dh',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ecc',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-rsa --enable-curve25519',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ecc --enable-curve25519',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-rsa --enable-curve448',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ecc --enable-curve448',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-curve25519 --enable-ed25519',
'--disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-curve448 --enable-ed448',
'-enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-rsa',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-dh',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ecc',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-curve25519',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ed25519',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-curve448',
'--enable-cryptonly --disable-rsa --disable-dh --disable-ecc --disable-curve25519 --disable-ed25519 --disable-curve448 --disable-ed448 --enable-ed448',
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL
run: |
./autogen.sh
./configure ${{ matrix.config }}
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -20,7 +20,6 @@ jobs:
# List of refs to test # List of refs to test
ref: [ master ] ref: [ master ]
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Build wolfSSL - name: Build wolfSSL
@@ -58,3 +57,4 @@ jobs:
- name: Test HaProxy - name: Test HaProxy
working-directory: haproxy working-directory: haproxy
run: make reg-tests reg-tests/ssl VTEST_PROGRAM=$GITHUB_WORKSPACE/VTest/vtest run: make reg-tests reg-tests/ssl VTEST_PROGRAM=$GITHUB_WORKSPACE/VTest/vtest

View File

@@ -22,7 +22,6 @@ jobs:
- build_id: hostap-build2 - build_id: hostap-build2
wolf_extra_config: --enable-brainpool --enable-wpas-dpp wolf_extra_config: --enable-brainpool --enable-wpas-dpp
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
@@ -100,7 +99,6 @@ jobs:
build_id: hostap-build2 build_id: hostap-build2
} }
name: hwsim test name: hwsim test
if: github.repository_owner == 'wolfssl'
# For openssl 1.1 # For openssl 1.1
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
@@ -183,7 +181,7 @@ jobs:
- name: Checkout hostap - name: Checkout hostap
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
repository: julek-wolfssl/hostap-mirror repository: julek-wolfssl/hostap-mirror
path: hostap path: hostap
ref: ${{ matrix.config.hostap_ref }} ref: ${{ matrix.config.hostap_ref }}
# necessary for cherry pick step # necessary for cherry pick step
@@ -212,7 +210,7 @@ jobs:
done done
- if: ${{ matrix.hostapd }} - if: ${{ matrix.hostapd }}
name: Setup hostapd config file name: Setup hostapd config file
run: | run: |
cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/hostapd.config \ cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/hostapd.config \
hostap/hostapd/.config hostap/hostapd/.config
@@ -222,7 +220,7 @@ jobs:
EOF EOF
- if: ${{ matrix.wpa_supplicant }} - if: ${{ matrix.wpa_supplicant }}
name: Setup wpa_supplicant config file name: Setup wpa_supplicant config file
run: | run: |
cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/wpa_supplicant.config \ cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/wpa_supplicant.config \
hostap/wpa_supplicant/.config hostap/wpa_supplicant/.config

View File

@@ -14,35 +14,30 @@ concurrency:
jobs: jobs:
espressif_latest: espressif_latest:
name: latest Docker container name: latest Docker container
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 12 timeout-minutes: 12
container: container:
# The latest stable release is v5.5 image: espressif/idf:latest
image: espressif/idf:release-v5.5
# image: espressif/idf:latest # The "latest" has breaking changes for ESP-IDF V6
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Initialize Espressif IDE and build examples - name: Initialize Espressif IDE and build examples
run: cd /opt/esp/idf && . ./export.sh && cd $GITHUB_WORKSPACE; IDE/Espressif/ESP-IDF/compileAllExamples.sh run: . /opt/esp/idf/export.sh; IDE/Espressif/ESP-IDF/compileAllExamples.sh
espressif_v4_4: espressif_v4_4:
name: v4.4 Docker container name: v4.4 Docker container
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
container: container:
image: espressif/idf:release-v4.4 image: espressif/idf:release-v4.4
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Initialize Espressif IDE and build examples - name: Initialize Espressif IDE and build examples
run: cd /opt/esp/idf && . ./export.sh && cd $GITHUB_WORKSPACE; IDE/Espressif/ESP-IDF/compileAllExamples.sh run: . /opt/esp/idf/export.sh; IDE/Espressif/ESP-IDF/compileAllExamples.sh
espressif_v5_0: espressif_v5_0:
name: v5.0 Docker container name: v5.0 Docker container
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
container: container:
image: espressif/idf:release-v5.0 image: espressif/idf:release-v5.0
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Initialize Espressif IDE and build examples - name: Initialize Espressif IDE and build examples
run: cd /opt/esp/idf && . ./export.sh && cd $GITHUB_WORKSPACE; IDE/Espressif/ESP-IDF/compileAllExamples.sh run: . /opt/esp/idf/export.sh; IDE/Espressif/ESP-IDF/compileAllExamples.sh

View File

@@ -17,8 +17,7 @@ concurrency:
jobs: jobs:
build_library: build_library:
name: Compile libwolfssl.so name: Compile libwolfssl.so
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
container: container:
@@ -29,20 +28,15 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile libwolfssl.so - name: Compile libwolfssl.so
run: ./autogen.sh && ./configure --enable-all && make run: ./autogen.sh && ./configure --enable-all && make
# 2024-08-05 - Something broke in the actions. They are no longer following links.
- name: tar libwolfssl.so
working-directory: src/.libs
run: tar -zcf libwolfssl.tgz libwolfssl.so*
- name: Upload libwolfssl.so - name: Upload libwolfssl.so
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: openwrt-libwolfssl.so name: openwrt-libwolfssl.so
path: src/.libs/libwolfssl.tgz path: src/.libs/libwolfssl.so
retention-days: 5 retention-days: 5
compile_container: compile_container:
name: Compile container name: Compile container
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 2 timeout-minutes: 2
needs: build_library needs: build_library
@@ -56,9 +50,7 @@ jobs:
- uses: actions/download-artifact@v4 - uses: actions/download-artifact@v4
with: with:
name: openwrt-libwolfssl.so name: openwrt-libwolfssl.so
path: . path: Docker/OpenWrt/.
- name: untar libwolfssl.so
run: tar -xf libwolfssl.tgz -C Docker/OpenWrt
- name: Build but dont push - name: Build but dont push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:

View File

@@ -1,47 +0,0 @@
name: Fil-C Tests
env:
FIL_C_VERSION: v0.674
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
run_fil_c:
strategy:
fail-fast: false
matrix:
config: [
# Add new configs here. Don't use CPPFLAGS.
'',
'--enable-all',
]
# This should be a safe limit for the tests to run.
timeout-minutes: 30
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
name: ${{ matrix.config }}
steps:
- name: Download fil-c release
run: gh release download ${{ env.FIL_C_VERSION }} --repo pizlonator/fil-c --pattern 'filc-*'
env:
GH_TOKEN: ${{ github.token }}
- name: Extract fil-c tarball
run: mkdir -p filc && tar -xf filc-*.tar* --strip-components=1 -C filc
- name: Build and test wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: ${{ matrix.config }} CC=$GITHUB_WORKSPACE/filc/build/bin/filcc --disable-asm CPPFLAGS=-DWC_NO_CACHE_RESISTANT
check: true

View File

@@ -1,41 +0,0 @@
name: Test gencertbuf script
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
gencertbuf:
name: gencertbuf
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test generate wolfssl/certs_test.h
run: ./gencertbuf.pl
- name: Test wolfSSL
run: |
./autogen.sh
./configure --enable-all --enable-experimental --enable-dilithium --enable-kyber
make
./wolfcrypt/test/testwolfcrypt
- name: Print errors
if: ${{ failure() }}
run: |
if [ -f test-suite.log ] ; then
cat test-suite.log
fi

View File

@@ -15,9 +15,8 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
@@ -28,14 +27,11 @@ jobs:
configure: --enable-all 'CPPFLAGS=-DWOLFSSL_RSA_KEY_CHECK -DHAVE_EX_DATA_CLEANUP_HOOKS' configure: --enable-all 'CPPFLAGS=-DWOLFSSL_RSA_KEY_CHECK -DHAVE_EX_DATA_CLEANUP_HOOKS'
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-grpc name: wolf-install-grpc
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
grpc_check: grpc_check:
@@ -51,8 +47,7 @@ jobs:
test_core_security_ssl_credentials_test test_cpp_end2end_ssl_credentials_test test_core_security_ssl_credentials_test test_cpp_end2end_ssl_credentials_test
h2_ssl_cert_test h2_ssl_session_reuse_test h2_ssl_cert_test h2_ssl_session_reuse_test
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 30 timeout-minutes: 30
needs: build_wolfssl needs: build_wolfssl
@@ -70,14 +65,7 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-grpc name: wolf-install-grpc
path: build-dir
- name: Setup cmake version
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.25.x'
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -99,7 +87,7 @@ jobs:
git submodule update --init git submodule update --init
mkdir cmake/build mkdir cmake/build
cd cmake/build cd cmake/build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.1 -DgRPC_BUILD_TESTS=ON -DgRPC_SSL_PROVIDER=wolfssl \ cmake -DgRPC_BUILD_TESTS=ON -DgRPC_SSL_PROVIDER=wolfssl \
-DWOLFSSL_INSTALL_DIR=$GITHUB_WORKSPACE/build-dir ../.. -DWOLFSSL_INSTALL_DIR=$GITHUB_WORKSPACE/build-dir ../..
make -j $(nproc) ${{ matrix.tests }} make -j $(nproc) ${{ matrix.tests }}

View File

@@ -1,98 +0,0 @@
name: haproxy Test
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-haproxy
install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-haproxy
path: build-dir.tgz
retention-days: 5
test_haproxy:
name: ${{ matrix.haproxy_ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 15
needs: build_wolfssl
strategy:
fail-fast: false
matrix:
haproxy_ref: [ 'v3.1.0', 'v3.2.0']
steps:
- name: Install test dependencies
run: |
sudo apt-get update
sudo apt-get install libpcre2-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-haproxy
- name: untar build-dir
run: tar -xf build-dir.tgz
# check cache for haproxy if not there then download it
- name: Check haproxy cache
uses: actions/cache@v4
id: cache-haproxy
with:
path: build-dir/haproxy-${{matrix.haproxy_ref}}
key: haproxy-${{matrix.haproxy_ref}}
- name: Download haproxy if needed
if: steps.cache-haproxy.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: haproxy/haproxy
ref: ${{matrix.haproxy_ref}}
path: build-dir/haproxy-${{matrix.haproxy_ref}}
- name: Build haproxy
working-directory: build-dir/haproxy-${{matrix.haproxy_ref}}
run: make clean && make TARGET=linux-glibc USE_OPENSSL_WOLFSSL=1 SSL_LIB=$GITHUB_WORKSPACE/build-dir/lib SSL_INC=$GITHUB_WORKSPACE/build-dir/include ADDLIB=-Wl,-rpath,$GITHUB_WORKSPACE/build-dir/lib CFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
# wlallemand/VTest used in v3.1.0 is no longer available
- name: Patch build-vtest.sh for v3.1.0
if: matrix.haproxy_ref == 'v3.1.0'
working-directory: build-dir/haproxy-${{ matrix.haproxy_ref }}/scripts
run: |
sed -i 's|https://github.com/wlallemand/VTest/archive/refs/heads/haproxy-sd_notify.tar.gz|https://github.com/vtest/VTest2/archive/main.tar.gz|' build-vtest.sh
- name: Build haproxy vtest
working-directory: build-dir/haproxy-${{matrix.haproxy_ref}}
run: ./scripts/build-vtest.sh
- name: Test haproxy
working-directory: build-dir/haproxy-${{matrix.haproxy_ref}}
run: VTEST_PROGRAM=$GITHUB_WORKSPACE/build-dir/vtest/vtest make reg-tests -- --debug reg-tests/ssl/*

View File

@@ -15,7 +15,6 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-latest runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
@@ -28,14 +27,11 @@ jobs:
configure: --enable-hitch configure: --enable-hitch
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-hitch name: wolf-install-hitch
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
hitch_check: hitch_check:
@@ -48,7 +44,6 @@ jobs:
ignore-tests: >- ignore-tests: >-
test13-r82.sh test15-proxy-v2-npn.sh test39-client-cert-proxy.sh test13-r82.sh test15-proxy-v2-npn.sh test39-client-cert-proxy.sh
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
@@ -58,9 +53,7 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-hitch name: wolf-install-hitch
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -107,4 +100,4 @@ jobs:
working-directory: ./hitch working-directory: ./hitch
run: | run: |
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/build-dir/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/build-dir/lib:$LD_LIBRARY_PATH
make check make check

View File

@@ -2,14 +2,10 @@ name: hostap and wpa-supplicant Tests
# START OF COMMON SECTION # START OF COMMON SECTION
on: on:
workflow_dispatch: # Allows people to run it manually if they want but push:
# disables it from running automatically when broken branches: [ 'master', 'main', 'release/**' ]
# To restore this to an auto test delete the above workflow_dispatch line and pull_request:
# comments and uncomment the below lines for push and pull_request branches: [ '*' ]
# push:
# branches: [ 'master', 'main', 'release/**' ]
# pull_request:
# branches: [ '*' ]
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -17,7 +13,7 @@ concurrency:
# END OF COMMON SECTION # END OF COMMON SECTION
env: env:
LINUX_REF: v6.12 LINUX_REF: v6.6
jobs: jobs:
build_wolfssl: build_wolfssl:
@@ -28,11 +24,10 @@ jobs:
wolf_extra_config: --disable-tls13 wolf_extra_config: --disable-tls13
- build_id: hostap-vm-build2 - build_id: hostap-vm-build2
wolf_extra_config: >- wolf_extra_config: >-
--enable-wpas-dpp --enable-brainpool --with-eccminsz=192 --enable-wpas-dpp --enable-brainpool --with-eccminsz=192
--enable-tlsv10 --enable-oldtls --enable-tlsv10 --enable-oldtls
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
@@ -57,66 +52,40 @@ jobs:
${{ env.wolf_debug_flags }} ${{ matrix.wolf_extra_config }} ${{ env.wolf_debug_flags }} ${{ matrix.wolf_extra_config }}
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: ${{ matrix.build_id }} name: ${{ matrix.build_id }}
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
checkout_hostap:
name: Checkout hostap repo
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run.
timeout-minutes: 10
steps:
- name: Checking if we have hostap in cache
uses: actions/cache@v4
id: cache
with:
path: hostap
key: hostap-repo
lookup-only: true
- name: Checkout hostap
if: steps.cache.outputs.cache-hit != 'true'
run: git clone https://w1.fi/hostap.git hostap
build_uml_linux: build_uml_linux:
name: Build UML (UserMode Linux) name: Build UML (UserMode Linux)
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
needs: checkout_hostap
steps: steps:
- name: Checking if we have kernel in cache - name: Checking if we have kernel in cache
uses: actions/cache@v4 uses: actions/cache@v4
id: cache id: cache
with: with:
path: linux/linux path: linux/linux
key: hostap-linux-${{ env.LINUX_REF }} key: ${{ env.LINUX_REF }}
lookup-only: true lookup-only: true
- name: Checking if we have hostap in cache - name: Checkout hostap
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache/restore@v4 uses: actions/checkout@v4
with: with:
repository: julek-wolfssl/hostap-mirror
path: hostap path: hostap
key: hostap-repo
fail-on-cache-miss: true
- name: Checkout linux - name: Checkout linux
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
repository: torvalds/linux repository: torvalds/linux
path: linux path: linux
ref: ${{ env.LINUX_REF }}
- name: Compile linux - name: Compile linux
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
@@ -167,20 +136,23 @@ jobs:
build_id: hostap-vm-build2 build_id: hostap-vm-build2
} }
name: hwsim test name: hwsim test
if: github.repository_owner == 'wolfssl' # For openssl 1.1
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 45 timeout-minutes: 45
needs: [build_wolfssl, build_uml_linux, checkout_hostap] needs: [build_wolfssl, build_uml_linux]
steps: steps:
- name: Checking if we have kernel in cache - name: Checking if we have kernel in cache
uses: actions/cache/restore@v4 uses: actions/cache/restore@v4
id: cache id: cache
with: with:
path: linux/linux path: linux/linux
key: hostap-linux-${{ env.LINUX_REF }} key: ${{ env.LINUX_REF }}
fail-on-cache-miss: true fail-on-cache-miss: true
- name: show file structure
run: tree
# No way to view the full strategy in the browser (really weird) # No way to view the full strategy in the browser (really weird)
- name: Print strategy - name: Print strategy
run: | run: |
@@ -206,9 +178,7 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: ${{ matrix.config.build_id }} name: ${{ matrix.config.build_id }}
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -218,29 +188,19 @@ jobs:
# hostap dependencies # hostap dependencies
sudo apt-get install -y libpcap0.8 libpcap-dev curl libcurl4-openssl-dev \ sudo apt-get install -y libpcap0.8 libpcap-dev curl libcurl4-openssl-dev \
libnl-3-dev binutils-dev libssl-dev libiberty-dev libnl-genl-3-dev \ libnl-3-dev binutils-dev libssl-dev libiberty-dev libnl-genl-3-dev \
libnl-route-3-dev libdbus-1-dev bridge-utils tshark python3-pycryptodome libnl-route-3-dev libdbus-1-dev bridge-utils tshark
sudo pip install pycryptodome sudo pip3 install pycryptodome
- name: Checking if we have hostap in cache - name: Checkout hostap
uses: actions/cache/restore@v4 uses: actions/checkout@v4
with: with:
repository: julek-wolfssl/hostap-mirror
path: hostap path: hostap
key: hostap-repo ref: ${{ matrix.config.hostap_ref }}
fail-on-cache-miss: true
- name: Checkout correct ref
working-directory: hostap
run: git checkout ${{ matrix.config.hostap_ref }}
- name: Update certs - name: Update certs
working-directory: hostap/tests/hwsim/auth_serv working-directory: hostap/tests/hwsim/auth_serv
run: | run: ./update.sh
./update.sh
./sha512-generate.sh
# Force regeneration of rsa3072-ca.key to get rsa3072-generate.sh to
# correctly update all the certs
rm rsa3072-ca.key
./rsa3072-generate.sh
- if: ${{ matrix.config.osp_ref }} - if: ${{ matrix.config.osp_ref }}
name: Checkout OSP name: Checkout OSP
@@ -268,7 +228,7 @@ jobs:
fi fi
- if: ${{ matrix.hostapd }} - if: ${{ matrix.hostapd }}
name: Setup hostapd config file name: Setup hostapd config file
run: | run: |
cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/hostapd.config \ cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/hostapd.config \
hostap/hostapd/.config hostap/hostapd/.config
@@ -278,7 +238,7 @@ jobs:
EOF EOF
- if: ${{ matrix.wpa_supplicant }} - if: ${{ matrix.wpa_supplicant }}
name: Setup wpa_supplicant config file name: Setup wpa_supplicant config file
run: | run: |
cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/wpa_supplicant.config \ cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/wpa_supplicant.config \
hostap/wpa_supplicant/.config hostap/wpa_supplicant/.config
@@ -321,7 +281,6 @@ jobs:
KERNELDIR=$GITHUB_WORKSPACE/linux KERNELDIR=$GITHUB_WORKSPACE/linux
KVMARGS="-cpu host" KVMARGS="-cpu host"
EOF EOF
git config --global --add safe.directory $GITHUB_WORKSPACE/hostap
# Run tests in increments of 200 to not stall out the parallel-vm script # Run tests in increments of 200 to not stall out the parallel-vm script
while mapfile -t -n 200 ary && ((${#ary[@]})); do while mapfile -t -n 200 ary && ((${#ary[@]})); do
TESTS=$(printf '%s\n' "${ary[@]}" | tr '\n' ' ') TESTS=$(printf '%s\n' "${ary[@]}" | tr '\n' ' ')
@@ -336,10 +295,6 @@ jobs:
rm -r /tmp/hwsim-test-logs rm -r /tmp/hwsim-test-logs
done < $GITHUB_WORKSPACE/wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/tests done < $GITHUB_WORKSPACE/wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/tests
- name: show errors
if: ${{ failure() && steps.testing.outcome == 'failure' }}
run: grep -riP 'fail|error' /tmp/hwsim-test-logs/latest
# The logs are quite big. It hasn't been useful so far so let's not waste # The logs are quite big. It hasn't been useful so far so let's not waste
# precious gh space. # precious gh space.
#- name: zip logs #- name: zip logs

View File

@@ -1,52 +0,0 @@
name: Dynamic C Fallback Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy CPPFLAGS="-DNO_WOLFSSL_CIPHER_SUITE_TEST -DWC_C_DYNAMIC_FALLBACK -DDEBUG_VECTOR_REGISTER_ACCESS -DDEBUG_VECTOR_REGISTER_ACCESS_FUZZING -DWC_DEBUG_CIPHER_LIFECYCLE"'
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL with WC_C_DYNAMIC_FALLBACK and DEBUG_VECTOR_REGISTER_ACCESS_FUZZING
run: |
./autogen.sh
randseed=$(head -c 4 /dev/urandom | od -t u4 --address-radix=n)
randseed="${randseed#"${randseed%%[![:space:]]*}"}"
echo "fuzzing seed=${randseed}"
./configure ${{ matrix.config }} CFLAGS="-DWC_DEBUG_VECTOR_REGISTERS_FUZZING_SEED=$randseed -fsanitize=leak -g -fno-omit-frame-pointer"
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -1,85 +0,0 @@
name: ipmitool Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
# Don't run tests as this config is tested in many other places
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-ipmitool
path: build-dir.tgz
retention-days: 5
build_ipmitool:
strategy:
fail-fast: false
matrix:
git_ref: [ c3939dac2c060651361fc71516806f9ab8c38901 ]
name: ${{ matrix.git_ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Install dependencies
run: export DEBIAN_FRONTEND=noninteractive && sudo apt-get update && sudo apt-get install -y libreadline-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-ipmitool
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Build ipmitool
uses: wolfSSL/actions-build-autotools-project@v1
with:
repository: ipmitool/ipmitool
ref: ${{ matrix.git_ref }}
path: ipmitool
patch-file: $GITHUB_WORKSPACE/osp/ipmitool/*-${{ matrix.git_ref }}.patch
configure: --with-wolfssl=$GITHUB_WORKSPACE/build-dir
# No checks included and not running since it depends on hardware
check: false
- name: Confirm built with wolfSSL
working-directory: ipmitool
run: |
ldd src/ipmitool | grep wolfssl
ldd src/ipmievd | grep wolfssl

View File

@@ -1,101 +0,0 @@
name: jwt-cpp Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
# Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
# Don't run tests as this config is tested in many other places
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-jwt-cpp
path: build-dir.tgz
retention-days: 5
build_pam-ipmi:
if: github.repository_owner == 'wolfssl'
strategy:
fail-fast: false
matrix:
config:
- ref: 0.7.0
runner: ubuntu-24.04
- ref: 0.6.0
runner: ubuntu-24.04
name: ${{ matrix.config.ref }}
runs-on: ${{ matrix.config.runner }}
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install libgtest-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-jwt-cpp
- name: Setup cmake version
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.25.x'
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout jwt-cpp
uses: actions/checkout@v4
with:
repository: Thalhammer/jwt-cpp
path: jwt-cpp
ref: v${{ matrix.config.ref }}
- name: Build pam-ipmi
working-directory: jwt-cpp
run: |
patch -p1 < ../osp/jwt-cpp/${{ matrix.config.ref }}.patch
PKG_CONFIG_PATH=$GITHUB_WORKSPACE/build-dir/lib/pkgconfig \
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -B build -DJWT_SSL_LIBRARY:STRING=wolfSSL -DJWT_BUILD_TESTS=ON .
make -j -C build
ldd ./build/tests/jwt-cpp-test | grep wolfssl
- name: Run jwt-cpp tests
working-directory: jwt-cpp
run: ./build/tests/jwt-cpp-test

View File

@@ -16,8 +16,7 @@ jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 5 timeout-minutes: 5
steps: steps:
@@ -32,14 +31,11 @@ jobs:
configure: --enable-krb CC='gcc -fsanitize=address' configure: --enable-krb CC='gcc -fsanitize=address'
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-krb5 name: wolf-install-krb5
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
krb5_check: krb5_check:
@@ -49,8 +45,7 @@ jobs:
# List of releases to test # List of releases to test
ref: [ 1.21.1 ] ref: [ 1.21.1 ]
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 8 timeout-minutes: 8
needs: build_wolfssl needs: build_wolfssl
@@ -59,9 +54,7 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-krb5 name: wolf-install-krb5
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -92,7 +85,7 @@ jobs:
# Using rpath because LD_LIBRARY_PATH is overwritten during testing # Using rpath because LD_LIBRARY_PATH is overwritten during testing
export WOLFSSL_CFLAGS="-I$GITHUB_WORKSPACE/build-dir/include -I$GITHUB_WORKSPACE/build-dir/include/wolfssl -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib" export WOLFSSL_CFLAGS="-I$GITHUB_WORKSPACE/build-dir/include -I$GITHUB_WORKSPACE/build-dir/include/wolfssl -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib"
export WOLFSSL_LIBS="-lwolfssl -L$GITHUB_WORKSPACE/build-dir/lib -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib" export WOLFSSL_LIBS="-lwolfssl -L$GITHUB_WORKSPACE/build-dir/lib -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib"
./configure --with-crypto-impl=wolfssl --with-tls-impl=wolfssl --disable-pkinit --with-spake-openssl \ ./configure --with-crypto-impl=wolfssl --with-tls-impl=wolfssl --disable-pkinit \
CFLAGS='-fsanitize=address' LDFLAGS='-fsanitize=address' CFLAGS='-fsanitize=address' LDFLAGS='-fsanitize=address'
CFLAGS='-fsanitize=address' LDFLAGS='-fsanitize=address' make -j CFLAGS='-fsanitize=address' LDFLAGS='-fsanitize=address' make -j

View File

@@ -1,91 +0,0 @@
name: libspdm Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all --enable-static CFLAGS='-DRSA_MIN_SIZE=512'
install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-libspdm
path: build-dir.tgz
retention-days: 5
libspdm_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 3.7.0 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-libspdm
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout libspdm
uses: actions/checkout@v4
with:
repository: DMTF/libspdm
path: libspdm
ref: ${{ matrix.ref }}
- name: Build and test libspdm
working-directory: libspdm
run: |
patch -p1 < ../osp/libspdm/${{ matrix.ref }}/libspdm-${{ matrix.ref }}.patch
git submodule update --init --recursive
# Silence cmake version warnings
find -name CMakeLists.txt -exec sed -i 's/cmake_minimum_required.*/cmake_minimum_required(VERSION 3.10)/g' {} \;
mkdir build
cd build
cmake -DARCH=x64 -DTOOLCHAIN=GCC -DTARGET=Debug -DCRYPTO=wolfssl -DENABLE_BINARY_BUILD=1 \
-DCOMPILED_LIBWOLFSSL_PATH=$GITHUB_WORKSPACE/build-dir/lib/libwolfssl.a \
-DWOLFSSL_INCDIR=$GITHUB_WORKSPACE/build-dir/include ..
make -j
cd ../unit_test/sample_key
../../build/bin/test_crypt
../../build/bin/test_spdm_secured_message
../../build/bin/test_spdm_crypt

View File

@@ -16,8 +16,7 @@ jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -29,14 +28,11 @@ jobs:
check: false # config is already tested in many other PRB's check: false # config is already tested in many other PRB's
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-libssh2 name: wolf-install-libssh2
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
libssh2_check: libssh2_check:
@@ -44,10 +40,9 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
# List of releases to test # List of releases to test
ref: [ 1.11.1 ] ref: [ 1.11.0 ]
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 8 timeout-minutes: 8
needs: build_wolfssl needs: build_wolfssl
@@ -56,35 +51,17 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-libssh2 name: wolf-install-libssh2
path: build-dir
- name: untar build-dir - name: Build and test libssh2
run: tar -xf build-dir.tgz uses: wolfSSL/actions-build-autotools-project@v1
- name: Clone libssh2
uses: actions/checkout@v4
with: with:
repository: libssh2/libssh2 repository: libssh2/libssh2
ref: libssh2-${{ matrix.ref }} ref: libssh2-${{ matrix.ref }}
path: libssh2 path: libssh2
configure: --with-crypto=wolfssl --with-libwolfssl-prefix=$GITHUB_WORKSPACE/build-dir
- name: Build libssh2 check: true
working-directory: libssh2
run: |
autoreconf -fi
./configure --with-crypto=wolfssl --with-libwolfssl-prefix=$GITHUB_WORKSPACE/build-dir
- name: Update libssh2 test to use a stable version of debian
working-directory: libssh2
run: |
sed -i 's/testing-slim/oldstable-slim/' tests/openssh_server/Dockerfile
- name: Run libssh2 tests
working-directory: libssh2
run: make -j check
- name: Confirm libssh2 built with wolfSSL - name: Confirm libssh2 built with wolfSSL
run: ldd libssh2/src/.libs/libssh2.so | grep wolfssl working-directory: ./libssh2
run: ldd src/.libs/libssh2.so | grep wolfssl
- name: print server logs
if: ${{ failure() }}
run: tail -n +1 libssh2/tests/*.log

View File

@@ -1,91 +0,0 @@
name: libvncserver Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
# Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
# Don't run tests as this config is tested in many other places
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-libvncserver
path: build-dir.tgz
retention-days: 5
build_libvncserver:
strategy:
fail-fast: false
matrix:
ref: [ 0.9.13, 0.9.14 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-libvncserver
- name: Setup cmake version
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.25.x'
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout libvncserver
uses: actions/checkout@v4
with:
repository: LibVNC/libvncserver
path: libvncserver
ref: LibVNCServer-${{ matrix.ref }}
- name: Build libvncserver
working-directory: libvncserver
run: |
patch -p1 < ../osp/libvncserver/${{ matrix.ref }}.patch
PKG_CONFIG_PATH=$GITHUB_WORKSPACE/build-dir/lib/pkgconfig \
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -B build -DWITH_GNUTLS=OFF -DWITH_OPENSSL=OFF -DWITH_GCRYPT=OFF -DWITH_WOLFSSL=ON .
make -j -C build VERBOSE=1
ldd build/libvncclient.so | grep wolfssl
ldd build/libvncserver.so | grep wolfssl
- name: Run libvncserver tests
working-directory: libvncserver
run: make -C build test

View File

@@ -1,54 +0,0 @@
name: Kernel Module Build
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_library:
strategy:
matrix:
config: [
'EXTRA_CPPFLAGS=-Werror --enable-option-checking=fatal --enable-linuxkm --enable-linuxkm-lkcapi-register=all --enable-all --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium --enable-experimental --enable-dual-alg-certs --disable-qt --disable-quic --with-sys-crypto-policy=no --disable-opensslextra --disable-testcert --enable-intelasm --disable-sp-asm --enable-crypttests --enable-linuxkm-benchmarks CFLAGS="-DWOLFSSL_LINUXKM_VERBOSE_DEBUG -Wframe-larger-than=2048 -Wstack-usage=4096 -DBENCH_EMBEDDED -DBENCH_MIN_RUNTIME_SEC=0.01 -DBENCH_NTIMES=1 -DBENCH_AGREETIMES=1" --with-max-rsa-bits=16384',
'EXTRA_CPPFLAGS=-Werror --enable-option-checking=fatal --enable-linuxkm --enable-linuxkm-pie --enable-reproducible-build --enable-linuxkm-lkcapi-register=all --enable-all-crypto --enable-cryptonly --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium --enable-experimental --disable-qt --disable-quic --with-sys-crypto-policy=no --disable-opensslextra --disable-testcert --enable-intelasm --disable-sp-asm --enable-crypttests --enable-linuxkm-benchmarks CFLAGS="-DWOLFSSL_LINUXKM_VERBOSE_DEBUG -Wframe-larger-than=2048 -Wstack-usage=4096 -DBENCH_EMBEDDED -DBENCH_MIN_RUNTIME_SEC=0.01 -DBENCH_NTIMES=1 -DBENCH_AGREETIMES=1" --with-max-rsa-bits=16384'
]
name: build module
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Prepare target kernel for module builds
run: |
echo "updating linux-headers"
sudo apt-get update || $(exit 2)
sudo apt-get install linux-headers-$(uname -r) -y || $(exit 3)
echo "preparing target kernel $(uname -r)"
pushd "/lib/modules/$(uname -r)/build" || $(exit 4)
if [ -f /proc/config.gz ]; then gzip -dc /proc/config.gz > /tmp/.config && sudo mv /tmp/.config . || $(exit 5); elif [ -f "/boot/config-$(uname -r)" ]; then sudo cp -p "/boot/config-$(uname -r)" .config || $(exit 6); fi
sudo make -j 4 olddefconfig || $(exit 7)
sudo make M="$(pwd)" modules_prepare || $(exit 8)
popd >/dev/null
- name: autogen.sh
run: |
./autogen.sh || $(exit 9)
- name: Build libwolfssl.ko, targeting GitHub ubuntu-latest, with --enable-all, PQC, and smallstack and stack depth warnings
run: |
echo "running ./configure --with-linux-source=/lib/modules/$(uname -r)/build ${{ matrix.config }}"
./configure --with-linux-source=/lib/modules/$(uname -r)/build ${{ matrix.config }} || $(exit 10)
# try to remove profiling (-pg) because it leads to "_mcleanup: gmon.out: Permission denied"
make -j 4 KERNEL_EXTRA_CFLAGS_REMOVE=-pg FORCE_NO_MODULE_SIG=1 || $(exit 11)
ls -l linuxkm/libwolfssl.ko || $(exit 12)
echo "Successful linuxkm build."

View File

@@ -1,26 +0,0 @@
name: MacOS apple native cert validation tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
if: github.repository_owner == 'wolfssl'
runs-on: macos-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 5
steps:
- name: Build and configure wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
configure: CFLAGS='-DWOLFSSL_APPLE_NATIVE_CERT_VALIDATION -DWOLFSSL_TEST_APPLE_NATIVE_CERT_VALIDATION -DRSA_MIN_SIZE=2048 -DNO_WOLFSSL_CIPHER_SUITE_TEST'

View File

@@ -1,79 +0,0 @@
#!/usr/bin/env bash
set -e
set -x
# Basic TLS test
./mbedtls/build/programs/ssl/ssl_server2 > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
./mbedtls/build/programs/ssl/ssl_client2 # Confirm working with mbed
env -C wolfssl ./examples/client/client -p 4433 -g \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
kill $SERVER_PID
sleep 0.1
env -C wolfssl ./examples/server/server -p 4433 -i -g \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/server2-sha256.crt \
-k ../mbedtls/framework/data_files/server2.key.pem > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
./mbedtls/build/programs/ssl/ssl_client2
env -C wolfssl ./examples/client/client -p 4433 -g \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
kill $SERVER_PID
sleep 0.1
# Basic DTLS test
./mbedtls/build/programs/ssl/ssl_server2 dtls=1 > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
./mbedtls/build/programs/ssl/ssl_client2 dtls=1 # Confirm working with mbed
env -C wolfssl ./examples/client/client -p 4433 -g -u \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
kill $SERVER_PID
sleep 0.1
env -C wolfssl ./examples/server/server -p 4433 -i -g -u \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/server2-sha256.crt \
-k ../mbedtls/framework/data_files/server2.key.pem > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
env -C wolfssl ./examples/client/client -p 4433 -g -u \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
./mbedtls/build/programs/ssl/ssl_client2 dtls=1
kill $SERVER_PID
sleep 0.1
# DTLS 1.2 CID test
./mbedtls/build/programs/ssl/ssl_server2 dtls=1 cid=1 cid_val=121212 > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
./mbedtls/build/programs/ssl/ssl_client2 dtls=1 cid=1 cid_val=232323 # Confirm working with mbed
env -C wolfssl ./examples/client/client -p 4433 -g -u --cid 232323 \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
kill $SERVER_PID
sleep 0.1
env -C wolfssl ./examples/server/server -p 4433 -i -g -u --cid 121212 \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/server2-sha256.crt \
-k ../mbedtls/framework/data_files/server2.key.pem > /tmp/server.log 2>&1 &
SERVER_PID=$!
sleep 0.1
./mbedtls/build/programs/ssl/ssl_client2 dtls=1 cid_val=232323
env -C wolfssl ./examples/client/client -p 4433 -g -u --cid 232323 \
-A ../mbedtls/framework/data_files/test-ca-sha256.crt \
-c ../mbedtls/framework/data_files/cli-rsa-sha256.crt \
-k ../mbedtls/framework/data_files/cli-rsa-sha256.key.pem
kill $SERVER_PID
sleep 0.1

View File

@@ -1,86 +0,0 @@
name: mbedtls interop Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
env:
MBED_REF: v3.6.2
jobs:
build_mbedtls:
name: Build mbedtls
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 10
steps:
- name: Checking if we have mbed in cache
uses: actions/cache@v4
id: cache
with:
path: mbedtls
key: mbedtls-${{ env.MBED_REF }}
lookup-only: true
- name: Checkout mbedtls
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: Mbed-TLS/mbedtls
ref: ${{ env.MBED_REF }}
path: mbedtls
- name: Compile mbedtls
if: steps.cache.outputs.cache-hit != 'true'
working-directory: mbedtls
run: |
git submodule update --init
mkdir build
cd build
cmake ..
make -j
# convert key to pem format
openssl pkey -in framework/data_files/cli-rsa-sha256.key.der -text > framework/data_files/cli-rsa-sha256.key.pem
openssl pkey -in framework/data_files/server2.key.der -text > framework/data_files/server2.key.pem
mbedtls_test:
name: Test interop with mbedtls
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
needs: build_mbedtls
timeout-minutes: 10
steps:
- name: Disable IPv6 (IMPORTANT, OTHERWISE DTLS MBEDTLS CLIENT WON'T CONNECT)
run: echo 1 | sudo tee /proc/sys/net/ipv6/conf/lo/disable_ipv6
- name: Checking if we have mbed in cache
uses: actions/cache/restore@v4
id: cache
with:
path: mbedtls
key: mbedtls-${{ env.MBED_REF }}
fail-on-cache-miss: true
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-dtls --enable-dtlscid
install: false
check: false
- name: Test interop
run: bash wolfssl/.github/workflows/mbedtls.sh
- name: print server logs
if: ${{ failure() }}
run: cat /tmp/server.log

View File

@@ -16,8 +16,7 @@ jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps: steps:
- name: Build wolfSSL - name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1 uses: wolfSSL/actions-build-autotools-project@v1
@@ -29,14 +28,11 @@ jobs:
- name: Bundle Docker entry point - name: Bundle Docker entry point
run: cp wolfssl/.github/workflows/memcached.sh build-dir/bin run: cp wolfssl/.github/workflows/memcached.sh build-dir/bin
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-memcached name: wolf-install-memcached
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
memcached_check: memcached_check:
@@ -47,17 +43,14 @@ jobs:
include: include:
- ref: 1.6.22 - ref: 1.6.22
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
needs: build_wolfssl needs: build_wolfssl
steps: steps:
- name: Download lib - name: Download lib
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-memcached name: wolf-install-memcached
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4

View File

@@ -1,142 +0,0 @@
name: Linux Mono C# Build Test
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL C# Wrapper
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
# Build wolfSSL using the user_settings.h from the C# wrapper directory
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-usersettings CPPFLAGS=-I$GITHUB_WORKSPACE/wolfssl/wrapper/CSharp
install: true
check: false
- name: Install mono-complete
run: |
sudo apt-get update
sudo apt-get install -y mono-complete
- name: Copy wolfSSL.dll to C# wrapper directory
run: |
echo "Copying wolfSSL.dll to C# wrapper directory. $GITHUB_WORKSPACE/build-dir/lib contains:"
ls -la $GITHUB_WORKSPACE/build-dir/lib/*
cp $GITHUB_WORKSPACE/build-dir/lib/libwolfssl.so $GITHUB_WORKSPACE/wolfssl/wrapper/CSharp/wolfssl.dll
cp $GITHUB_WORKSPACE/build-dir/lib/libwolfssl.so $GITHUB_WORKSPACE/wolfssl/wrapper/CSharp/libwolfssl.so
- name: Build and run wolfCrypt test wrapper
working-directory: wolfssl/wrapper/CSharp
run: |
mcs wolfCrypt-Test/wolfCrypt-Test.cs wolfSSL_CSharp/wolfCrypt.cs wolfSSL_CSharp/wolfSSL.cs wolfSSL_CSharp/X509.cs -OUT:wolfcrypttest.exe
mono wolfcrypttest.exe
- name: Build wolfSSL client/server test
working-directory: wolfssl/wrapper/CSharp
env:
LD_LIBRARY_PATH: $GITHUB_WORKSPACE/build-dir/lib
run: |
mcs wolfSSL_CSharp/wolfSSL.cs wolfSSL_CSharp/X509.cs wolfSSL-TLS-Server/wolfSSL-TLS-Server.cs -OUT:server.exe
mcs wolfSSL_CSharp/wolfCrypt.cs wolfSSL-TLS-Client/wolfSSL-TLS-Client.cs wolfSSL_CSharp/wolfSSL.cs wolfSSL_CSharp/X509.cs -OUT:client.exe
- name: Test wolfSSL client/server communication
working-directory: wolfssl/wrapper/CSharp
env:
LD_LIBRARY_PATH: $GITHUB_WORKSPACE/build-dir/lib
run: |
# Start server in background and capture its PID
timeout 10s mono server.exe > server.log 2>&1 &
SERVER_PID=$!
# Wait for server to start
sleep 2
# Run client and capture output
timeout 5s mono client.exe > client.log 2>&1
CLIENT_EXIT_CODE=$?
# Wait a moment for server to process
sleep 1
# Kill server
kill $SERVER_PID 2>/dev/null || true
# Check if client completed successfully (exit code 0)
if [ $CLIENT_EXIT_CODE -eq 0 ]; then
echo "Client completed successfully"
else
echo "Client failed with exit code $CLIENT_EXIT_CODE"
cat client.log
exit 1
fi
# Check for success indicators in logs
if grep -q "SSL version is" client.log && grep -q "SSL cipher suite is" client.log; then
echo "TLS handshake successful - SSL version and cipher suite detected"
else
echo "TLS handshake failed - no SSL version/cipher detected"
echo "Client log:"
cat client.log
echo "Server log:"
cat server.log
exit 1
fi
- name: Test SNI functionality
working-directory: wolfssl/wrapper/CSharp
env:
LD_LIBRARY_PATH: $GITHUB_WORKSPACE/build-dir/lib
run: |
# Start server with SNI support in background
timeout 10s mono server.exe -S > server_sni.log 2>&1 &
SERVER_PID=$!
# Wait for server to start
sleep 2
# Run client with SNI and capture output
timeout 5s mono client.exe -S localhost > client_sni.log 2>&1
CLIENT_EXIT_CODE=$?
# Wait a moment for server to process
sleep 1
# Kill server
kill $SERVER_PID 2>/dev/null || true
# Check if client completed successfully
if [ $CLIENT_EXIT_CODE -eq 0 ]; then
echo "SNI client completed successfully"
else
echo "SNI client failed with exit code $CLIENT_EXIT_CODE"
cat client_sni.log
exit 1
fi
# Check for SNI success indicators
if grep -q "SSL version is" client_sni.log && grep -q "SSL cipher suite is" client_sni.log; then
echo "SNI TLS handshake successful"
else
echo "SNI TLS handshake failed"
echo "Client log:"
cat client_sni.log
echo "Server log:"
cat server_sni.log
exit 1
fi

View File

@@ -1,105 +0,0 @@
name: mosquitto Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
# Just to keep it the same as the testing target
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-mosquitto CFLAGS="-DALLOW_INVALID_CERTSIGN"
install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-mosquitto
path: build-dir.tgz
retention-days: 5
mosquitto_check:
strategy:
fail-fast: false
matrix:
ref: [ 2.0.18 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-mosquitto
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential libev-dev libssl-dev automake python3-docutils libcunit1 libcunit1-doc libcunit1-dev pkg-config make python3-psutil
- name: Checkout mosquitto
uses: actions/checkout@v4
with:
repository: eclipse/mosquitto
ref: v${{ matrix.ref }}
path: mosquitto
- name: Update certs
run: |
cd $GITHUB_WORKSPACE/mosquitto/test/ssl
./gen.sh
cat all-ca.crt >> server.crt
- name: Configure and build mosquitto
run: |
cd $GITHUB_WORKSPACE/mosquitto/
patch -p1 < $GITHUB_WORKSPACE/osp/mosquitto/${{ matrix.ref }}.patch
make WITH_TLS=wolfssl WITH_CJSON=no WITH_DOCS=no WOLFSSLDIR=$GITHUB_WORKSPACE/build-dir
- name: Run mosquitto tests
working-directory: ./mosquitto
run: |
# Retry up to five times
for i in {1..5}; do
TEST_RES=0
make WITH_TLS=wolfssl WITH_CJSON=no WITH_DOCS=no WOLFSSLDIR=$GITHUB_WORKSPACE/build-dir ptest || TEST_RES=$?
if [ "$TEST_RES" -eq "0" ]; then
break
fi
done
if [ "$TEST_RES" -ne "0" ]; then
exit $TEST_RES
fi

View File

@@ -1,37 +0,0 @@
name: MSYS2 Build Test
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
msys2:
if: github.repository_owner == 'wolfssl'
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- uses: msys2/setup-msys2@v2
with:
msystem: msys
update: true
install: git gcc autotools base-devel autoconf netcat
- name: configure wolfSSL
run: ./autogen.sh && ./configure --disable-sys-ca-certs CFLAGS="-DUSE_CERT_BUFFERS_2048 -DUSE_CERT_BUFFERS_256 -DNO_WRITE_TEMP_FILES"
- name: build wolfSSL
run: make
- name: run tests
run: make check
- name: Display log
if: always()
run: cat test-suite.log

View File

@@ -30,16 +30,13 @@ jobs:
- HOST: riscv64-linux-gnu - HOST: riscv64-linux-gnu
CC: riscv64-linux-gnu-gcc CC: riscv64-linux-gnu-gcc
ARCH: riscv64 ARCH: riscv64
EXTRA_OPTS: --enable-riscv-asm
# Config to ensure CPUs without Thumb instructions compiles # Config to ensure CPUs without Thumb instructions compiles
- HOST: arm-linux-gnueabi - HOST: arm-linux-gnueabi
CC: arm-linux-gnueabi-gcc CC: arm-linux-gnueabi-gcc
CFLAGS: -marm -DWOLFSSL_SP_ARM_ARCH=6 CFLAGS: -marm -DWOLFSSL_SP_ARM_ARCH=6
ARCH: armel ARCH: armel
EXTRA_OPTS: --enable-sp-asm EXTRA_OPTS: --enable-sp-asm
opts: [ '-O2', '-O3', '-O1 -UFP_ECC', '-O0', '-Os', '-Ofast' ] runs-on: ubuntu-latest
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
@@ -48,13 +45,13 @@ jobs:
sudo apt update sudo apt update
sudo apt install -y crossbuild-essential-${{ matrix.ARCH }} qemu-user sudo apt install -y crossbuild-essential-${{ matrix.ARCH }} qemu-user
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Build for ${{ matrix.ARCH }} with Opt Level ${{ matrix.opts }} - name: Build
env: env:
CC: ${{ matrix.CC }} CC: ${{ matrix.CC }}
CFLAGS: ${{ matrix.CFLAGS }} ${{ matrix.opts }} CFLAGS: ${{ matrix.CFLAGS }}
QEMU_LD_PREFIX: /usr/${{ matrix.HOST }} QEMU_LD_PREFIX: /usr/${{ matrix.HOST }}
run: ./autogen.sh && ./configure --host=${{ matrix.HOST }} --enable-all --disable-examples CPPFLAGS="-pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFCRYPT_TEST_LINT" ${{ matrix.EXTRA_OPTS }} && make run: ./autogen.sh && ./configure --host=${{ matrix.HOST }} --enable-all --disable-examples ${{ matrix.EXTRA_OPTS }} && make
- name: Print errors - name: Print errors
if: ${{ failure() }} if: ${{ failure() }}
run: | run: |
if [ -f config.log ] ; then if [ -f config.log ] ; then

View File

@@ -21,35 +21,41 @@ jobs:
include: include:
- CC: gcc-9 - CC: gcc-9
CXX: g++-9 CXX: g++-9
OS: ubuntu-24.04 OS: ubuntu-latest
- CC: gcc-10 - CC: gcc-10
CXX: g++-10 CXX: g++-10
OS: ubuntu-24.04 OS: ubuntu-latest
- CC: gcc-11 - CC: gcc-11
CXX: g++-11 CXX: g++-11
OS: ubuntu-24.04 OS: ubuntu-latest
- CC: gcc-12 - CC: gcc-12
CXX: g++-12 CXX: g++-12
OS: ubuntu-24.04 OS: ubuntu-latest
- CC: clang-10
CXX: clang++-10
OS: ubuntu-20.04
- CC: clang-11
CXX: clang++-11
OS: ubuntu-20.04
- CC: clang-12
CXX: clang++-12
OS: ubuntu-20.04
- CC: clang-13
CXX: clang++-13
OS: ubuntu-latest
- CC: clang-14 - CC: clang-14
CXX: clang++-14 CXX: clang++-14
OS: ubuntu-24.04 OS: ubuntu-latest
- CC: clang-19
CXX: clang++-19
OS: ubuntu-24.04
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.OS }} runs-on: ${{ matrix.OS }}
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
- name: Install dependencies
run: export DEBIAN_FRONTEND=noninteractive && sudo apt-get update && sudo apt-get install -y ${{ matrix.CC }}
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Build - name: Build
env: env:
CC: ${{ matrix.CC }} CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }} CXX: ${{ matrix.CXX }}
run: ./autogen.sh && ./configure CFLAGS="-pedantic -Wdeclaration-after-statement" && make && make dist run: ./autogen.sh && ./configure && make && make dist
- name: Show log on errors - name: Show log on errors
if: ${{ failure() }} if: ${{ failure() }}
run: | run: |

View File

@@ -1,84 +0,0 @@
name: net-snmp Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-net-snmp
install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-net-snmp
path: build-dir.tgz
retention-days: 5
net-snmp_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
include:
- ref: 5.9.3
test_opts: -e 'agentxperl'
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-net-snmp
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Build net-snmp
uses: wolfSSL/actions-build-autotools-project@v1
with:
repository: net-snmp/net-snmp
ref: v${{ matrix.ref }}
path: net-snmp
patch-file: $GITHUB_WORKSPACE/osp/net-snmp/${{ matrix.ref }}.patch
configure: --disable-shared --with-wolfssl=$GITHUB_WORKSPACE/build-dir
check: false
- name: Run net-snmp tests
working-directory: net-snmp
run: |
autoconf --version | grep -P '2\.\d\d' -o > dist/autoconf-version
make -j test TESTOPTS="${{ matrix.test_opts }}"

View File

@@ -15,9 +15,8 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -34,14 +33,11 @@ jobs:
configure: --enable-nginx ${{ env.wolf_debug_flags }} configure: --enable-nginx ${{ env.wolf_debug_flags }}
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-nginx name: wolf-install-nginx
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
nginx_check: nginx_check:
@@ -97,7 +93,7 @@ jobs:
stream_ssl_preread.t stream_ssl_realip.t stream_ssl_session_reuse.t stream_ssl.t stream_ssl_preread.t stream_ssl_realip.t stream_ssl_session_reuse.t stream_ssl.t
stream_ssl_variables.t stream_ssl_verify_client.t stream_upstream_zone_ssl.t stream_ssl_variables.t stream_ssl_verify_client.t stream_upstream_zone_ssl.t
upstream_zone_ssl.t uwsgi_ssl_certificate.t uwsgi_ssl_certificate_vars.t upstream_zone_ssl.t uwsgi_ssl_certificate.t uwsgi_ssl_certificate_vars.t
uwsgi_ssl.t uwsgi_ssl_verify.t uwsgi_ssl.t uwsgi_ssl_verify.t
# Following tests do not pass with sanitizer on (with OpenSSL too) # Following tests do not pass with sanitizer on (with OpenSSL too)
sanitize-not-ok: >- sanitize-not-ok: >-
grpc_ssl.t h2_proxy_request_buffering_ssl.t h2_proxy_ssl.t grpc_ssl.t h2_proxy_request_buffering_ssl.t h2_proxy_ssl.t
@@ -106,8 +102,7 @@ jobs:
stream_proxy_protocol_ssl.t stream_proxy_ssl_conf_command.t stream_proxy_ssl.t stream_proxy_protocol_ssl.t stream_proxy_ssl_conf_command.t stream_proxy_ssl.t
stream_proxy_ssl_verify.t stream_proxy_ssl_verify.t
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 6 timeout-minutes: 6
needs: build_wolfssl needs: build_wolfssl
@@ -116,34 +111,11 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-nginx name: wolf-install-nginx
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Install dependencies - name: Install dependencies
run: | run: |
sudo cpan -iT Proc::Find sudo cpan -iT Proc::Find Net::SSLeay IO::Socket::SSL
# Locking in the version of SSLeay used with testing
- name: Download and install Net::SSLeay 1.94 manually
run: |
curl -LO https://www.cpan.org/modules/by-module/Net/CHRISN/Net-SSLeay-1.94.tar.gz
tar -xzf Net-SSLeay-1.94.tar.gz
cd Net-SSLeay-1.94
perl Makefile.PL
make
sudo make install
# SSL version 2.091 changes '' return to undef causing test case to fail.
# Locking in the test version to use as 2.090
- name: Download and install IO::Socket::SSL 2.090 manually
run: |
curl -LO https://www.cpan.org/modules/by-module/IO/IO-Socket-SSL-2.090.tar.gz
tar -xzf IO-Socket-SSL-2.090.tar.gz
cd IO-Socket-SSL-2.090
perl Makefile.PL
make
sudo make install
- name: Checkout wolfssl-nginx - name: Checkout wolfssl-nginx
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -244,4 +216,4 @@ jobs:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/build-dir/lib \ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/build-dir/lib \
TMPDIR=$GITHUB_WORKSPACE TEST_NGINX_BINARY=../nginx/objs/nginx \ TMPDIR=$GITHUB_WORKSPACE TEST_NGINX_BINARY=../nginx/objs/nginx \
prove ${{ matrix.sanitize-ok }} prove ${{ matrix.sanitize-ok }}

View File

@@ -18,11 +18,10 @@ jobs:
matrix: matrix:
config: [ config: [
# Add new configs here # Add new configs here
'--enable-rsa --enable-keygen --disable-dh CFLAGS="-DWOLFSSL_NO_MALLOC -DRSA_MIN_SIZE=1024 -pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"', '--enable-rsa --enable-keygen --disable-dh CFLAGS="-DWOLFSSL_NO_MALLOC"',
] ]
name: make check name: make check
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 6 timeout-minutes: 6
steps: steps:
@@ -36,7 +35,7 @@ jobs:
make make
./wolfcrypt/test/testwolfcrypt ./wolfcrypt/test/testwolfcrypt
- name: Print errors - name: Print errors
if: ${{ failure() }} if: ${{ failure() }}
run: | run: |
if [ -f test-suite.log ] ; then if [ -f test-suite.log ] ; then

View File

@@ -1,49 +0,0 @@
name: --disable-tls Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--disable-tls --enable-all CFLAGS="-pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL
run: |
./autogen.sh
./configure ${{ matrix.config }}
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -1,27 +0,0 @@
#!/usr/bin/env bash
set -e
set -x
# Setup nss cert db
mkdir nssdb
./dist/Debug/bin/certutil -d nssdb -N --empty-password
./dist/Debug/bin/certutil -d nssdb -A -a -i wolfssl/certs/test/server-localhost.pem \
-t TCP -n 'wolf localhost'
# App data for nss
echo Hello from nss > /tmp/in
# TLS 1.3 test
env -C wolfssl ./examples/server/server -v 4 -p 4433 \
-c certs/test/server-localhost.pem -d -w > /tmp/server.log 2>&1 &
sleep 0.1
./dist/Debug/bin/tstclnt -V tls1.3: -h localhost -p 4433 -d nssdb -C -4 -A /tmp/in -v
sleep 0.1
# DTLS 1.3 test
env -C wolfssl ./examples/server/server -v 4 -p 4433 -u \
-c certs/test/server-localhost.pem -d -w > /tmp/server.log 2>&1 &
sleep 0.1
./dist/Debug/bin/tstclnt -V tls1.3: -P client -h localhost -p 4433 -d nssdb -C -4 -A /tmp/in -v
sleep 0.1

View File

@@ -1,89 +0,0 @@
name: nss interop Tests
### TODO uncomment stuff
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
env:
NSS_REF: NSS_3_107_RTM
jobs:
build_nss:
name: Build nss
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 30
steps:
- name: Checking if we have nss in cache
uses: actions/cache@v4
id: cache
with:
path: dist
key: nss-${{ env.NSS_REF }}
lookup-only: true
- name: Install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# hostap dependencies
sudo apt-get install -y gyp ninja-build
- name: Checkout nss
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: nss-dev/nss
ref: ${{ env.NSS_REF }}
path: nss
- name: Compile nss
if: steps.cache.outputs.cache-hit != 'true'
run: |
hg clone https://hg.mozilla.org/projects/nspr
cd nss
./build.sh
nss_test:
name: Test interop with nss
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
needs: build_nss
timeout-minutes: 10
steps:
- name: Checking if we have nss in cache
uses: actions/cache/restore@v4
id: cache
with:
path: dist
key: nss-${{ env.NSS_REF }}
fail-on-cache-miss: true
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-dtls --enable-dtls13
install: false
check: false
- name: Test interop
run: bash wolfssl/.github/workflows/nss.sh
- name: print server logs
if: ${{ failure() }}
run: |
cat /tmp/server.log

View File

@@ -1,93 +0,0 @@
name: ntp Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-ntp
path: build-dir.tgz
retention-days: 5
ntp_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 4.2.8p15, 4.2.8p17 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 10
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-ntp
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
# Avoid DoS'ing ntp site so cache the tar.gz
- name: Check if we have ntp
uses: actions/cache@v4
id: cache
with:
path: ntp-${{ matrix.ref }}.tar.gz
key: ntp-${{ matrix.ref }}.tar.gz
- name: Download ntp
if: steps.cache.outputs.cache-hit != 'true'
run: |
wget https://downloads.nwtime.org/ntp/4.2.8/ntp-${{ matrix.ref }}.tar.gz
- name: Extract ntp
run: |
tar -xf ntp-${{ matrix.ref }}.tar.gz
- name: Build and test ntp
working-directory: ntp-${{ matrix.ref }}
run: |
patch -p1 < $GITHUB_WORKSPACE/osp/ntp/${{ matrix.ref }}/ntp-${{ matrix.ref }}.patch
./bootstrap
./configure --with-wolfssl=$GITHUB_WORKSPACE/build-dir
make -j
make -j check

View File

@@ -15,8 +15,7 @@ concurrency:
jobs: jobs:
ocsp_stapling: ocsp_stapling:
name: ocsp stapling name: ocsp stapling
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
- name: Checkout wolfSSL - name: Checkout wolfSSL

View File

@@ -1,93 +0,0 @@
name: openldap Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-openldap CPPFLAGS=-DWOLFSSL_NO_ASN_STRICT
install: true
check: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-openldap
path: build-dir.tgz
retention-days: 5
openldap_check:
strategy:
fail-fast: false
matrix:
include:
# List of releases to test
- osp_ref: 2.5.13
git_ref: OPENLDAP_REL_ENG_2_5_13
- osp_ref: 2.6.7
git_ref: OPENLDAP_REL_ENG_2_6_7
name: ${{ matrix.osp_ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 20
needs: build_wolfssl
steps:
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-openldap
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout openldap
uses: actions/checkout@v4
with:
repository: openldap/openldap
path: openldap
ref: ${{ matrix.git_ref }}
- name: Build and test OpenLDAP
working-directory: openldap
run: |
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/build-dir/lib:$LD_LIBRARY_PATH
patch -p1 < $GITHUB_WORKSPACE/osp/openldap/${{ matrix.osp_ref }}/openldap-${{ matrix.osp_ref }}.patch
rm aclocal.m4
autoreconf -ivf
./configure --with-tls=wolfssl --disable-bdb --disable-hdb \
CFLAGS="-I$GITHUB_WORKSPACE/build-dir/include \
-I$GITHUB_WORKSPACE/build-dir/include/wolfssl \
-L$GITHUB_WORKSPACE/build-dir/lib"
make -j depend
make -j
make -j check

View File

@@ -15,9 +15,8 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -27,17 +26,14 @@ jobs:
path: wolfssl path: wolfssl
configure: >- configure: >-
--enable-openssh --enable-dsa --with-max-rsa-bits=8192 --enable-openssh --enable-dsa --with-max-rsa-bits=8192
--enable-intelasm --enable-sp-asm CFLAGS="-DRSA_MIN_SIZE=1024" --enable-intelasm --enable-sp-asm
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-openssh name: wolf-install-openssh
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
openssh_check: openssh_check:
@@ -45,42 +41,17 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
# A good way to measure how much each test takes is to create a bash script
# in the openssh root like this (make it executable):
# time-measure.sh
# #!/bin/bash
# /usr/bin/time -a -o /tmp/LTESTS-times.txt -f '%e %C' /usr/bin/bash "$@"
# And invoke the openssh tests like this:
# rm -f /tmp/LTESTS-times.txt && \
# make tests TEST_SHELL=$(pwd)/time-measure.sh SKIP_UNIT=yes && \
# grep test-exec.sh /tmp/LTESTS-times.txt
- git_ref: 'V_9_6_P1' - git_ref: 'V_9_6_P1'
osp_ver: '9.6' osp_ver: '9.6'
SKIP_LTESTS: >- name: ${{ matrix.ref }}
exit-status rekey multiplex cert-userkey forward-control integrity runs-on: ubuntu-latest
channel-timeout connection-timeout
- git_ref: 'V_9_9_P2'
osp_ver: '9.9p2'
SKIP_LTESTS: >-
exit-status rekey multiplex cert-userkey forward-control integrity
channel-timeout connection-timeout
- git_ref: 'V_10_0_P2'
osp_ver: '10.0p2'
SKIP_LTESTS: >-
exit-status rekey multiplex forward-control channel-timeout
connection-timeout
name: ${{ matrix.osp_ver }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
needs: build_wolfssl needs: build_wolfssl
steps: steps:
- name: Download lib - name: Download lib
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-openssh name: wolf-install-openssh
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -98,8 +69,9 @@ jobs:
configure: --with-wolfssl=$GITHUB_WORKSPACE/build-dir --with-rpath=-Wl,-rpath= configure: --with-wolfssl=$GITHUB_WORKSPACE/build-dir --with-rpath=-Wl,-rpath=
check: false check: false
# make tests take >20 minutes. Consider limiting? # make tests take >20 minutes. Consider limiting?
- name: Run tests - name: Run tests
working-directory: ./openssh working-directory: ./openssh
run: | run: |
make tests SKIP_LTESTS='${{ matrix.SKIP_LTESTS }}' # Run all the tests except (t-exec) as it takes too long
make file-tests interop-tests extra-tests unit

View File

@@ -1,50 +0,0 @@
name: OPENSSL_COEXIST and TEST_OPENSSL_COEXIST
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--verbose --enable-all --disable-all-osp --disable-opensslall --enable-opensslcoexist CPPFLAGS="-DNO_WOLFSSL_CIPHER_SUITE_TEST -pedantic -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
'--verbose --enable-all --disable-all-osp --disable-opensslall --enable-opensslcoexist CPPFLAGS="-DNO_WOLFSSL_CIPHER_SUITE_TEST -pedantic -DTEST_OPENSSL_COEXIST -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"'
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test --enable-opensslcoexist and TEST_OPENSSL_COEXIST
run: |
./autogen.sh || $(exit 2)
./configure ${{ matrix.config }} || $(exit 3)
make -j 4 || $(exit 4)
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in config.log scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -15,9 +15,8 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -28,14 +27,11 @@ jobs:
configure: --enable-openvpn configure: --enable-openvpn
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-openvpn name: wolf-install-openvpn
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
openvpn_check: openvpn_check:
@@ -43,10 +39,9 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
# List of refs to test # List of refs to test
ref: [ release/2.6, master ] ref: [ release/2.6, v2.6.0, master ]
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
needs: build_wolfssl needs: build_wolfssl
@@ -55,9 +50,7 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-openvpn name: wolf-install-openvpn
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Install dependencies - name: Install dependencies
run: | run: |

View File

@@ -17,73 +17,24 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-24.04, macos-latest ] os: [ ubuntu-latest, macos-latest ]
config: [ config: [
# Add new configs here # Add new configs here
'', '',
'--enable-all --enable-asn=template', '--enable-all --enable-asn=template',
'--enable-all --enable-asn=original', '--enable-all --enable-asn=original',
'--enable-all --enable-asn=template CPPFLAGS=-DWOLFSSL_OLD_OID_SUM',
'--enable-all --enable-asn=original CPPFLAGS=-DWOLFSSL_OLD_OID_SUM',
'--enable-harden-tls', '--enable-harden-tls',
'--enable-tls13 --enable-session-ticket --enable-dtls --enable-dtls13 '--enable-tls13 --enable-session-ticket --enable-dtls --enable-dtls13
--enable-opensslextra --enable-sessioncerts --enable-opensslextra --enable-sessioncerts
CPPFLAGS=''-DWOLFSSL_DTLS_NO_HVR_ON_RESUME -DHAVE_EXT_CACHE CPPFLAGS=''-DWOLFSSL_DTLS_NO_HVR_ON_RESUME -DHAVE_EXT_CACHE
-DWOLFSSL_TICKET_HAVE_ID -DHAVE_EX_DATA -DSESSION_CACHE_DYNAMIC_MEM'' ', -DWOLFSSL_TICKET_HAVE_ID -DHAVE_EX_DATA -DSESSION_CACHE_DYNAMIC_MEM'' ',
'--enable-all --enable-secure-renegotiation', '--enable-all --enable-secure-renegotiation',
'--enable-all --enable-haproxy --enable-quic', '--enable-all --enable-haproxy --enable-quic',
'--enable-dtls --enable-dtls13 --enable-earlydata '--enable-dtls --enable-dtls13 --enable-earlydata
--enable-session-ticket --enable-psk --enable-session-ticket --enable-psk
CPPFLAGS=''-DWOLFSSL_DTLS13_NO_HRR_ON_RESUME'' ', CPPFLAGS=''-DWOLFSSL_DTLS13_NO_HRR_ON_RESUME'' ',
'--enable-experimental --enable-kyber --enable-dtls --enable-dtls13
--enable-dtls-frag-ch',
'--enable-all --enable-dtls13 --enable-dtls-frag-ch',
'--enable-dtls --enable-dtls13 --enable-dtls-frag-ch
--enable-dtls-mtu',
'--enable-dtls --enable-dtlscid --enable-dtls13 --enable-secure-renegotiation
--enable-psk --enable-aesccm --enable-nullcipher
CPPFLAGS=-DWOLFSSL_STATIC_RSA',
'--enable-ascon --enable-experimental',
'--enable-ascon CPPFLAGS=-DWOLFSSL_ASCON_UNROLL --enable-experimental',
'--enable-all CPPFLAGS=''-DNO_AES_192 -DNO_AES_256'' ',
'--enable-sniffer --enable-curve25519 --enable-curve448 --enable-enckeys
CPPFLAGS=-DWOLFSSL_DH_EXTRA',
'--enable-dtls --enable-dtls13 --enable-dtls-frag-ch
--enable-dtls-mtu CPPFLAGS=-DWOLFSSL_DTLS_RECORDS_CAN_SPAN_DATAGRAMS',
'--enable-opensslall --enable-opensslextra CPPFLAGS=-DWC_RNG_SEED_CB',
'--enable-opensslall --enable-opensslextra
CPPFLAGS=''-DWC_RNG_SEED_CB -DWOLFSSL_NO_GETPID'' ',
'--enable-opensslextra CPPFLAGS=''-DWOLFSSL_NO_CA_NAMES'' ',
'--enable-opensslextra=x509small',
'CPPFLAGS=''-DWOLFSSL_EXTRA'' ',
'--enable-lms=small,verify-only --enable-xmss=small,verify-only',
'--disable-sys-ca-certs',
'--enable-all CPPFLAGS=-DWOLFSSL_DEBUG_CERTS ',
'--enable-all CPPFLAGS="-DWOLFSSL_CHECK_MEM_ZERO"',
'--enable-coding=no',
'--enable-dtls --enable-dtls13 --enable-ocspstapling --enable-ocspstapling2
--enable-cert-setup-cb --enable-sessioncerts',
'--enable-dtls --enable-dtls13 --enable-tls13
CPPFLAGS=-DWOLFSSL_TLS13_IGNORE_PT_ALERT_ON_ENC',
'--disable-sni --disable-ecc --disable-tls13 --disable-secure-renegotiation-info',
'CPPFLAGS=-DWOLFSSL_BLIND_PRIVATE_KEY',
'--enable-all --enable-certgencache',
'--enable-sessionexport --enable-dtls --enable-dtls13',
'--enable-sessionexport',
'--disable-examples CPPFLAGS=-DWOLFSSL_NO_MALLOC',
'CPPFLAGS=-DNO_WOLFSSL_CLIENT',
'CPPFLAGS=-DNO_WOLFSSL_SERVER',
'CPPFLAGS=-DWOLFSSL_NO_CLIENT_AUTH',
'CPPFLAGS=''-DNO_WOLFSSL_CLIENT -DWOLFSSL_NO_CLIENT_AUTH''',
'CPPFLAGS=''-DNO_WOLFSSL_SERVER -DWOLFSSL_NO_CLIENT_AUTH''',
'--enable-all CPPFLAGS=-DNO_WOLFSSL_CLIENT',
'--enable-all CPPFLAGS=-DNO_WOLFSSL_SERVER',
'--enable-all CPPFLAGS=-DWOLFSSL_NO_CLIENT_AUTH',
'--enable-all CPPFLAGS=''-DNO_WOLFSSL_CLIENT -DWOLFSSL_NO_CLIENT_AUTH''',
'--enable-all CPPFLAGS=''-DNO_WOLFSSL_SERVER -DWOLFSSL_NO_CLIENT_AUTH''',
] ]
name: make check name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 14 timeout-minutes: 14
@@ -91,20 +42,19 @@ jobs:
- name: Build and test wolfSSL - name: Build and test wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1 uses: wolfSSL/actions-build-autotools-project@v1
with: with:
configure: CFLAGS="-pedantic -Wno-overlength-strings -Wdeclaration-after-statement -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }} configure: ${{ matrix.config }}
check: true check: true
make_user_settings: make_user_settings:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-24.04, macos-latest ] os: [ ubuntu-latest, macos-latest ]
user-settings: [ user-settings: [
# Add new user_settings.h here # Add new user_settings.h here
'examples/configs/user_settings_all.h', 'examples/configs/user_settings_all.h',
] ]
name: make user_setting.h name: make user_setting.h
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 14 timeout-minutes: 14
@@ -120,29 +70,15 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-24.04, macos-latest ] os: [ ubuntu-latest, macos-latest ]
user-settings: [ user-settings: [
# Add new user_settings.h here (alphabetical order) # Add new user_settings.h here
'examples/configs/user_settings_ca.h',
'examples/configs/user_settings_dtls13.h',
'examples/configs/user_settings_EBSnet.h',
'examples/configs/user_settings_eccnonblock.h',
'examples/configs/user_settings_min_ecc.h', 'examples/configs/user_settings_min_ecc.h',
'examples/configs/user_settings_openssl_compat.h',
'examples/configs/user_settings_pkcs7.h',
'examples/configs/user_settings_rsa_only.h',
'examples/configs/user_settings_template.h',
'examples/configs/user_settings_tls12.h',
'examples/configs/user_settings_tls13.h',
'examples/configs/user_settings_wolfboot_keytools.h', 'examples/configs/user_settings_wolfboot_keytools.h',
'examples/configs/user_settings_wolfssh.h',
'examples/configs/user_settings_wolftpm.h', 'examples/configs/user_settings_wolftpm.h',
# Not included (require special setup): 'examples/configs/user_settings_tls12.h',
# - user_settings_pq.h: Requires --enable-experimental
# - user_settings_baremetal.h: Requires static memory, custom platform
] ]
name: make user_setting.h (testwolfcrypt only) name: make user_setting.h (testwolfcrypt only)
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 14 timeout-minutes: 14
@@ -162,9 +98,8 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-24.04, macos-latest ] os: [ ubuntu-latest, macos-latest ]
name: make user_setting.h (with sed) name: make user_setting.h (with sed)
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 14 timeout-minutes: 14
@@ -183,12 +118,7 @@ jobs:
windows_build: windows_build:
name: Windows Build Test name: Windows Build Test
if: github.repository_owner == 'wolfssl'
runs-on: windows-latest runs-on: windows-latest
strategy:
fail-fast: false
matrix:
arch: [ x64, Win32, ARM64 ]
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 6 timeout-minutes: 6
env: env:
@@ -199,6 +129,7 @@ jobs:
# You can convert this to a build matrix if you need coverage of multiple configuration types. # You can convert this to a build matrix if you need coverage of multiple configuration types.
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
BUILD_CONFIGURATION: Release BUILD_CONFIGURATION: Release
BUILD_PLATFORM: x64
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -213,9 +144,8 @@ jobs:
working-directory: ${{env.GITHUB_WORKSPACE}} working-directory: ${{env.GITHUB_WORKSPACE}}
# Add additional options to the MSBuild command line here (like platform or verbosity level). # Add additional options to the MSBuild command line here (like platform or verbosity level).
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{matrix.arch}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}
- if: ${{ matrix.arch != 'ARM64' }} - name: Run Test
name: Run Test
working-directory: ${{env.GITHUB_WORKSPACE}} working-directory: ${{env.GITHUB_WORKSPACE}}
run: Release/${{matrix.arch}}/testsuite.exe run: Release/x64/testsuite.exe

View File

@@ -15,8 +15,7 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Package wolfSSL name: Package wolfSSL
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
@@ -38,20 +37,18 @@ jobs:
- name: Build wolfSSL .deb - name: Build wolfSSL .deb
run: make deb-docker run: make deb-docker
# disabled 20240919 -- broken target. - name: Build wolfSSL .rpm
# - name: Build wolfSSL .rpm run: make rpm-docker
# run: make rpm-docker
- name: Confirm packages built - name: Confirm packages built
run: | run: |
DEB_COUNT=$(find -name 'libwolfssl*.deb' | wc -l) DEB_COUNT=$(find -name 'libwolfssl*.deb' | wc -l)
if [ "$DEB_COUNT" != "3" ]; then if [ "$DEB_COUNT" != "2" ]; then
echo Did not find exactly three deb packages!!! echo Did not find exactly two deb packages!!!
exit 1
fi
RPM_COUNT=$(find -name 'wolfssl*.rpm' | wc -l)
if [ "$RPM_COUNT" != "4" ]; then
echo Did not find exactly four rpm packages!!!
exit 1 exit 1
fi fi
# disabled 20240919 -- broken target.
# RPM_COUNT=$(find -name 'wolfssl*.rpm' | wc -l)
# if [ "$RPM_COUNT" != "4" ]; then
# echo Did not find exactly four rpm packages!!!
# exit 1
# fi

View File

@@ -1,92 +0,0 @@
name: pam-ipmi Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
# Don't run tests as this config is tested in many other places
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-pam-ipmi
path: build-dir.tgz
retention-days: 5
build_pam-ipmi:
strategy:
fail-fast: false
matrix:
git_ref: [ e4b13e6725abb178f62ee897fe1c0e81b06a9431 ]
name: ${{ matrix.git_ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install libpam-dev ninja-build meson
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-pam-ipmi
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout pam-ipmi
uses: actions/checkout@v4
with:
repository: openbmc/pam-ipmi
path: pam-ipmi
ref: ${{ matrix.git_ref }}
- name: Build pam-ipmi
working-directory: pam-ipmi
run: |
patch -p1 < ../osp/pam-ipmi/*-${{ matrix.git_ref }}.patch
PKG_CONFIG_PATH=$GITHUB_WORKSPACE/build-dir/lib/pkgconfig meson setup build
ninja -C build
- name: Confirm built with wolfSSL
working-directory: pam-ipmi
run: |
ldd ./build/src/pam_ipmisave/pam_ipmisave.so | grep wolfssl

View File

@@ -1,57 +0,0 @@
name: Quantum Resistant Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--enable-intelasm --enable-sp-asm --enable-mlkem=yes,kyber,ml-kem CPPFLAGS="-DWOLFSSL_ML_KEM_USE_OLD_IDS"',
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
'--enable-smallstack --enable-smallstackcache --enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" CC=c++',
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ"',
'--disable-intelasm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
'--disable-intelasm --enable-smallstack --enable-smallstackcache --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL
run: |
./autogen.sh
./configure ${{ matrix.config }}
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -1,51 +0,0 @@
name: PSK Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--enable-psk C_EXTRA_FLAGS=-DWOLFSSL_STATIC_PSK --disable-rsa --disable-ecc --disable-dh',
'--disable-oldtls --disable-tls13 --enable-psk -disable-rsa --disable-dh -disable-ecc --disable-asn C_EXTRA_FLAGS=-DWOLFSSL_STATIC_PSK --enable-lowresource --enable-singlethreaded --disable-asm --disable-errorstrings --disable-pkcs12 --disable-sha3 --disable-sha224 --disable-sha384 --disable-sha512 --disable-sha --disable-md5 -disable-aescbc --disable-chacha --disable-poly1305 --disable-coding --disable-sp-math-all',
'--disable-oldtls --disable-tlsv12 --enable-tls13 --enable-psk -disable-rsa --disable-dh -disable-ecc --disable-asn C_EXTRA_FLAGS=-DWOLFSSL_STATIC_PSK --enable-lowresource --enable-singlethreaded --disable-asm --disable-errorstrings --disable-pkcs12 --disable-sha3 --disable-sha224 --disable-sha384 --disable-sha512 --disable-sha --disable-md5 -disable-aescbc --disable-chacha --disable-poly1305 --disable-coding --disable-sp-math-all'
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL
run: |
./autogen.sh
./configure ${{ matrix.config }}
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -1,271 +0,0 @@
name: Renode STM32H753 Test
# Platform-specific configuration
# To add a new platform, create a new workflow file based on this template
# and update these variables for the target MCU
env:
PLATFORM_NAME: stm32h753
PLATFORM_DISPLAY_NAME: STM32H753
CMSIS_DEVICE_REPO: cmsis-device-h7
CMSIS_DEVICE_PATH: /opt/cmsis-device-h7
CMSIS_DEVICE_CACHE_KEY: cmsis-device-h7-v1
STM32CUBE_REPO: STM32CubeH7
STM32CUBE_BRANCH: v1.11.2
STM32CUBE_PATH: /opt/STM32CubeH7
STM32CUBE_CACHE_KEY: stm32cubeh7-v1.11.2-v1
HAL_CONFIG_FILE: stm32h7xx_hal_conf.h
HAL_DRIVER_INC_PATH: STM32H7xx_HAL_Driver/Inc
HAL_DRIVER_SRC_PATH: STM32H7xx_HAL_Driver/Src
RENODE_PLATFORM_NAME: stm32h753
RENODE_REPL_PATH: platforms/cpus/stm32h753.repl
RENODE_TEST_DIR: .github/renode-test/stm32h753
on:
push:
branches: [ main, master, develop ]
pull_request:
branches: [ main, master, develop ]
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout wolfSSL
uses: actions/checkout@v4
- name: Set up build environment
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
cmake \
ninja-build \
python3 \
git \
gcc-arm-none-eabi \
libnewlib-arm-none-eabi \
libstdc++-arm-none-eabi-newlib \
wget \
unzip
- name: Cache CMSIS Device
id: cache-cmsis-device
uses: actions/cache@v4
with:
path: ${{ env.CMSIS_DEVICE_PATH }}
key: ${{ env.CMSIS_DEVICE_CACHE_KEY }}
restore-keys: |
${{ env.CMSIS_DEVICE_CACHE_KEY }}-
- name: Cache CMSIS 5
id: cache-cmsis-5
uses: actions/cache@v4
with:
path: /opt/CMSIS_5
key: cmsis-5-v1
restore-keys: |
cmsis-5-
- name: Cache STM32Cube
id: cache-stm32cube
uses: actions/cache@v4
with:
path: ${{ env.STM32CUBE_PATH }}
key: ${{ env.STM32CUBE_CACHE_KEY }}
restore-keys: |
${{ env.STM32CUBE_CACHE_KEY }}-
- name: Cache Renode
id: cache-renode
uses: actions/cache@v4
with:
path: /opt/renode
key: renode-1.15.3-v1
restore-keys: |
renode-1.15.3-
- name: Install Renode dependencies
run: |
# Install Mono and other dependencies needed for Renode (always needed, even when cached)
sudo apt-get install -y --no-install-recommends \
mono-runtime \
libmono-cil-dev \
screen \
policykit-1 || true
- name: Install Renode (if not cached)
if: steps.cache-renode.outputs.cache-hit != 'true'
run: |
# Install Renode by extracting .deb (avoids GUI dependency issues for headless use)
cd /tmp
wget -q https://github.com/renode/renode/releases/download/v1.15.3/renode_1.15.3_amd64.deb
# Extract the .deb file
dpkg-deb -x renode_1.15.3_amd64.deb /tmp/renode-extract
# Copy Renode files to system locations
sudo mkdir -p /opt/renode
sudo cp -r /tmp/renode-extract/opt/renode/* /opt/renode/ || true
sudo cp -r /tmp/renode-extract/usr/* /usr/ || true
# Create symlink for easy access
if [ -f /opt/renode/renode ]; then
sudo ln -sf /opt/renode/renode /usr/local/bin/renode
elif [ -f /usr/bin/renode ]; then
echo "Renode already in PATH at /usr/bin/renode"
fi
# Cleanup
rm -rf /tmp/renode-extract renode_1.15.3_amd64.deb
- name: Setup Renode symlinks and permissions
run: |
# When Renode is cached, we need to recreate /usr/bin/renode wrapper script
# The /usr/bin/renode is a wrapper that checks Mono and calls /opt/renode/bin/Renode.exe
if [ -d /opt/renode ] && [ ! -x /usr/bin/renode ]; then
echo "Renode cached but /usr/bin/renode wrapper missing, recreating..."
# Create the wrapper script
sudo bash -c 'cat > /usr/bin/renode << '\''SCRIPT_EOF'\''
#!/bin/sh
MONOVERSION=5.20
REQUIRED_MAJOR=5
REQUIRED_MINOR=20
LAUNCHER=mono
if ! [ -x "$(command -v $LAUNCHER)" ]
then
echo "$LAUNCHER not found. Renode requires Mono $MONOVERSION or newer. Please refer to documentation for installation instructions. Exiting!"
exit 1
fi
# Check installed mono version
INSTALLED_MONO=`$LAUNCHER --version | head -n1 | cut -d'\'' '\'' -f5`
INSTALLED_MONO_MAJOR=`echo $INSTALLED_MONO | cut -d'\''.'\'' -f1`
INSTALLED_MONO_MINOR=`echo $INSTALLED_MONO | cut -d'\''.'\'' -f2`
if [ $INSTALLED_MONO_MAJOR -lt $REQUIRED_MAJOR ] || [ $INSTALLED_MONO_MAJOR -eq $REQUIRED_MAJOR -a $INSTALLED_MONO_MINOR -lt $REQUIRED_MINOR ]
then
echo "Wrong Mono version detected: $INSTALLED_MONO. Renode requires Mono $MONOVERSION or newer. Please refer to documentation for installation instructions. Exiting!"
exit 1
fi
exec $LAUNCHER $MONO_OPTIONS /opt/renode/bin/Renode.exe "$@"
SCRIPT_EOF'
sudo chmod +x /usr/bin/renode
echo "Created /usr/bin/renode wrapper script"
fi
# Also ensure /usr/local/bin/renode symlink exists
if [ -x /usr/bin/renode ] && [ ! -x /usr/local/bin/renode ]; then
sudo ln -sf /usr/bin/renode /usr/local/bin/renode
echo "Created symlink: /usr/local/bin/renode -> /usr/bin/renode"
fi
- name: Verify Renode installation
run: |
# Verify Renode is installed and accessible
RENODE_FOUND=false
RENODE_BIN=""
# Check various possible locations
for path in /opt/renode/renode /opt/renode/bin/renode /usr/local/bin/renode /usr/bin/renode; do
if [ -x "$path" ]; then
echo "Renode found at $path"
"$path" --version || true
RENODE_BIN="$path"
RENODE_FOUND=true
break
fi
done
if [ "$RENODE_FOUND" != "true" ]; then
echo "ERROR: Renode binary not found or not executable!"
echo "Searching for renode..."
find /opt /usr -name renode -type f 2>/dev/null | head -10 || true
echo "Checking /opt/renode contents:"
ls -la /opt/renode/ 2>/dev/null | head -10 || true
if [ -d /opt/renode ]; then
echo "Checking /opt/renode subdirectories:"
find /opt/renode -type f -name "*renode*" 2>/dev/null | head -10 || true
fi
exit 1
fi
- name: Clone CMSIS Device (if not cached)
if: steps.cache-cmsis-device.outputs.cache-hit != 'true'
run: |
sudo mkdir -p /opt
sudo git clone --depth 1 https://github.com/STMicroelectronics/${{ env.CMSIS_DEVICE_REPO }}.git ${{ env.CMSIS_DEVICE_PATH }}
- name: Clone CMSIS 5 (if not cached)
if: steps.cache-cmsis-5.outputs.cache-hit != 'true'
run: |
sudo mkdir -p /opt
sudo git clone --depth 1 https://github.com/ARM-software/CMSIS_5.git /opt/CMSIS_5
- name: Clone STM32Cube (if not cached)
if: steps.cache-stm32cube.outputs.cache-hit != 'true'
run: |
sudo mkdir -p /opt
sudo git clone --depth 1 --branch ${{ env.STM32CUBE_BRANCH }} --recurse-submodules https://github.com/STMicroelectronics/${{ env.STM32CUBE_REPO }}.git ${{ env.STM32CUBE_PATH }} || \
(sudo git clone --depth 1 --branch ${{ env.STM32CUBE_BRANCH }} https://github.com/STMicroelectronics/${{ env.STM32CUBE_REPO }}.git ${{ env.STM32CUBE_PATH }} && \
cd ${{ env.STM32CUBE_PATH }} && sudo git submodule update --init --recursive --depth 1)
- name: Setup firmware build directory and helper files
run: |
sudo mkdir -p /opt/firmware
# Copy helper files from repository
sudo cp -r ${{ github.workspace }}/${{ env.RENODE_TEST_DIR }}/* /opt/firmware/
# Copy HAL config to STM32Cube directory
sudo cp /opt/firmware/${{ env.HAL_CONFIG_FILE }} ${{ env.STM32CUBE_PATH }}/Drivers/${{ env.HAL_DRIVER_INC_PATH }}/ 2>/dev/null || true
sudo chmod +x /opt/firmware/entrypoint.sh
# Create .renode-root file so Renode can find platform files
# Try to find Renode installation directory and create .renode-root with proper permissions
if [ -d "/opt/renode/platforms" ]; then
echo "/opt/renode" | sudo tee /opt/firmware/.renode-root > /dev/null
sudo chmod 644 /opt/firmware/.renode-root
elif [ -d "/usr/lib/renode/platforms" ]; then
echo "/usr/lib/renode" | sudo tee /opt/firmware/.renode-root > /dev/null
sudo chmod 644 /opt/firmware/.renode-root
elif [ -d "/usr/share/renode/platforms" ]; then
echo "/usr/share/renode" | sudo tee /opt/firmware/.renode-root > /dev/null
sudo chmod 644 /opt/firmware/.renode-root
fi
- name: Build wolfSSL firmware (NOT CACHED - rebuilds on every run)
env:
WOLFSSL_ROOT: /opt/wolfssl
run: |
# Copy wolfSSL source (this is NOT cached - fresh checkout each time)
sudo cp -r ${{ github.workspace }} /opt/wolfssl
# Build with CMake
cd /opt/firmware
sudo cmake -G Ninja \
-DWOLFSSL_USER_SETTINGS=ON \
-DUSER_SETTINGS_FILE=/opt/firmware/user_settings.h \
-DCMAKE_TOOLCHAIN_FILE=/opt/firmware/toolchain-arm-none-eabi.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DWOLFSSL_CRYPT_TESTS=OFF \
-DWOLFSSL_EXAMPLES=OFF \
-B /opt/firmware/build \
-S /opt/firmware
sudo cmake --build /opt/firmware/build
# Verify ELF file was created and copy it to expected location
if [ -f "/opt/firmware/build/wolfcrypt_test.elf" ]; then
sudo cp /opt/firmware/build/wolfcrypt_test.elf /opt/firmware/wolfcrypt_test.elf
echo "ELF file copied to /opt/firmware/wolfcrypt_test.elf"
ls -lh /opt/firmware/wolfcrypt_test.elf
else
echo "ERROR: ELF file not found at /opt/firmware/build/wolfcrypt_test.elf"
echo "Searching for ELF files..."
find /opt/firmware/build -name "*.elf" 2>/dev/null || true
exit 1
fi
- name: Run Renode test
run: |
# Ensure PATH includes standard binary locations for sudo
sudo env PATH="$PATH" /opt/firmware/entrypoint.sh

View File

@@ -1,116 +0,0 @@
name: rng-tools Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all
install: true
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-rng-tools
path: build-dir.tgz
retention-days: 5
rng-tools_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 6.16 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev libjansson-dev libp11-dev librtlsdr-dev libcap-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-rng-tools
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout jitterentropy-library
uses: actions/checkout@v4
with:
repository: smuellerDD/jitterentropy-library
path: jitterentropy-library
ref: v3.5.0
- name: Build jitterentropy-library
working-directory: jitterentropy-library
run: make -j
- name: Build rng-tools
uses: wolfSSL/actions-build-autotools-project@v1
with:
repository: nhorman/rng-tools
ref: v${{ matrix.ref }}
path: rng-tools
patch-file: $GITHUB_WORKSPACE/osp/rng-tools/${{ matrix.ref }}.patch
configure: --without-pkcs11 --enable-jitterentropy=$GITHUB_WORKSPACE/jitterentropy-library --with-wolfssl=$GITHUB_WORKSPACE/build-dir
check: false
- name: Testing rng-tools
id: testing
working-directory: rng-tools
run: |
# Retry up to five times
for i in {1..5}; do
TEST_RES=0
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/build-dir/lib RNGD_JITTER_TIMEOUT=100 make check || TEST_RES=$?
if [ "$TEST_RES" -eq "0" ]; then
break
fi
done
if [ "$TEST_RES" -ne "0" ]; then
exit $TEST_RES
fi
- name: Print logs
if: ${{ failure() && steps.testing.outcome == 'failure' }}
working-directory: rng-tools/tests
run: cat test-suite.log

View File

@@ -1,74 +0,0 @@
name: Build Rust Wrapper
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL Rust Wrapper
if: github.repository_owner == 'wolfssl'
runs-on: ${{ matrix.os }}
# This should be a safe limit for the tests to run.
timeout-minutes: 10
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: ${{ matrix.config }}
- name: Build Rust Wrapper
working-directory: wolfssl
run: make -C wrapper/rust
- name: Run Rust Wrapper Tests
working-directory: wolfssl
run: make -C wrapper/rust test
strategy:
matrix:
os: [ ubuntu-24.04, ubuntu-24.04-arm ]
config: [
# Add new configs here
'',
'--enable-all',
'--enable-cryptonly --disable-examples',
'--enable-cryptonly --disable-examples --disable-aes --disable-aesgcm',
'--enable-cryptonly --disable-examples --disable-aescbc',
'--enable-cryptonly --disable-examples --disable-aeseax',
'--enable-cryptonly --disable-examples --disable-aesecb',
'--enable-cryptonly --disable-examples --disable-aesccm',
'--enable-cryptonly --disable-examples --disable-aescfb',
'--enable-cryptonly --disable-examples --disable-aesctr',
'--enable-cryptonly --disable-examples --disable-aescts',
'--enable-cryptonly --disable-examples --disable-aesgcm',
'--enable-cryptonly --disable-examples --disable-aesgcm-stream',
'--enable-cryptonly --disable-examples --disable-aesofb',
'--enable-cryptonly --disable-examples --disable-aesxts',
'--enable-cryptonly --disable-examples --disable-cmac',
'--enable-cryptonly --disable-examples --disable-dh',
'--enable-cryptonly --disable-examples --disable-ecc',
'--enable-cryptonly --disable-examples --disable-ed25519',
'--enable-cryptonly --disable-examples --disable-ed25519-stream',
'--enable-cryptonly --disable-examples --disable-ed448',
'--enable-cryptonly --disable-examples --disable-ed448-stream',
'--enable-cryptonly --disable-examples --disable-hkdf',
'--enable-cryptonly --disable-examples --disable-hmac',
'--enable-cryptonly --disable-examples --disable-rng',
'--enable-cryptonly --disable-examples --disable-rsa',
'--enable-cryptonly --disable-examples --disable-rsapss',
'--enable-cryptonly --disable-examples --disable-sha224',
'--enable-cryptonly --disable-examples --disable-sha3',
'--enable-cryptonly --disable-examples --disable-sha384',
'--enable-cryptonly --disable-examples --disable-sha512',
'--enable-cryptonly --disable-examples --disable-shake128',
'--enable-cryptonly --disable-examples --disable-shake256',
'--enable-cryptonly --disable-examples --disable-srtp-kdf',
'--enable-cryptonly --disable-examples --disable-x963kdf',
]

View File

@@ -1,53 +0,0 @@
name: Stack Size warnings
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_library:
strategy:
matrix:
config: [
# defaults, noasm
'--disable-asm',
# defaults + native PQ, no asm
'--disable-asm --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium',
# all-crypto + native PQ, no asm
'--disable-asm --enable-all-crypto --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium',
# defaults, intelasm + sp-asm
'--enable-intelasm --enable-sp-asm',
# defaults + native PQ, intelasm + sp-asm
'--enable-intelasm --enable-sp-asm --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium',
# all-crypto + native PQ, intelasm + sp-asm
'--enable-intelasm --enable-sp-asm --enable-all-crypto --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium'
]
name: build library
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Build wolfCrypt with smallstack and stack depth warnings, and run testwolfcrypt
run: |
./autogen.sh || $(exit 2)
echo "running ./configure ... ${{ matrix.config }}"
./configure --enable-cryptonly --disable-cryptocb --disable-testcert --enable-smallstack --enable-smallstackcache --enable-crypttests --disable-benchmark --disable-examples --with-max-rsa-bits=16384 --enable-stacksize=verbose CFLAGS="-Wframe-larger-than=2048 -Wstack-usage=4096 -DWOLFSSL_TEST_MAX_RELATIVE_STACK_BYTES=8192 -DTEST_ALWAYS_RUN_TO_END" ${{ matrix.config }} || $(exit 3)
make -j 4 || $(exit 4)
./wolfcrypt/test/testwolfcrypt

View File

@@ -1,81 +0,0 @@
name: socat Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-maxfragment --enable-opensslall --enable-opensslextra --enable-dtls --enable-oldtls --enable-tlsv10 --enable-ipv6 'CPPFLAGS=-DWOLFSSL_NO_DTLS_SIZE_CHECK -DOPENSSL_COMPATIBLE_DEFAULTS'
install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-socat
path: build-dir.tgz
retention-days: 5
socat_check:
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 30
needs: build_wolfssl
steps:
- name: Install prereqs
run:
sudo apt-get install build-essential autoconf libtool pkg-config clang libc++-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-socat
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Download socat
run: curl -O http://www.dest-unreach.org/socat/download/socat-1.8.0.0.tar.gz && tar xvf socat-1.8.0.0.tar.gz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Build socat
working-directory: ./socat-1.8.0.0
run: |
patch -p1 < ../osp/socat/1.8.0.0/socat-1.8.0.0.patch
autoreconf -vfi
./configure --with-wolfssl=$GITHUB_WORKSPACE/build-dir --enable-default-ipv=4
make
- name: Run socat tests
working-directory: ./socat-1.8.0.0
run: |
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/build-dir/lib:$LD_LIBRARY_PATH
export SHELL=/bin/bash
SOCAT=$GITHUB_WORKSPACE/socat-1.8.0.0/socat ./test.sh -t 0.5 --expect-fail 36,64,146,214,216,217,309,310,386,399,402,403,459,460,467,468,475,478,492,528,530

View File

@@ -1,94 +0,0 @@
name: SoftHSMv2 Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 10
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all CFLAGS=-DRSA_MIN_SIZE=1024
install: true
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-softhsm
path: build-dir.tgz
retention-days: 5
softhsm_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 2.6.1 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 20
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y libcppunit-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-softhsm
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Checkout SoftHSMv2
uses: actions/checkout@v4
with:
repository: opendnssec/SoftHSMv2
path: softhsm
ref: ${{ matrix.ref }}
# Not using wolfSSL/actions-build-autotools-project@v1 because autogen.sh doesn't work
- name: Build softhsm
working-directory: softhsm
run: |
patch -p1 < $GITHUB_WORKSPACE/osp/softhsm/${{ matrix.ref }}.patch
autoreconf -if
./configure --with-crypto-backend=wolfssl WOLFSSL_INSTALL_DIR=$GITHUB_WORKSPACE/build-dir
make -j
- name: Test softhsm
working-directory: softhsm
run: make -j check

View File

@@ -1,99 +0,0 @@
name: sssd Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_wolfssl:
if: github.repository_owner == 'wolfssl'
name: Build wolfSSL
# Just to keep it the same as the testing target
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-all CFLAGS=-DWOLFSSL_NO_ASN_STRICT
install: true
check: false
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib
uses: actions/upload-artifact@v4
with:
name: wolf-install-sssd
path: build-dir.tgz
retention-days: 5
sssd_check:
strategy:
fail-fast: false
matrix:
# List of releases to test
ref: [ 2.9.1 ]
name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
container:
image: quay.io/sssd/ci-client-devel:ubuntu-latest
env:
LD_LIBRARY_PATH: /usr/local/lib
# This should be a safe limit for the tests to run.
timeout-minutes: 20
needs: build_wolfssl
steps:
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential autoconf libldb-dev libldb2 python3-ldb bc
- name: Setup env
run: |
ln -s samba-4.0/ldb.h /usr/include/ldb.h
ln -s samba-4.0/ldb_errors.h /usr/include/ldb_errors.h
ln -s samba-4.0/ldb_handlers.h /usr/include/ldb_handlers.h
ln -s samba-4.0/ldb_module.h /usr/include/ldb_module.h
ln -s samba-4.0/ldb_version.h /usr/include/ldb_version.h
- name: Download lib
uses: actions/download-artifact@v4
with:
name: wolf-install-sssd
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP
uses: actions/checkout@v4
with:
repository: wolfssl/osp
path: osp
- name: Build and test sssd
uses: wolfSSL/actions-build-autotools-project@v1
with:
repository: SSSD/sssd
ref: ${{ matrix.ref }}
path: sssd
patch-file: $GITHUB_WORKSPACE/osp/sssd/${{ matrix.ref }}.patch
configure: >-
--without-samba --without-nfsv4-idmapd-plugin --with-oidc-child=no
--without-manpages WOLFSSL_INSTALL_DIR=$GITHUB_WORKSPACE/build-dir
check: true

View File

@@ -15,9 +15,8 @@ concurrency:
jobs: jobs:
build_wolfssl: build_wolfssl:
name: Build wolfSSL name: Build wolfSSL
if: github.repository_owner == 'wolfssl'
# Just to keep it the same as the testing target # Just to keep it the same as the testing target
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
steps: steps:
@@ -28,14 +27,11 @@ jobs:
configure: --enable-stunnel configure: --enable-stunnel
install: true install: true
- name: tar build-dir
run: tar -zcf build-dir.tgz build-dir
- name: Upload built lib - name: Upload built lib
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wolf-install-stunnel name: wolf-install-stunnel
path: build-dir.tgz path: build-dir
retention-days: 5 retention-days: 5
stunnel_check: stunnel_check:
@@ -45,8 +41,7 @@ jobs:
# List of releases to test # List of releases to test
ref: [ 5.67 ] ref: [ 5.67 ]
name: ${{ matrix.ref }} name: ${{ matrix.ref }}
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 4 timeout-minutes: 4
needs: build_wolfssl needs: build_wolfssl
@@ -55,10 +50,8 @@ jobs:
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: wolf-install-stunnel name: wolf-install-stunnel
path: build-dir
- name: untar build-dir
run: tar -xf build-dir.tgz
- name: Checkout OSP - name: Checkout OSP
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:

View File

@@ -1,70 +0,0 @@
name: WOLFSSL_API_PREFIX_MAP
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_and_analyze:
strategy:
matrix:
config: [
'--enable-all --enable-mlkem --enable-mldsa --enable-xmss --enable-lms --enable-acert --with-sys-crypto-policy CFLAGS=-DWOLFSSL_API_PREFIX_MAP'
]
name: make and analyze
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test --enable-opensslcoexist and TEST_OPENSSL_COEXIST
run: |
./autogen.sh || $(exit 2)
./configure ${{ matrix.config }} || $(exit 3)
make -j 4 || $(exit 4)
# ignore properly prefixed symbols, and symbols associated with asm implementations (all internal) regardless of prefix:
readelf --symbols --wide src/.libs/libwolfssl.so | \
awk '
BEGIN {
total_public_symbols = 0;
unprefixed_public_symbols = 0;
}
{
if (($5 == "GLOBAL") && ($6 != "HIDDEN") && ($7 ~ /^[0-9]+$/)) {
++total_public_symbols;
}
}
{
if (($7 !~ /^[0-9]+$/) ||
($8 ~ /^(wc_|wolf|WOLF|__pfx|fe_|sp_[a-zA-Z090-0_]*[0-9])/) ||
($8 ~ /(_avx[12]|_AVX[12]|_sse[12]|_SSE[12]|_aesni|_AESNI|_bmi2|_x64$)/))
{
next;
}
}
{
if (($4 == "FUNC") && ($5 == "GLOBAL") && ($6 == "DEFAULT")) {
++unprefixed_public_symbols;
print;
}
}
END {
if (unprefixed_public_symbols) {
print unprefixed_public_symbols " unprefixed public symbols found, of " total_public_symbols " total." >"/dev/stderr";
exit(1);
} else {
print total_public_symbols " public symbols found in libwolfssl, all OK.";
exit(0);
}
}' || $(exit 5)

View File

@@ -1,57 +0,0 @@
name: ThreadXBuild Test
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
build:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Cache NetXDuo bundle
id: cache-netxduo
uses: actions/cache@v3
with:
path: ./v6.4.3_rel.tar.gz
key: netxduo-bundle-v6.4.3_rel
- name: Download NetXDuo bundle if not cached
if: steps.cache-netxduo.outputs.cache-hit != 'true'
run: |
wget https://github.com/eclipse-threadx/netxduo/archive/refs/tags/v6.4.3_rel.tar.gz
- name: Extract NetXDuo bundle
run: |
mkdir -p netxduo_src
tar -xzf v6.4.3_rel.tar.gz -C netxduo_src --strip-components=1
- name: Install NetXDuo Dependencies
working-directory: ./netxduo_src
run: |
./scripts/install.sh
- name: Configure NetX with DNS Client Support
working-directory: ./netxduo_src
run: |
cp addons/dns/nxd_dns.h ./common/inc/
cp addons/dns/nxd_dns.c ./common/src/
- name: Build NetXDuo with DNS Support
working-directory: ./netxduo_src
run: |
rm -rf test/cmake/threadx
rm -rf test/cmake/filex
./scripts/build_nxd64.sh
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
with:
path: wolfssl
configure: --enable-enckeys --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-DTHREADX -DHAVE_NETX -DWOLFSSL_USER_IO -I${{ github.workspace }}/netxduo_src/common/inc -I${{ github.workspace }}/netxduo_src/ports/linux/gnu/inc -I${{ github.workspace }}/netxduo_src/test/cmake/netxduo64/build/libs/inc" LDFLAGS="-L${{ github.workspace }}/netxduo_src/test/cmake/netxduo64/build/default_build_coverage/netxduo -L${{ github.workspace }}/netxduo_src/test/cmake/netxduo64/build/libs/threadx" LIBS="-lnetxduo -lthreadx"
install: false

View File

@@ -1,60 +0,0 @@
name: WOLFSSL_TRACK_MEMORY Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
make_check:
strategy:
matrix:
config: [
# Add new configs here
'--enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY"',
'--enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY"',
'--enable-smallstackcache --enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY"',
# Note the below smallstackcache tests are crucial coverage for the Linux kernel
# module, when targeting a kernel with the randomness patch (linuxkm/patches/)
# applied.
#
# Note, don't combine wolfEntropy with the full TLS cipher suite test -- the implicit wc_InitRng()s in each suite have an enormous CPU footprint.
'--enable-wolfEntropy --enable-smallstackcache --enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY -DNO_WOLFSSL_CIPHER_SUITE_TEST"',
'--enable-intelrdseed --enable-smallstackcache --enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY -DNO_WOLFSSL_CIPHER_SUITE_TEST"',
'--enable-amdrand --enable-smallstackcache --enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY -DNO_WOLFSSL_CIPHER_SUITE_TEST"',
'--disable-asm --enable-wolfEntropy --enable-smallstackcache --enable-smallstack --enable-all CFLAGS="-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY -DNO_WOLFSSL_CIPHER_SUITE_TEST"'
]
name: make check
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: Test wolfSSL
run: |
./autogen.sh
./configure ${{ matrix.config }}
make -j 4
make check
- name: Print errors
if: ${{ failure() }}
run: |
for file in scripts/*.log
do
if [ -f "$file" ]; then
echo "${file}:"
cat "$file"
echo "========================================================================"
fi
done

View File

@@ -1,88 +0,0 @@
name: Build Watcom C
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
wolfssl_watcomc_windows:
if: github.repository_owner == 'wolfssl'
strategy:
fail-fast: false
matrix:
common:
- cmake: '-G "Watcom WMake" -DCMAKE_VERBOSE_MAKEFILE=TRUE -DWOLFSSL_ASM=no -DWOLFSSL_EXAMPLES=no -DWOLFSSL_CRYPT_TESTS=no'
platform:
- title: 'Windows OW 2.0'
system: 'Windows'
image: 'windows-latest'
owimage: '2.0'
id: 'win32ow20'
cmake: '-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86'
- title: 'Linux OW 2.0'
system: 'Linux'
image: 'ubuntu-latest'
owimage: '2.0'
id: 'linuxow20'
cmake: '-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86'
- title: 'OS/2 OW 2.0'
system: 'OS2'
image: 'windows-latest'
owimage: '2.0'
id: 'os2ow20'
cmake: '-DCMAKE_SYSTEM_NAME=OS2 -DCMAKE_SYSTEM_PROCESSOR=x86'
thread:
- id: 'multi'
cmake: ''
owcmake: '-DCMAKE_POLICY_DEFAULT_CMP0136=NEW -DCMAKE_WATCOM_RUNTIME_LIBRARY=MultiThreaded'
- id: 'single'
cmake: '-DWOLFSSL_SINGLE_THREADED=yes'
owcmake: '-DCMAKE_POLICY_DEFAULT_CMP0136=NEW -DCMAKE_WATCOM_RUNTIME_LIBRARY=SingleThreaded'
library:
- id: 'dll'
cmake: ''
owcmake: 'DLL'
- id: 'static'
cmake: '-DBUILD_SHARED_LIBS=no'
owcmake: ''
exclude:
- { platform: { system: 'Linux' }, library: { id: 'dll' } }
runs-on: ${{ matrix.platform.image }}
name: ${{ matrix.platform.title }} (${{ matrix.thread.id }} ${{ matrix.library.id }})
steps:
- name: Setup Open Watcom ${{ matrix.platform.owimage }}
uses: open-watcom/setup-watcom@v0
with:
version: ${{ matrix.platform.owimage }}
# Currently fixed to a monthly build because of historical instability with daily releases.
# See https://github.com/wolfSSL/wolfssl/pull/9167
# Pin to monthly release as needed:
tag: 2025-11-03-Build
- name: Checkout wolfSSL
uses: actions/checkout@v4
with:
path: wolfssl
- name: Build wolfSSL
working-directory: wolfssl
shell: bash
run: |
cmake -B build ${{matrix.common.cmake}} ${{ matrix.platform.cmake }} ${{ matrix.thread.cmake }} ${{ matrix.library.cmake }} ${{ matrix.thread.owcmake }}${{ matrix.library.owcmake }}
cmake --build build
- name: Upload build errors
if: failure()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform.id }}-${{ matrix.thread.id }}-${{ matrix.library.id }}
path: |
build/**

View File

@@ -1,58 +0,0 @@
name: Windows CSharp Build Test
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
build:
if: github.repository_owner == 'wolfssl'
runs-on: windows-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 6
env:
# Path to the solution file relative to the root of the project.
SOLUTION_FILE_PATH: wolfssl\wrapper\CSharp\wolfSSL_CSharp.sln
# Configuration type to build.
# You can convert this to a build matrix if you need coverage of multiple configuration types.
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
BUILD_CONFIGURATION: Debug
BUILD_PLATFORM: x64
steps:
- name: Pull wolfssl
uses: actions/checkout@master
with:
repository: wolfssl/wolfssl
path: wolfssl
- name: Create FIPS stub files (autogen)
working-directory: wolfssl
run: |
echo $null >> wolfcrypt\src\fips.c
echo $null >> wolfcrypt\src\fips_test.c
echo $null >> wolfcrypt\src\wolfcrypt_first.c
echo $null >> wolfcrypt\src\wolfcrypt_last.c
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Build
working-directory: ${{env.GITHUB_WORKSPACE}}
# Add additional options to the MSBuild command line here (like platform or verbosity level).
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}
- name: Run wolfCrypt test
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl\wrapper\CSharp\Debug\x64\
run: ./wolfCrypt-test.exe
- name: Run wolfSSL client/server example
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl\wrapper\CSharp\Debug\x64\
run: ./wolfSSL-TLS-Server.exe && sleep 1 & ./wolfSSL-TLS-Client.exe

View File

@@ -1,48 +0,0 @@
name: wolfCrypt conversion warnings
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build_library:
strategy:
matrix:
config: [
# Add new configs here
'--disable-asm --enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion"',
'--enable-intelasm --enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion"',
'--enable-smallstack --disable-asm --enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion"',
'--enable-smallstack --enable-intelasm --enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion"',
'--enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion -DNO_INT128"',
'--enable-cryptonly --enable-all-crypto --disable-examples --disable-benchmark --disable-crypttests CPPFLAGS="-Wdeclaration-after-statement -Wconversion -Warith-conversion -Wenum-conversion -Wfloat-conversion -Wsign-conversion" --enable-32bit CFLAGS=-m32'
]
name: build library
if: github.repository_owner == 'wolfssl'
runs-on: ubuntu-24.04
# This should be a safe limit for the tests to run.
timeout-minutes: 6
steps:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: install_multilib
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y gcc-multilib
- name: Build wolfCrypt with extra type conversion warnings
run: |
./autogen.sh || $(exit 2)
echo "running ./configure ${{ matrix.config }}"
./configure ${{ matrix.config }} || $(exit 3)
make -j 4 || $(exit 4)

View File

@@ -1,89 +0,0 @@
name: Xcode Build Tests
# START OF COMMON SECTION
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION
jobs:
build:
if: github.repository_owner == 'wolfssl'
runs-on: macos-latest
# This should be a safe limit for the tests to run.
timeout-minutes: 10
strategy:
matrix:
include:
# macOS builds
- target: wolfssl_osx
arch: arm64
config: Release
sdk: macosx
name: macOS (ARM64, Release)
- target: wolfssl_osx
arch: x86_64
config: Release
sdk: macosx
name: macOS (x86_64, Release)
- target: wolfssl_osx
arch: arm64
config: Debug
sdk: macosx
name: macOS (ARM64, Debug)
- target: wolfssl_osx
arch: x86_64
config: Debug
sdk: macosx
name: macOS (x86_64, Debug)
# Universal build (both architectures)
- target: wolfssl_osx
arch: arm64
arch2: x86_64
config: Release
sdk: macosx
name: macOS (Universal, Release)
universal: true
# tvOS builds
- target: wolfssl_tvos
arch: arm64
config: Release
sdk: appletvos
name: tvOS (ARM64, Release)
- target: wolfssl_tvos
arch: arm64
config: Release
sdk: appletvsimulator
name: tvOS Simulator (ARM64, Release)
steps:
- uses: actions/checkout@v4
- name: Build wolfSSL with Xcode (${{ matrix.name }})
working-directory: ./IDE/XCODE
run: |
if [ "${{ matrix.universal }}" == "true" ]; then
xcodebuild -project wolfssl.xcodeproj \
-target ${{ matrix.target }} \
-configuration ${{ matrix.config }} \
-arch ${{ matrix.arch }} \
-arch ${{ matrix.arch2 }} \
-sdk ${{ matrix.sdk }} \
SYMROOT=build \
OBJROOT=build \
build
else
xcodebuild -project wolfssl.xcodeproj \
-target ${{ matrix.target }} \
-configuration ${{ matrix.config }} \
-arch ${{ matrix.arch }} \
-sdk ${{ matrix.sdk }} \
SYMROOT=build \
OBJROOT=build \
build
fi

View File

@@ -25,8 +25,7 @@ jobs:
zephyr-sdk: 0.16.3 zephyr-sdk: 0.16.3
- zephyr-ref: v2.7.4 - zephyr-ref: v2.7.4
zephyr-sdk: 0.16.3 zephyr-sdk: 0.16.3
if: github.repository_owner == 'wolfssl' runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# This should be a safe limit for the tests to run. # This should be a safe limit for the tests to run.
timeout-minutes: 25 timeout-minutes: 25
steps: steps:
@@ -42,18 +41,13 @@ jobs:
make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 \ make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 \
autoconf automake bison build-essential ca-certificates cargo ccache chrpath cmake \ autoconf automake bison build-essential ca-certificates cargo ccache chrpath cmake \
cpio device-tree-compiler dfu-util diffstat dos2unix doxygen file flex g++ gawk gcc \ cpio device-tree-compiler dfu-util diffstat dos2unix doxygen file flex g++ gawk gcc \
gcovr git git-core gnupg gperf gtk-sharp3 help2man iproute2 lcov libcairo2-dev \ gcovr git git-core gnupg gperf gtk-sharp2 help2man iproute2 lcov libcairo2-dev \
libglib2.0-dev libgtk2.0-0 liblocale-gettext-perl libncurses5-dev libpcap-dev \ libglib2.0-dev libgtk2.0-0 liblocale-gettext-perl libncurses5-dev libpcap-dev \
libpopt0 libsdl1.2-dev libsdl2-dev libssl-dev libtool libtool-bin locales make \ libpopt0 libsdl1.2-dev libsdl2-dev libssl-dev libtool libtool-bin locales make \
net-tools ninja-build openssh-client parallel pkg-config python3-dev python3-pip \ net-tools ninja-build openssh-client parallel pkg-config python3-dev python3-pip \
python3-ply python3-setuptools python-is-python3 qemu-kvm rsync socat srecord sudo \ python3-ply python3-setuptools python-is-python3 qemu rsync socat srecord sudo \
texinfo unzip wget ovmf xz-utils texinfo unzip wget ovmf xz-utils
- name: Setup cmake version
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.25.x'
- name: Install west - name: Install west
run: sudo pip install west run: sudo pip install west

53
.gitignore vendored
View File

@@ -3,13 +3,13 @@ ctaocrypt/src/src/
*.lo *.lo
*.la *.la
*.o *.o
*.patch
*.deps *.deps
*.d *.d
*.libs *.libs
*.cache *.cache
.dirstamp .dirstamp
*.user *.user
!*-VS2022.vcxproj.user
configure configure
config.* config.*
!cmake/config.in !cmake/config.in
@@ -33,7 +33,7 @@ aclocal.m4
aminclude.am aminclude.am
lt*.m4 lt*.m4
Makefile.in Makefile.in
/Makefile Makefile
depcomp depcomp
missing missing
libtool libtool
@@ -50,6 +50,16 @@ wolfcrypt_first.c
wolfcrypt_last.c wolfcrypt_last.c
selftest.c selftest.c
fipsv2.c fipsv2.c
src/async.c
wolfssl/async.h
wolfcrypt/src/async.c
wolfssl/wolfcrypt/async.h
wolfcrypt/src/port/intel/quickassist.c
wolfcrypt/src/port/intel/quickassist_mem.c
wolfcrypt/src/port/cavium/cavium_nitrox.c
wolfssl/wolfcrypt/port/intel/quickassist.h
wolfssl/wolfcrypt/port/intel/quickassist_mem.h
wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h
ctaocrypt/benchmark/benchmark ctaocrypt/benchmark/benchmark
ctaocrypt/test/testctaocrypt ctaocrypt/test/testctaocrypt
wolfcrypt/benchmark/benchmark wolfcrypt/benchmark/benchmark
@@ -235,16 +245,6 @@ linuxkm/libwolfssl.mod.c
linuxkm/libwolfssl.lds linuxkm/libwolfssl.lds
linuxkm/module_exports.c linuxkm/module_exports.c
linuxkm/linuxkm/get_thread_size linuxkm/linuxkm/get_thread_size
linuxkm/linuxkm
linuxkm/src
linuxkm/patches/src
*.nds
bsdkm/export_syms
bsdkm/i386
bsdkm/libwolfssl.ko
bsdkm/machine
bsdkm/opt_global.h
bsdkm/x86
# autotools generated # autotools generated
scripts/unit.test scripts/unit.test
@@ -413,19 +413,6 @@ user_settings_asm.h
/IDE/Espressif/**/sdkconfig /IDE/Espressif/**/sdkconfig
/IDE/Espressif/**/sdkconfig.old /IDE/Espressif/**/sdkconfig.old
# ESP8266 RTOS SDK has a slightly different sdkconfig filename to exclude:
/IDE/Espressif/**/sdkconfig.debug
/IDE/Espressif/**/sdkconfig.release
/IDE/Espressif/**/sdkconfig-debug
/IDE/Espressif/**/sdkconfig-release
# Always include Espressif makefiles (typically only used for ESP8266)
!/IDE/Espressif/**/Makefile
!/IDE/Espressif/**/component.mk
# Ignore all the example logs
/IDE/Espressif/ESP-IDF/examples/**/logs/*
# MPLAB # MPLAB
/IDE/MPLABX16/wolfssl.X/dist/default/ /IDE/MPLABX16/wolfssl.X/dist/default/
/IDE/MPLABX16/wolfssl.X/.generated_files /IDE/MPLABX16/wolfssl.X/.generated_files
@@ -445,18 +432,8 @@ MagicCrypto
# debian packaging # debian packaging
debian/changelog debian/changelog
debian/control debian/control
debian/rules
*.deb *.deb
# Ada/Alire files
wrapper/Ada/alire/
wrapper/Ada/config/
wrapper/Ada/lib/
wrapper/Ada/obj/
# Rust wrapper files
/wrapper/rust/*/target/
# PlatformIO # PlatformIO
/**/.pio /**/.pio
/**/.vscode/.browse.c_cpp.db* /**/.vscode/.browse.c_cpp.db*
@@ -464,9 +441,3 @@ wrapper/Ada/obj/
/**/.vscode/launch.json /**/.vscode/launch.json
/**/.vscode/ipch /**/.vscode/ipch
/**/sdkconfig.esp32dev /**/sdkconfig.esp32dev
# Autogenerated debug trace headers
wolfssl/debug-trace-error-codes.h
wolfssl/debug-untrace-error-codes.h
AGENTS.md

File diff suppressed because it is too large Load Diff

View File

@@ -34,7 +34,7 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
You must delete them, or cmake will refuse to work.") You must delete them, or cmake will refuse to work.")
endif() endif()
project(wolfssl VERSION 5.8.4 LANGUAGES C ASM) project(wolfssl VERSION 5.7.0 LANGUAGES C ASM)
# Set WOLFSSL_ROOT if not already defined # Set WOLFSSL_ROOT if not already defined
if ("${WOLFSSL_ROOT}" STREQUAL "") if ("${WOLFSSL_ROOT}" STREQUAL "")
@@ -49,16 +49,16 @@ endif()
# shared library versioning # shared library versioning
# increment if interfaces have been removed or changed # increment if interfaces have been removed or changed
set(WOLFSSL_LIBRARY_VERSION_FIRST 44) set(WOLFSSL_LIBRARY_VERSION_FIRST 42)
# increment if interfaces have been added # increment if interfaces have been added
# set to zero if WOLFSSL_LIBRARY_VERSION_FIRST is incremented # set to zero if WOLFSSL_LIBRARY_VERSION_FIRST is incremented
set(WOLFSSL_LIBRARY_VERSION_SECOND 0) set(WOLFSSL_LIBRARY_VERSION_SECOND 1)
# increment if source code has changed # increment if source code has changed
# set to zero if WOLFSSL_LIBRARY_VERSION_FIRST is incremented or # set to zero if WOLFSSL_LIBRARY_VERSION_FIRST is incremented or
# WOLFSSL_LIBRARY_VERSION_SECOND is incremented # WOLFSSL_LIBRARY_VERSION_SECOND is incremented
set(WOLFSSL_LIBRARY_VERSION_THIRD 1) set(WOLFSSL_LIBRARY_VERSION_THIRD 0)
set(LIBTOOL_FULL_VERSION ${WOLFSSL_LIBRARY_VERSION_FIRST}.${WOLFSSL_LIBRARY_VERSION_SECOND}.${WOLFSSL_LIBRARY_VERSION_THIRD}) set(LIBTOOL_FULL_VERSION ${WOLFSSL_LIBRARY_VERSION_FIRST}.${WOLFSSL_LIBRARY_VERSION_SECOND}.${WOLFSSL_LIBRARY_VERSION_THIRD})
@@ -66,9 +66,6 @@ set(WOLFSSL_DEFINITIONS)
set(WOLFSSL_LINK_LIBS) set(WOLFSSL_LINK_LIBS)
set(WOLFSSL_INCLUDE_DIRS) set(WOLFSSL_INCLUDE_DIRS)
# Initialize pkg-config private variables
set(PC_LIBS_PRIVATE "")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/functions.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/functions.cmake)
@@ -127,10 +124,6 @@ check_function_exists("memset" HAVE_MEMSET)
check_function_exists("socket" HAVE_SOCKET) check_function_exists("socket" HAVE_SOCKET)
check_function_exists("strftime" HAVE_STRFTIME) check_function_exists("strftime" HAVE_STRFTIME)
check_function_exists("__atomic_fetch_add" HAVE_C___ATOMIC) check_function_exists("__atomic_fetch_add" HAVE_C___ATOMIC)
check_function_exists("getpid" HAVE_GETPID)
include(CheckSymbolExists)
check_symbol_exists(isascii "ctype.h" HAVE_ISASCII)
include(CheckTypeSize) include(CheckTypeSize)
@@ -138,7 +131,6 @@ check_type_size("__uint128_t" __UINT128_T)
check_type_size("long long" SIZEOF_LONG_LONG) check_type_size("long long" SIZEOF_LONG_LONG)
check_type_size("long" SIZEOF_LONG) check_type_size("long" SIZEOF_LONG)
check_type_size("time_t" SIZEOF_TIME_T) check_type_size("time_t" SIZEOF_TIME_T)
check_type_size("uintptr_t" HAVE_UINTPTR_T)
# By default, HAVE___UINT128_T gets defined as TRUE, # By default, HAVE___UINT128_T gets defined as TRUE,
# but we want it as 1. # but we want it as 1.
@@ -160,14 +152,9 @@ endif()
# Thread local storage # Thread local storage
include(CheckCSourceCompiles) include(CheckCSourceCompiles)
if(CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom") set(TLS_KEYWORDS "__thread" "__declspec(thread)")
if(CMAKE_SYSTEM_NAME STREQUAL "Windows") foreach(TLS_KEYWORD IN LISTS TLS_KEYWORDS)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_THREAD_LS") set(TLS_CODE "#include <stdlib.h>
endif()
else()
set(TLS_KEYWORDS "__thread" "__declspec(thread)")
foreach(TLS_KEYWORD IN LISTS TLS_KEYWORDS)
set(TLS_CODE "#include <stdlib.h>
static void foo(void) { static void foo(void) {
static ${TLS_KEYWORD} int bar\; static ${TLS_KEYWORD} int bar\;
exit(1)\; exit(1)\;
@@ -176,22 +163,21 @@ else()
int main() { int main() {
return 0\; return 0\;
}" }"
) )
check_c_source_compiles(${TLS_CODE} THREAD_LS_ON) check_c_source_compiles(${TLS_CODE} THREAD_LS_ON)
if(THREAD_LS_ON) if(THREAD_LS_ON)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_THREAD_LS") list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_THREAD_LS")
break() break()
else() else()
# THREAD_LS_ON is cached after each call to # THREAD_LS_ON is cached after each call to
# check_c_source_compiles, and the function # check_c_source_compiles, and the function
# won't run subsequent times if the variable # won't run subsequent times if the variable
# is in the cache. To make it run again, we # is in the cache. To make it run again, we
# need to remove the variable from the cache. # need to remove the variable from the cache.
unset(THREAD_LS_ON CACHE) unset(THREAD_LS_ON CACHE)
endif() endif()
endforeach() endforeach()
endif()
# TODO: AX_PTHREAD does a lot. Need to implement the # TODO: AX_PTHREAD does a lot. Need to implement the
# rest of its logic. # rest of its logic.
@@ -211,20 +197,13 @@ find_package(Threads)
# Example for map file and custom linker script # Example for map file and custom linker script
#set(CMAKE_EXE_LINKER_FLAGS " -Xlinker -Map=output.map -T\"${CMAKE_CURRENT_SOURCE_DIR}/linker.ld\"") #set(CMAKE_EXE_LINKER_FLAGS " -Xlinker -Map=output.map -T\"${CMAKE_CURRENT_SOURCE_DIR}/linker.ld\"")
message(STATUS "C Compiler ID: ${CMAKE_C_COMPILER_ID}")
if(DEFINED WARNING_C_FLAGS) if(DEFINED WARNING_C_FLAGS)
set(CMAKE_C_FLAGS "${WARNING_C_FLAGS} ${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "${WARNING_C_FLAGS} ${CMAKE_C_FLAGS}")
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -wx -wcd=202")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_HAVE_MIN -DWOLFSSL_HAVE_MAX -DNO_WRITEV")
elseif(WIN32) elseif(WIN32)
# Windows cl.exe does not support the -Wextra, -Wno-unused and -Werror flags. # Windows cl.exe does not support the -Wextra, -Wno-unused and -Werror flags.
set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
else() else()
set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused -Werror ${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused -Werror ${CMAKE_C_FLAGS}")
endif() endif()
#################################################### ####################################################
@@ -284,28 +263,7 @@ add_option("WOLFSSL_DEBUG"
"no" "yes;no") "no" "yes;no")
if(WOLFSSL_DEBUG) if(WOLFSSL_DEBUG)
# Optional variable inspection set(CMAKE_C_FLAGS "-g ${CMAKE_C_FLAGS}")
if (0)
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
message(STATUS "")
message(STATUS "ALL VARIABLES BEGIN")
message(STATUS "")
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
message(STATUS "")
message(STATUS "ALL VARIABLES END")
message(STATUS "")
endif()
if (CMAKE_C_COMPILER_ID STREQUAL "Watcom" OR CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom" OR CMAKE_GENERATOR STREQUAL "Watcom WMake")
# Open Watcom v2 does not support -g debugging
message(STATUS "Detected Watcom compiler, using CMAKE_C_FLAGS_DEBUG -d2")
set(CMAKE_C_FLAGS_DEBUG "-d2 ${CMAKE_C_FLAGS_DEBUG}")
else()
set(CMAKE_C_FLAGS "-g ${CMAKE_C_FLAGS}")
endif()
list(APPEND WOLFSSL_DEFINITIONS list(APPEND WOLFSSL_DEFINITIONS
"-DDEBUG_WOLFSSL" "-DDEBUG_WOLFSSL"
"-DDEBUG") "-DDEBUG")
@@ -322,10 +280,10 @@ if(NOT WOLFSSL_SINGLE_THREADED)
if(CMAKE_USE_PTHREADS_INIT) if(CMAKE_USE_PTHREADS_INIT)
list(APPEND WOLFSSL_LINK_LIBS Threads::Threads) list(APPEND WOLFSSL_LINK_LIBS Threads::Threads)
set(HAVE_PTHREAD 1) set(HAVE_PTHREAD 1)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PTHREAD") list(APPEND WOLFSSL_DEFINITIONS
"-DHAVE_PTHREAD"
"-D_POSIX_THREADS")
endif() endif()
else()
list(APPEND WOLFSSL_DEFINITIONS "-DSINGLE_THREADED")
endif() endif()
# DTLS-SRTP # DTLS-SRTP
@@ -459,18 +417,16 @@ if(WOLFSSL_CURL)
set(WOLFSSL_MD4 "yes") set(WOLFSSL_MD4 "yes")
set(WOLFSSL_DES3 "yes") set(WOLFSSL_DES3 "yes")
set(WOLFSSL_ALPN "yes") set(WOLFSSL_ALPN "yes")
set(WOLFSSL_EX_DATA "yes")
set(WOLFSSL_WOLFSSH "yes")
set(WOLFSSL_OPENSSLEXTRA "yes") set(WOLFSSL_OPENSSLEXTRA "yes")
set(WOLFSSL_CRL "yes") set(WOLFSSL_CRL "yes")
set(WOLFSSL_OCSP "yes") set(WOLFSSL_OCSP "yes")
set(WOLFSSL_OCSPSTAPLING "yes") set(WOLFSSL_OCSPSTAPLING "yes")
set(WOLFSSL_OCSPSTAPLING_V2 "yes") set(WOLFSSL_OCSPSTAPLING_V2 "yes")
# Note: OCSP sets requisite HAVE_TLS_EXTENSIONS and HAVE_CERTIFICATE_STATUS_REQUEST(_V2)
set(WOLFSSL_SNI "yes") set(WOLFSSL_SNI "yes")
set(WOLFSSL_ALT_CERT_CHAINS "yes") set(WOLFSSL_ALT_CERT_CHAINS "yes")
set(WOLFSSL_IP_ALT_NAME "yes") set(WOLFSSL_IP_ALT_NAME "yes")
set(WOLFSSL_SESSION_TICKET "yes") set(WOLFSSL_SESSION_TICKET "yes")
set(WOLFSSL_WOLFSSH "yes")
list(APPEND WOLFSSL_DEFINITIONS list(APPEND WOLFSSL_DEFINITIONS
"-DNO_SESSION_CACHE_REF" "-DWOLFSSL_DES_ECB") "-DNO_SESSION_CACHE_REF" "-DWOLFSSL_DES_ECB")
endif() endif()
@@ -481,7 +437,7 @@ add_option(WOLFSSL_ALPN
"no" "yes;no") "no" "yes;no")
if(WOLFSSL_ALPN) if(WOLFSSL_ALPN)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ALPN" "-DHAVE_TLS_EXTENSIONS") list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ALPN" "-DHAVE_TLS_EXTENSIONS")
endif() endif()
# altcertchains # altcertchains
@@ -580,15 +536,6 @@ if (WOLFSSL_OPENSSLALL)
"-DWOLFSSL_ERROR_CODE_OPENSSL" "-DWOLFSSL_CERT_NAME_ALL") "-DWOLFSSL_ERROR_CODE_OPENSSL" "-DWOLFSSL_CERT_NAME_ALL")
endif() endif()
add_option(WOLFSSL_NO_STUB
"Removes OpenSSL compatibility stub functions (default: disabled)"
"no" "yes;no")
if (WOLFSSL_NO_STUB)
list(APPEND WOLFSSL_DEFINITIONS
"-DNO_WOLFSSL_STUB")
endif()
# TODO: - IPv6 test apps # TODO: - IPv6 test apps
set(WOLFSSL_SLOW_MATH "yes") set(WOLFSSL_SLOW_MATH "yes")
@@ -598,23 +545,9 @@ add_option(WOLFSSL_OQS
"Enable integration with the OQS (Open Quantum Safe) liboqs library (default: disabled)" "Enable integration with the OQS (Open Quantum Safe) liboqs library (default: disabled)"
"no" "yes;no") "no" "yes;no")
# ML-KEM/Kyber # Kyber
add_option(WOLFSSL_MLKEM add_option(WOLFSSL_KYBER
"Enable the wolfSSL PQ ML-KEM library (default: disabled)" "Enable the wolfSSL PQ Kyber library (default: disabled)"
"no" "yes;no")
# Dilithium
add_option(WOLFSSL_DILITHIUM
"Enable the wolfSSL PQ Dilithium (ML-DSA) implementation (default: disabled)"
"no" "yes;no")
# LMS
add_option(WOLFSSL_LMS
"Enable the PQ LMS Stateful Hash-based Signature Scheme (default: disabled)"
"no" "yes;no")
add_option(WOLFSSL_LMSSHA256192
"Enable the LMS SHA_256_192 truncated variant (default: disabled)"
"no" "yes;no") "no" "yes;no")
# Experimental features # Experimental features
@@ -630,7 +563,7 @@ if (WOLFSSL_EXPERIMENTAL)
# check if any experimental features are also enabled: # check if any experimental features are also enabled:
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 0) set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 0)
set_wolfssl_definitions("WOLFSSL_EXPERIMENTAL_SETTINGS" RESULT) set_wolfssl_definitions("WOLFSSL_EXPERIMENTAL_SETTINGS" RESUlT)
# Checking for experimental feature: OQS # Checking for experimental feature: OQS
message(STATUS "Looking for WOLFSSL_OQS") message(STATUS "Looking for WOLFSSL_OQS")
@@ -645,9 +578,9 @@ if (WOLFSSL_EXPERIMENTAL)
list(APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY}) list(APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY})
list(APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR}) list(APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR})
set_wolfssl_definitions("HAVE_LIBOQS" RESULT) set_wolfssl_definitions("HAVE_LIBOQS" RESUlT)
set_wolfssl_definitions("HAVE_TLS_EXTENSIONS" RESULT) set_wolfssl_definitions("HAVE_TLS_EXTENSIONS" RESUlT)
set_wolfssl_definitions("OPENSSL_EXTRA" RESULT) set_wolfssl_definitions("OPENSSL_EXTRA" RESUlT)
else() else()
message(STATUS "Checking OQS - not found") message(STATUS "Checking OQS - not found")
@@ -657,75 +590,20 @@ if (WOLFSSL_EXPERIMENTAL)
message(STATUS "Looking for WOLFSSL_OQS - not found") message(STATUS "Looking for WOLFSSL_OQS - not found")
endif() endif()
# Checking for experimental feature: WOLFSSL_MLKEM # Checking for experimental feature: Kyber
message(STATUS "Looking for WOLFSSL_MLKEM") message(STATUS "Looking for WOLFSSL_KYBER")
if (WOLFSSL_MLKEM) if (WOLFSSL_KYBER)
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1) set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
message(STATUS "Automatically set related requirements for ML-KEM:") message(STATUS "Automatically set related requirements for Kyber:")
add_definitions("-DWOLFSSL_HAVE_MLKEM") set_wolfssl_definitions("WOLFSSL_HAVE_KYBER" RESUlT)
add_definitions("-DWOLFSSL_WC_MLKEM") set_wolfssl_definitions("WOLFSSL_WC_KYBER" RESUlT)
add_definitions("-DWOLFSSL_SHA3") set_wolfssl_definitions("WOLFSSL_SHA3" RESUlT)
add_definitions("-DWOLFSSL_SHAKE128") set_wolfssl_definitions("WOLFSSL_SHAKE128" RESUlT)
add_definitions("-DWOLFSSL_SHAKE256") set_wolfssl_definitions("WOLFSSL_SHAKE256" RESUlT)
message(STATUS "Looking for WOLFSSL_KYBER - found")
set_wolfssl_definitions("WOLFSSL_HAVE_MLKEM" RESULT)
set_wolfssl_definitions("WOLFSSL_WC_MLKEM" RESULT)
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
message(STATUS "Looking for WOLFSSL_MLKEM - found")
else() else()
message(STATUS "Looking for WOLFSSL_MLKEM - not found") message(STATUS "Looking for WOLFSSL_KYBER - not found")
endif()
# Checking for experimental feature: WOLFSSL_LMS
message(STATUS "Looking for WOLFSSL_LMS")
if (WOLFSSL_LMS)
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 2)
message(STATUS "Automatically set related requirements for LMS")
add_definitions("-DWOLFSSL_HAVE_LMS")
add_definitions("-DWOLFSSL_WC_LMS")
set_wolfssl_definitions("WOLFSSL_HAVE_LMS" RESULT)
set_wolfssl_definitions("WOLFSSL_WC_LMS" RESULT)
message(STATUS "Looking for WOLFSSL_LMS - found")
# Checking for experimental feature: WOLFSSL_LMSSHA256192
if (WOLFSSL_LMSSHA256192)
message(STATUS "Automatically set related requirements for LMS SHA256-192")
add_definitions("-DWOLFSSL_LMS_SHA256_192")
add_definitions("-DWOLFSSL_NO_LMS_SHA256_256")
set_wolfssl_definitions("WOLFSSL_LMS_SHA256_192" RESULT)
set_wolfssl_definitions("WOLFSSL_NO_LMS_SHA256_256" RESULT)
message(STATUS "Looking for WOLFSSL_LMSSHA256192 - found")
else()
message(STATUS "Looking for WOLFSSL_LMSSHA256192 - not found")
endif()
else()
message(STATUS "Looking for WOLFSSL_LMS - not found")
endif()
# Checking for experimental feature: Dilithium
message(STATUS "Looking for WOLFSSL_DILITHIUM")
if (WOLFSSL_DILITHIUM)
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
message(STATUS "Automatically set related requirements for Dilithium:")
add_definitions("-DHAVE_DILITHIUM")
add_definitions("-DWOLFSSL_WC_DILITHIUM")
add_definitions("-DWOLFSSL_SHA3")
add_definitions("-DWOLFSSL_SHAKE128")
add_definitions("-DWOLFSSL_SHAKE256")
message(STATUS "Automatically set related requirements for Dilithium:")
set_wolfssl_definitions("HAVE_DILITHIUM" RESULT)
set_wolfssl_definitions("WOLFSSL_WC_DILITHIUM" RESULT)
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
message(STATUS "Looking for WOLFSSL_DILITHIUM - found")
else()
message(STATUS "Looking for WOLFSSL_DILITHIUM - not found")
endif() endif()
# Other experimental feature detection can be added here... # Other experimental feature detection can be added here...
@@ -738,36 +616,21 @@ if (WOLFSSL_EXPERIMENTAL)
endif() endif()
# Sanity checks # Sanity checks
if(WOLFSSL_OQS AND WOLFSSL_MLKEM) if(WOLFSSL_OQS AND WOLFSSL_KYBER)
message(FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_MLKEM at the same time.") message(FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_KYBER at the same time.")
endif()
if(WOLFSSL_OQS AND WOLFSSL_DILITHIUM)
message(FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_DILITHIUM at the same time.")
endif() endif()
else() else()
# Experimental mode not enabled, but were any experimental features enabled? Error out if so: # Experimental mode not enabled, but were any experimental features enabled? Error out if so:
message(STATUS "Looking for WOLFSSL_EXPERIMENTAL - not found") message(STATUS "Looking for WOLFSSL_EXPERIMENTAL - not found")
if (WOLFSSL_OQS) if (WOLFSSL_OQS)
message(FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time.") message(FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time.")
endif() endif()
if(WOLFSSL_MLKEM) if(WOLFSSL_KYBER)
message(FATAL_ERROR "Error: WOLFSSL_MLKEM requires WOLFSSL_EXPERIMENTAL at this time.") message(FATAL_ERROR "Error: WOLFSSL_KYBER requires WOLFSSL_EXPERIMENTAL at this time.")
endif()
if(WOLFSSL_DILITHIUM)
message(FATAL_ERROR "Error: WOLFSSL_DILITHIUM requires WOLFSSL_EXPERIMENTAL at this time.")
endif() endif()
endif() endif()
# LMS
add_option(WOLFSSL_LMS
"Enable the wolfSSL LMS implementation (default: disabled)"
"no" "yes;no")
# XMSS
add_option(WOLFSSL_XMSS
"Enable the wolfSSL XMSS implementation (default: disabled)"
"no" "yes;no")
# TODO: - Lean PSK # TODO: - Lean PSK
# - Lean TLS # - Lean TLS
# - Low resource # - Low resource
@@ -781,6 +644,8 @@ add_option(WOLFSSL_XMSS
# - Atomic user record layer # - Atomic user record layer
# - Public key callbacks # - Public key callbacks
# - Microchip/Atmel CryptoAuthLib # - Microchip/Atmel CryptoAuthLib
# - XMSS
# - LMS
# - dual-certs # - dual-certs
# AES-CBC # AES-CBC
@@ -855,8 +720,7 @@ add_option("WOLFSSL_AESCTR"
if(WOLFSSL_OPENVPN OR if(WOLFSSL_OPENVPN OR
WOLFSSL_LIBSSH2 OR WOLFSSL_LIBSSH2 OR
WOLFSSL_AESSIV OR WOLFSSL_AESSIV)
WOLFSSL_CLU)
override_cache(WOLFSSL_AESCTR "yes") override_cache(WOLFSSL_AESCTR "yes")
endif() endif()
@@ -996,7 +860,7 @@ endif()
# - SEP # - SEP
add_option("WOLFSSL_KEYGEN" add_option("WOLFSSL_KEYGEN"
"Enable key generation (default: disabled)" "Enable key generation (default: disabled)])"
"no" "yes;no") "no" "yes;no")
add_option("WOLFSSL_CERTGEN" add_option("WOLFSSL_CERTGEN"
@@ -1070,64 +934,13 @@ if(WOLFSSL_ECC)
endif() endif()
endif() endif()
# ECCSI # TODO: - ECC custom curves
add_option("WOLFSSL_ECCSI" # - Compressed key
"Enable ECCSI (default: disabled)"
"no" "yes;no")
if(WOLFSSL_ECCSI)
if (NOT WOLFSSL_ECC)
message(FATAL_ERROR "cannot enable ECCSI without enabling ECC.")
endif()
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFCRYPT_HAVE_ECCSI -DWOLFSSL_PUBLIC_MP")
endif()
# SAKKE
add_option("WOLFSSL_SAKKE"
"Enable SAKKE (default: disabled)"
"no" "yes;no")
if(WOLFSSL_SAKKE)
if (NOT WOLFSSL_ECC)
message(FATAL_ERROR "cannot enable SAKKE without enabling ECC.")
endif()
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFCRYPT_HAVE_SAKKE")
endif()
# SipHash
add_option("WOLFSSL_SIPHASH"
"Enable SipHash (default: disabled)"
"no" "yes;no")
if(WOLFSSL_SIPHASH)
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SIPHASH")
endif()
# TODO: - Compressed key
# - FP ECC, fixed point cache ECC # - FP ECC, fixed point cache ECC
# - ECC encrypt # - ECC encrypt
# - PSK # - PSK
# - Single PSK identity # - Single PSK identity
# ECC custom curves
add_option("WOLFSSL_ECCCUSTCURVES"
"Enable ECC Custom Curves (default: disabled)"
"no" "yes;no;all")
if(WOLFSSL_ECCCUSTCURVES)
if("${WOLFSSL_ECCCUSTCURVES}" STREQUAL "all")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ECC_SECPR2")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ECC_SECPR3")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ECC_BRAINPOOL")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ECC_KOBLITZ")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ECC_CDH")
endif()
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_CUSTOM_CURVES")
endif()
# CURVE25519 # CURVE25519
set(WOLFSSL_CURVE25519_SMALL "no") set(WOLFSSL_CURVE25519_SMALL "no")
add_option("WOLFSSL_CURVE25519" add_option("WOLFSSL_CURVE25519"
@@ -1158,7 +971,7 @@ add_option("WOLFSSL_ED25519"
"Enable ED25519 (default: disabled)" "Enable ED25519 (default: disabled)"
"no" "yes;no") "no" "yes;no")
if(WOLFSSL_OPENSSH OR WOLFSSL_CLU) if(WOLFSSL_OPENSSH)
override_cache(WOLFSSL_ED25519 "yes") override_cache(WOLFSSL_ED25519 "yes")
endif() endif()
@@ -1249,8 +1062,8 @@ endif()
# Old TLS # Old TLS
add_option("WOLFSSL_OLD_TLS" add_option("WOLFSSL_OLD_TLS"
"Enable old TLS versions < 1.2 (default: disabled)" "Enable old TLS versions < 1.2 (default: enabled)"
"no" "yes;no") "yes" "yes;no")
if(NOT WOLFSSL_OLD_TLS) if(NOT WOLFSSL_OLD_TLS)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_OLD_TLS") list(APPEND WOLFSSL_DEFINITIONS "-DNO_OLD_TLS")
@@ -1288,7 +1101,8 @@ if(NOT WOLFSSL_MEMORY)
else() else()
# turn off memory cb if leanpsk or leantls on # turn off memory cb if leanpsk or leantls on
if(WOLFSSL_LEAN_PSK OR WOLFSSL_LEAN_TLS) if(WOLFSSL_LEAN_PSK OR WOLFSSL_LEAN_TLS)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_WOLFSSL_MEMORY") # but don't turn on NO_WOLFSSL_MEMORY because using own
override_cache(WOLFSSL_MEMORY "no")
endif() endif()
endif() endif()
@@ -1501,25 +1315,17 @@ if(WOLFSSL_OPENSSH OR WOLFSSL_WPAS)
endif() endif()
# MD5 # MD5
set(WOLFSSL_MD5_HELP_STRING "Enable MD5 (default: disabled)") set(WOLFSSL_MD5_HELP_STRING "Enable MD5 (default: enabled)")
add_option("WOLFSSL_MD5" ${WOLFSSL_MD5_HELP_STRING} "no" "yes;no") add_option("WOLFSSL_MD5" ${WOLFSSL_MD5_HELP_STRING} "yes" "yes;no")
if(WOLFSSL_WPAS OR
WOLFSSL_HAPROXY OR
WOLFSSL_NGINX OR
WOLFSSL_OPENSSH OR
WOLFSSL_OPENSSLEXTRA OR
WOLFSSL_OPENVPN OR
WOLFSSL_OLD_TLS OR
WOLFSSL_FORTRESS OR
WOLFSSL_LIGHTY OR
WOLFSSL_DES3 OR
WOLFSSL_OPENSSLALL)
override_cache(WOLFSSL_MD5 "yes")
endif()
if(NOT WOLFSSL_MD5) if(NOT WOLFSSL_MD5)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_MD5" "-DNO_OLD_TLS") list(APPEND WOLFSSL_DEFINITIONS "-DNO_MD5" "-DNO_OLD_TLS")
else()
# turn off MD5 if leanpsk or leantls on
if(WOLFSSL_LEAN_PSK OR WOLFSSL_LEAN_TLS)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_MD5" "-DNO_OLD_TLS")
override_cache(WOLFSSL_MD5 "no")
endif()
endif() endif()
# SHA # SHA
@@ -1696,14 +1502,6 @@ if(NOT WOLFSSL_INLINE)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_INLINE") list(APPEND WOLFSSL_DEFINITIONS "-DNO_INLINE")
endif() endif()
add_option("WOLFSSL_ARMASM_INLINE"
"Enable ARM assembly inline functions (default: disabled)"
"no" "yes;no")
if (WOLFSSL_ARMASM_INLINE)
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_ARMASM_INLINE")
endif()
# TODO: # TODO:
# - CRL monitor # - CRL monitor
# - User crypto # - User crypto
@@ -1735,15 +1533,6 @@ add_option(WOLFSSL_SNI ${WOLFSSL_SNI_HELP_STRING} ${SNI_DEFAULT} "yes;no")
set(WOLFSSL_TLSX_HELP_STRING "Enable all TLS Extensions (default: disabled)") set(WOLFSSL_TLSX_HELP_STRING "Enable all TLS Extensions (default: disabled)")
add_option(WOLFSSL_TLSX ${WOLFSSL_TLSX_HELP_STRING} "no" "yes;no") add_option(WOLFSSL_TLSX ${WOLFSSL_TLSX_HELP_STRING} "no" "yes;no")
add_option(WOLFSSL_EX_DATA
"Enable app data (default: disabled)"
"no" "yes;no")
if (WOLFSSL_EX_DATA)
list(APPEND WOLFSSL_DEFINITIONS
"-DHAVE_EX_DATA")
endif()
# Supported elliptic curves extensions # Supported elliptic curves extensions
add_option("WOLFSSL_SUPPORTED_CURVES" add_option("WOLFSSL_SUPPORTED_CURVES"
"Enable Supported Elliptic Curves (default: enabled)" "Enable Supported Elliptic Curves (default: enabled)"
@@ -1849,9 +1638,6 @@ add_option(WOLFSSL_PKCS7 ${WOLFSSL_PKCS7_HELP_STRING} "no" "yes;no")
set(WOLFSSL_TPM_HELP_STRING "Enable wolfTPM options (default: disabled)") set(WOLFSSL_TPM_HELP_STRING "Enable wolfTPM options (default: disabled)")
add_option(WOLFSSL_TPM ${WOLFSSL_TPM_HELP_STRING} "no" "yes;no") add_option(WOLFSSL_TPM ${WOLFSSL_TPM_HELP_STRING} "no" "yes;no")
set(WOLFSSL_CLU_HELP_STRING "Enable wolfCLU options (default: disabled)")
add_option(WOLFSSL_CLU ${WOLFSSL_CLU_HELP_STRING} "no" "yes;no")
set(WOLFSSL_AESKEYWRAP_HELP_STRING "Enable AES key wrap support (default: disabled)") set(WOLFSSL_AESKEYWRAP_HELP_STRING "Enable AES key wrap support (default: disabled)")
add_option(WOLFSSL_AESKEYWRAP ${WOLFSSL_AESKEYWRAP_HELP_STRING} "no" "yes;no") add_option(WOLFSSL_AESKEYWRAP ${WOLFSSL_AESKEYWRAP_HELP_STRING} "no" "yes;no")
@@ -1934,16 +1720,6 @@ if(NOT WOLFSSL_PKCS12)
list(APPEND WOLFSSL_DEFINITIONS "-DNO_PKCS12") list(APPEND WOLFSSL_DEFINITIONS "-DNO_PKCS12")
endif() endif()
# PKCS#11
add_option("WOLFSSL_PKCS11"
"Enable PKCS#11 (default: disabled)"
"no" "yes;no")
if(WOLFSSL_PKCS11 AND NOT WIN32)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PKCS11 -DHAVE_WOLF_BIGINT")
list(APPEND WOLFSSL_LINK_LIBS ${CMAKE_DL_LIBS})
endif()
# PWDBASED has to come after certservice since we want it on w/o explicit on # PWDBASED has to come after certservice since we want it on w/o explicit on
# PWDBASED # PWDBASED
@@ -2042,6 +1818,7 @@ add_option("WOLFSSL_CRYPT_TESTS_HELP"
"no" "yes;no") "no" "yes;no")
# TODO: - LIBZ # TODO: - LIBZ
# - PKCS#11
# - Cavium # - Cavium
# - Cavium V # - Cavium V
# - Cavium Octeon # - Cavium Octeon
@@ -2080,10 +1857,6 @@ add_option("WOLFSSL_CRYPTOCB"
"Enable crypto callbacks (default: disabled)" "Enable crypto callbacks (default: disabled)"
"no" "yes;no") "no" "yes;no")
add_option("WOLFSSL_CRYPTOCB_NO_SW_TEST"
"Disable crypto callback SW testing (default: disabled)"
"no" "yes;no")
add_option("WOLFSSL_PKCALLBACKS" add_option("WOLFSSL_PKCALLBACKS"
"Enable public key callbacks (default: disabled)" "Enable public key callbacks (default: disabled)"
"no" "yes;no") "no" "yes;no")
@@ -2140,7 +1913,10 @@ add_option("WOLFSSL_SYS_CA_CERTS"
"yes" "yes;no") "yes" "yes;no")
if(WOLFSSL_SYS_CA_CERTS) if(WOLFSSL_SYS_CA_CERTS)
if(APPLE) if(NOT WOLFSSL_FILESYSTEM)
message("Can't enable system CA certs without a filesystem.")
override_cache(WOLFSSL_SYS_CA_CERTS "no")
elseif(APPLE)
# Headers used for MacOS default system CA certs behavior. Only MacOS SDK will have this header # Headers used for MacOS default system CA certs behavior. Only MacOS SDK will have this header
check_include_file("Security/SecTrustSettings.h" HAVE_SECURITY_SECTRUSTSETTINGS_H) check_include_file("Security/SecTrustSettings.h" HAVE_SECURITY_SECTRUSTSETTINGS_H)
# Headers used for Apple native cert validation. All device SDKs should have these headers # Headers used for Apple native cert validation. All device SDKs should have these headers
@@ -2174,9 +1950,6 @@ if(WOLFSSL_SYS_CA_CERTS)
else() else()
message(FATAL_ERROR "Can't enable system CA certs without Apple Security.framework headers.") message(FATAL_ERROR "Can't enable system CA certs without Apple Security.framework headers.")
endif() endif()
elseif(NOT WIN32 AND NOT WOLFSSL_FILESYSTEM)
message("Can't enable system CA certs without a filesystem.")
override_cache(WOLFSSL_SYS_CA_CERTS "no")
endif() endif()
@@ -2203,26 +1976,6 @@ if(WOLFSSL_TPM)
override_cache(WOLFSSL_CERTEXT "yes") override_cache(WOLFSSL_CERTEXT "yes")
override_cache(WOLFSSL_PKCS7 "yes") override_cache(WOLFSSL_PKCS7 "yes")
override_cache(WOLFSSL_AESCFB "yes") override_cache(WOLFSSL_AESCFB "yes")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_ALLOW_ENCODING_CA_FALSE")
endif()
if(WOLFSSL_CLU)
override_cache(WOLFSSL_CERTGEN "yes")
override_cache(WOLFSSL_CERTREQ "yes")
override_cache(WOLFSSL_CERTEXT "yes")
override_cache(WOLFSSL_MD5 "yes")
override_cache(WOLFSSL_AESCTR "yes")
override_cache(WOLFSSL_KEYGEN "yes")
override_cache(WOLFSSL_OPENSSLALL "yes")
override_cache(WOLFSSL_ED25519 "yes")
override_cache(WOLFSSL_SHA512 "yes")
override_cache(WOLFSSL_DES3 "yes")
override_cache(WOLFSSL_PKCS7 "yes")
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_OID_ENCODING" "-DWOLFSSL_NO_ASN_STRICT" "-DWOLFSSL_ALT_NAMES")
# Add OPENSSL_ALL definition to ensure OpenSSL compatibility functions are available
list(APPEND WOLFSSL_DEFINITIONS "-DOPENSSL_ALL")
# Remove NO_DES3 from WOLFSSL_DEFINITIONS to ensure DES3 is enabled
list(REMOVE_ITEM WOLFSSL_DEFINITIONS "-DNO_DES3")
endif() endif()
if(WOLFSSL_AESCFB) if(WOLFSSL_AESCFB)
@@ -2307,10 +2060,6 @@ if(WOLFSSL_CRYPTOCB)
list(APPEND WOLFSSL_DEFINITIONS "-DWOLF_CRYPTO_CB") list(APPEND WOLFSSL_DEFINITIONS "-DWOLF_CRYPTO_CB")
endif() endif()
if(WOLFSSL_CRYPTOCB_NO_SW_TEST)
list(APPEND WOLFSSL_DEFINITIONS "-DWC_TEST_NO_CRYPTOCB_SW_TEST")
endif()
# Public Key Callbacks # Public Key Callbacks
if(WOLFSSL_PKCALLBACKS) if(WOLFSSL_PKCALLBACKS)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PK_CALLBACKS") list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PK_CALLBACKS")
@@ -2484,21 +2233,35 @@ if (ENABLE_SCCACHE AND (NOT WOLFSSL_SCCACHE_ALREADY_SET_FLAG))
endif() endif()
endif() endif()
add_option("WOLFSSL_KEYLOG_EXPORT"
"Enable insecure export of TLS secrets to an NSS keylog file (default: disabled)"
"no" "yes;no")
if(WOLFSSL_KEYLOG_EXPORT)
message(WARNING "Keylog export enabled -- Sensitive key data will be stored insecurely.")
list(APPEND WOLFSSL_DEFINITIONS
"-DSHOW_SECRETS"
"-DHAVE_SECRET_CALLBACK"
"-DWOLFSSL_SSLKEYLOGFILE"
"-DWOLFSSL_KEYLOG_EXPORT_WARNED")
endif()
file(REMOVE ${OPTION_FILE}) file(REMOVE ${OPTION_FILE})
file(APPEND ${OPTION_FILE} "/* wolfssl options.h\n")
file(APPEND ${OPTION_FILE} " * generated from configure options\n")
file(APPEND ${OPTION_FILE} " *\n")
file(APPEND ${OPTION_FILE} " * Copyright (C) 2006-2023 wolfSSL Inc.\n")
file(APPEND ${OPTION_FILE} " *\n")
file(APPEND ${OPTION_FILE} " * This file is part of wolfSSL. (formerly known as CyaSSL)\n")
file(APPEND ${OPTION_FILE} " *\n")
file(APPEND ${OPTION_FILE} " */\n\n")
file(APPEND ${OPTION_FILE} "#ifndef WOLFSSL_OPTIONS_H\n")
file(APPEND ${OPTION_FILE} "#define WOLFSSL_OPTIONS_H\n\n\n")
file(APPEND ${OPTION_FILE} "#ifdef __cplusplus\n")
file(APPEND ${OPTION_FILE} "extern \"C\" {\n")
file(APPEND ${OPTION_FILE} "#endif\n\n")
add_to_options_file("${WOLFSSL_DEFINITIONS}" "${OPTION_FILE}")
# CMAKE_C_FLAGS is just a string of space-separated flags to pass to the C
# compiler. We need to replace those spaces with semicolons in order to treat it
# as a CMake list.
string(REPLACE " " ";" CMAKE_C_FLAGS_LIST "${CMAKE_C_FLAGS}")
add_to_options_file("${CMAKE_C_FLAGS_LIST}" "${OPTION_FILE}")
file(APPEND ${OPTION_FILE} "\n#ifdef __cplusplus\n")
file(APPEND ${OPTION_FILE} "}\n")
file(APPEND ${OPTION_FILE} "#endif\n\n\n")
file(APPEND ${OPTION_FILE} "#endif /* WOLFSSL_OPTIONS_H */\n\n")
#################################################### ####################################################
# Library Target # Library Target
#################################################### ####################################################
@@ -2576,20 +2339,6 @@ if(WOLFSSL_ARIA)
message(STATUS "ARIA Check: WOLFSSL_LINK_LIBS = ${WOLFSSL_LINK_LIBS}") message(STATUS "ARIA Check: WOLFSSL_LINK_LIBS = ${WOLFSSL_LINK_LIBS}")
endif() endif()
foreach(DEF IN LISTS WOLFSSL_DEFINITIONS)
string(REGEX MATCH "^(-D)?([^=]+)(=(.*))?$" DEF_MATCH ${DEF})
if (NOT "${CMAKE_MATCH_4}" STREQUAL "")
set(${CMAKE_MATCH_2} ${CMAKE_MATCH_4})
# message("set(${CMAKE_MATCH_2} ${CMAKE_MATCH_4})")
else()
set(${CMAKE_MATCH_2} 1)
# message("set(${CMAKE_MATCH_2} 1)")
endif()
endforeach()
# If new build options are added please update the cmake/options.h.in
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.h.in ${OPTION_FILE})
set_target_properties(wolfssl set_target_properties(wolfssl
PROPERTIES PROPERTIES
SOVERSION ${WOLFSSL_LIBRARY_VERSION_FIRST} SOVERSION ${WOLFSSL_LIBRARY_VERSION_FIRST}
@@ -2626,24 +2375,17 @@ target_include_directories(wolfssl
target_link_libraries(wolfssl PUBLIC ${WOLFSSL_LINK_LIBS}) target_link_libraries(wolfssl PUBLIC ${WOLFSSL_LINK_LIBS})
if(CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom") if(WIN32)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows") # For Windows link ws2_32
target_link_libraries(wolfssl PUBLIC ws2_32 crypt32)
endif()
elseif (WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "^MSYS" OR ${CMAKE_SYSTEM_NAME} MATCHES "^MINGW")
# For Windows link required libraries
message("Building on Windows/MSYS/MINGW")
target_link_libraries(wolfssl PUBLIC target_link_libraries(wolfssl PUBLIC
ws2_32 crypt32 advapi32) $<$<PLATFORM_ID:Windows>:ws2_32 crypt32>)
elseif(APPLE) elseif(APPLE)
message("Building on Apple")
if(WOLFSSL_SYS_CA_CERTS) if(WOLFSSL_SYS_CA_CERTS)
target_link_libraries(wolfssl PUBLIC target_link_libraries(wolfssl PUBLIC
${CORE_FOUNDATION_FRAMEWORK} ${CORE_FOUNDATION_FRAMEWORK}
${SECURITY_FRAMEWORK}) ${SECURITY_FRAMEWORK})
endif() endif()
else() else()
message("Building on Linux (or other)")
if(WOLFSSL_DH AND NOT WOLFSSL_DH_CONST) if(WOLFSSL_DH AND NOT WOLFSSL_DH_CONST)
# DH requires math (m) library # DH requires math (m) library
target_link_libraries(wolfssl target_link_libraries(wolfssl
@@ -2695,14 +2437,12 @@ if(WOLFSSL_EXAMPLES)
PROPERTY RUNTIME_OUTPUT_DIRECTORY PROPERTY RUNTIME_OUTPUT_DIRECTORY
${WOLFSSL_OUTPUT_BASE}/examples/echoserver) ${WOLFSSL_OUTPUT_BASE}/examples/echoserver)
if(NOT WIN32 AND NOT WOLFSSL_SINGLE_THREADED) if(NOT WIN32)
# Build TLS benchmark example # Build TLS benchmark example
add_executable(tls_bench add_executable(tls_bench
${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c) ${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c)
target_link_libraries(tls_bench wolfssl) target_link_libraries(tls_bench wolfssl)
if(CMAKE_USE_PTHREADS_INIT) target_link_libraries(tls_bench Threads::Threads)
target_link_libraries(tls_bench Threads::Threads)
endif()
set_property(TARGET tls_bench set_property(TARGET tls_bench
PROPERTY RUNTIME_OUTPUT_DIRECTORY PROPERTY RUNTIME_OUTPUT_DIRECTORY
${WOLFSSL_OUTPUT_BASE}/examples/benchmark) ${WOLFSSL_OUTPUT_BASE}/examples/benchmark)
@@ -2711,102 +2451,19 @@ if(WOLFSSL_EXAMPLES)
# Build unit tests # Build unit tests
add_executable(unit_test add_executable(unit_test
tests/api.c tests/api.c
tests/api/test_md2.c tests/hash.c
tests/api/test_md4.c
tests/api/test_md5.c
tests/api/test_sha.c
tests/api/test_sha256.c
tests/api/test_sha512.c
tests/api/test_sha3.c
tests/api/test_blake2.c
tests/api/test_sm3.c
tests/api/test_ripemd.c
tests/api/test_hash.c
tests/api/test_hmac.c
tests/api/test_cmac.c
tests/api/test_des3.c
tests/api/test_chacha.c
tests/api/test_poly1305.c
tests/api/test_chacha20_poly1305.c
tests/api/test_camellia.c
tests/api/test_arc4.c
tests/api/test_rc2.c
tests/api/test_aes.c
tests/api/test_ascon.c
tests/api/test_sm4.c
tests/api/test_wc_encrypt.c
tests/api/test_random.c
tests/api/test_wolfmath.c
tests/api/test_rsa.c
tests/api/test_dsa.c
tests/api/test_dh.c
tests/api/test_ecc.c
tests/api/test_sm2.c
tests/api/test_curve25519.c
tests/api/test_ed25519.c
tests/api/test_curve448.c
tests/api/test_ed448.c
tests/api/test_mlkem.c
tests/api/test_mldsa.c
tests/api/test_signature.c
tests/api/test_dtls.c
tests/api/test_ocsp.c
tests/api/test_evp.c
tests/api/test_tls_ext.c
tests/api/test_tls.c
tests/api/test_x509.c
tests/api/test_asn.c
tests/api/test_pkcs7.c
tests/api/test_pkcs12.c
tests/api/test_ossl_asn1.c
tests/api/test_ossl_bio.c
tests/api/test_ossl_bn.c
tests/api/test_ossl_cipher.c
tests/api/test_ossl_dh.c
tests/api/test_ossl_dgst.c
tests/api/test_ossl_dsa.c
tests/api/test_ossl_ec.c
tests/api/test_ossl_ecx.c
tests/api/test_ossl_mac.c
tests/api/test_ossl_rsa.c
tests/api/test_ossl_sk.c
tests/api/test_ossl_x509.c
tests/api/test_ossl_x509_ext.c
tests/api/test_ossl_x509_name.c
tests/api/test_ossl_x509_pk.c
tests/api/test_ossl_x509_vp.c
tests/api/test_ossl_x509_io.c
tests/api/test_ossl_x509_crypto.c
tests/api/test_ossl_x509_acert.c
tests/api/test_ossl_x509_info.c
tests/api/test_ossl_x509_str.c
tests/api/test_ossl_x509_lu.c
tests/api/test_ossl_pem.c
tests/api/test_ossl_rand.c
tests/api/test_ossl_obj.c
tests/api/test_ossl_p7p12.c
tests/api/test_evp_digest.c
tests/api/test_evp_cipher.c
tests/api/test_evp_pkey.c
tests/api/test_certman.c
tests/api/test_tls13.c
tests/srp.c tests/srp.c
tests/suites.c tests/suites.c
tests/w64wrapper.c tests/w64wrapper.c
tests/unit.c tests/unit.c
tests/quic.c tests/quic.c
tests/utils.c
testsuite/utils.c
examples/server/server.c examples/server/server.c
examples/client/client.c examples/client/client.c)
wolfcrypt/test/test.c)
target_include_directories(unit_test PRIVATE target_include_directories(unit_test PRIVATE
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR})
target_compile_options(unit_test PUBLIC "-DNO_MAIN_DRIVER") target_compile_options(unit_test PUBLIC "-DNO_MAIN_DRIVER")
target_link_libraries(unit_test wolfssl) target_link_libraries(unit_test wolfssl)
if(CMAKE_USE_PTHREADS_INIT) target_link_libraries(unit_test Threads::Threads)
target_link_libraries(unit_test Threads::Threads)
endif()
set_property(TARGET unit_test set_property(TARGET unit_test
PROPERTY RUNTIME_OUTPUT_DIRECTORY PROPERTY RUNTIME_OUTPUT_DIRECTORY
${WOLFSSL_OUTPUT_BASE}/tests/) ${WOLFSSL_OUTPUT_BASE}/tests/)
@@ -3056,29 +2713,16 @@ if(WOLFSSL_INSTALL)
set(includedir "\${prefix}/include") set(includedir "\${prefix}/include")
set(VERSION ${PROJECT_VERSION}) set(VERSION ${PROJECT_VERSION})
if(CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom") # Setting libm in Libs.private of wolfssl.pc.
# See "Link Libraries" in above about `m` insertion to LINK_LIBRARIES
get_target_property(_wolfssl_dep_libs wolfssl LINK_LIBRARIES)
list(FIND _wolfssl_dep_libs m _dep_libm)
if ("${_dep_libm}" GREATER -1)
set(LIBM -lm)
else() else()
# Setting libm in Libs.private of wolfssl.pc. set(LIBM)
# See "Link Libraries" in above about `m` insertion to LINK_LIBRARIES
get_target_property(_wolfssl_dep_libs wolfssl LINK_LIBRARIES)
list(FIND _wolfssl_dep_libs m _dep_libm)
if ("${_dep_libm}" GREATER -1)
set(LIBM -lm)
else()
set(LIBM)
endif()
endif() endif()
# Add required frameworks for static linking on Apple platforms
if(APPLE AND NOT BUILD_SHARED_LIBS)
if(WOLFSSL_SYS_CA_CERTS)
list(APPEND PC_LIBS_PRIVATE "-framework CoreFoundation" "-framework Security")
endif()
endif()
# Convert lists to space-separated strings for pkg-config
string(JOIN " " PC_LIBS_PRIVATE ${PC_LIBS_PRIVATE})
configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY) configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

View File

@@ -1,20 +0,0 @@
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 22,
"patch": 0
},
"configurePresets": [
{
"name": "vs2022-x64",
"displayName": "Visual Studio 2022 x64",
"generator": "Visual Studio 17 2022",
"architecture": "x64",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
}
]
}

View File

@@ -1,9 +0,0 @@
{
"configurations": [
{
"name": "No-CMake",
"generator": "Ninja",
"buildCommandArgs": "echo 'No build command'"
}
]
}

873
COPYING
View File

@@ -1,622 +1,281 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007 Version 2, June 1991
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
Preamble Preamble
The GNU General Public License is a free, copyleft license for The licenses for most software are designed to take away your
software and other kinds of works. freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
The licenses for most software and other practical works are designed software--to make sure the software is free for all its users. This
to take away your freedom to share and change the works. By contrast, General Public License applies to most of the Free Software
the GNU General Public License is intended to guarantee your freedom to Foundation's software and to any other program whose authors commit to
share and change all versions of a program--to make sure it remains free using it. (Some other Free Software Foundation software is covered by
software for all its users. We, the Free Software Foundation, use the the GNU Lesser General Public License instead.) You can apply it to
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you this service if you wish), that you receive source code or can get it
want it, that you can change the software or use pieces of it in new if you want it, that you can change the software or use pieces of it
free programs, and that you know you can do these things. in new free programs; and that you know you can do these things.
To protect your rights, we need to prevent others from denying you To protect your rights, we need to make restrictions that forbid
these rights or asking you to surrender the rights. Therefore, you have anyone to deny you these rights or to ask you to surrender the rights.
certain responsibilities if you distribute copies of the software, or if These restrictions translate to certain responsibilities for you if you
you modify it: responsibilities to respect the freedom of others. distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same gratis or for a fee, you must give the recipients all the rights that
freedoms that you received. You must make sure that they, too, receive you have. You must make sure that they, too, receive or can get the
or can get the source code. And you must show them these terms so they source code. And you must show them these terms so they know their
know their rights. rights.
Developers that use the GNU GPL protect your rights with two steps: We protect your rights with two steps: (1) copyright the software, and
(1) assert copyright on the software, and (2) offer you this License (2) offer you this license which gives you legal permission to copy,
giving you legal permission to copy, distribute and/or modify it. distribute and/or modify the software.
For the developers' and authors' protection, the GPL clearly explains Also, for each author's protection and ours, we want to make certain
that there is no warranty for this free software. For both users' and that everyone understands that there is no warranty for this free
authors' sake, the GPL requires that modified versions be marked as software. If the software is modified by someone else and passed on, we
changed, so that their problems will not be attributed erroneously to want its recipients to know that what they have is not the original, so
authors of previous versions. that any problems introduced by others will not reflect on the original
authors' reputations.
Some devices are designed to deny users access to install or run Finally, any free program is threatened constantly by software
modified versions of the software inside them, although the manufacturer patents. We wish to avoid the danger that redistributors of a free
can do so. This is fundamentally incompatible with the aim of program will individually obtain patent licenses, in effect making the
protecting users' freedom to change the software. The systematic program proprietary. To prevent this, we have made it clear that any
pattern of such abuse occurs in the area of products for individuals to patent must be licensed for everyone's free use or not licensed at all.
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
TERMS AND CONDITIONS GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. Definitions.
0. This License applies to any program or other work which contains
"This License" refers to version 3 of the GNU General Public License. a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
"Copyright" also means copyright-like laws that apply to other kinds of refers to any such program or work, and a "work based on the Program"
works, such as semiconductor masks. means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
"The Program" refers to any copyrightable work licensed under this either verbatim or with modifications and/or translated into another
License. Each licensee is addressed as "you". "Licensees" and language. (Hereinafter, translation is included without limitation in
"recipients" may be individuals or organizations. the term "modification".) Each licensee is addressed as "you".
To "modify" a work means to copy from or adapt all or part of the work Activities other than copying, distribution and modification are not
in a fashion requiring copyright permission, other than the making of an covered by this License; they are outside its scope. The act of
exact copy. The resulting work is called a "modified version" of the running the Program is not restricted, and the output from the Program
earlier work or a work "based on" the earlier work. is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
A "covered work" means either the unmodified Program or a work based Whether that is true depends on what the Program does.
on the Program.
1. You may copy and distribute verbatim copies of the Program's
To "propagate" a work means to do anything with it that, without source code as you receive it, in any medium, provided that you
permission, would make you directly or secondarily liable for conspicuously and appropriately publish on each copy an appropriate
infringement under applicable copyright law, except executing it on a copyright notice and disclaimer of warranty; keep intact all the
computer or modifying a private copy. Propagation includes copying, notices that refer to this License and to the absence of any warranty;
distribution (with or without modification), making available to the and give any other recipients of the Program a copy of this License
public, and in some countries other activities as well. along with the Program.
To "convey" a work means any kind of propagation that enables other You may charge a fee for the physical act of transferring a copy, and
parties to make or receive copies. Mere interaction with a user through you may at your option offer warranty protection in exchange for a fee.
a computer network, with no transfer of a copy, is not conveying.
2. You may modify your copy or copies of the Program or any portion
An interactive user interface displays "Appropriate Legal Notices" of it, thus forming a work based on the Program, and copy and
to the extent that it includes a convenient and prominently visible distribute such modifications or work under the terms of Section 1
feature that (1) displays an appropriate copyright notice, and (2) above, provided that you also meet all of these conditions:
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the a) You must cause the modified files to carry prominent notices
work under this License, and how to view a copy of this License. If stating that you changed the files and the date of any change.
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion. b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
1. Source Code. part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source c) If the modified program normally reads commands interactively
form of a work. when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
A "Standard Interface" means an interface that either is an official announcement including an appropriate copyright notice and a
standard defined by a recognized standards body, or, in the case of notice that there is no warranty (or else, saying that you provide
interfaces specified for a particular programming language, one that a warranty) and that users may redistribute the program under
is widely used among developers working in that language. these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
The "System Libraries" of an executable work include anything, other does not normally print such an announcement, your work based on
than the work as a whole, that (a) is included in the normal form of the Program is not required to print an announcement.)
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that These requirements apply to the modified work as a whole. If
Major Component, or to implement a Standard Interface for which an identifiable sections of that work are not derived from the Program,
implementation is available to the public in source code form. A and can be reasonably considered independent and separate works in
"Major Component", in this context, means a major essential component themselves, then this License, and its terms, do not apply to those
(kernel, window system, and so on) of the specific operating system sections when you distribute them as separate works. But when you
(if any) on which the executable work runs, or a compiler used to distribute the same sections as part of a whole which is a work based
produce the work, or an object code interpreter used to run it. on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
The "Corresponding Source" for a work in object code form means all entire whole, and thus to each and every part regardless of who wrote it.
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to Thus, it is not the intent of this section to claim rights or contest
control those activities. However, it does not include the work's your rights to work written entirely by you; rather, the intent is to
System Libraries, or general-purpose tools or generally available free exercise the right to control the distribution of derivative or
programs which are used unmodified in performing those activities but collective works based on the Program.
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for In addition, mere aggregation of another work not based on the Program
the work, and the source code for shared libraries and dynamically with the Program (or with a work based on the Program) on a volume of
linked subprograms that the work is specifically designed to require, a storage or distribution medium does not bring the other work under
such as by intimate data communication or control flow between those the scope of this License.
subprograms and other parts of the work.
3. You may copy and distribute the Program (or a work based on it,
The Corresponding Source need not include anything that users under Section 2) in object code or executable form under the terms of
can regenerate automatically from other parts of the Corresponding Sections 1 and 2 above provided that you also do one of the following:
Source.
a) Accompany it with the complete corresponding machine-readable
The Corresponding Source for a work in source code form is that source code, which must be distributed under the terms of Sections
same work. 1 and 2 above on a medium customarily used for software interchange; or,
2. Basic Permissions. b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
All rights granted under this License are granted for the term of cost of physically performing source distribution, a complete
copyright on the Program, and are irrevocable provided the stated machine-readable copy of the corresponding source code, to be
conditions are met. This License explicitly affirms your unlimited distributed under the terms of Sections 1 and 2 above on a medium
permission to run the unmodified Program. The output from running a customarily used for software interchange; or,
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your c) Accompany it with the information you received as to the offer
rights of fair use or other equivalent, as provided by copyright law. to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
You may make, run and propagate covered works that you do not received the program in object code or executable form with such
convey, without conditions so long as your license otherwise remains an offer, in accord with Subsection b above.)
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you The source code for a work means the preferred form of the work for
with facilities for running those works, provided that you comply with making modifications to it. For an executable work, complete source
the terms of this License in conveying all material for which you do code means all the source code for all modules it contains, plus any
not control copyright. Those thus making or running the covered works associated interface definition files, plus the scripts used to
for you must do so exclusively on your behalf, under your direction control compilation and installation of the executable. However, as a
and control, on terms that prohibit them from making any copies of special exception, the source code distributed need not include
your copyrighted material outside their relationship with you. anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
Conveying under any other circumstances is permitted solely under operating system on which the executable runs, unless that component
the conditions stated below. Sublicensing is not allowed; section 10 itself accompanies the executable.
makes it unnecessary.
If distribution of executable or object code is made by offering
3. Protecting Users' Legal Rights From Anti-Circumvention Law. access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
No covered work shall be deemed part of an effective technological distribution of the source code, even though third parties are not
measure under any applicable law fulfilling obligations under article compelled to copy the source along with the object code.
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such 4. You may not copy, modify, sublicense, or distribute the Program
measures. except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
When you convey a covered work, you waive any legal power to forbid void, and will automatically terminate your rights under this License.
circumvention of technological measures to the extent such circumvention However, parties who have received copies, or rights, from you under
is effected by exercising rights under this License with respect to this License will not have their licenses terminated so long as such
the covered work, and you disclaim any intention to limit operation or parties remain in full compliance.
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of 5. You are not required to accept this License, since you have not
technological measures. signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
4. Conveying Verbatim Copies. prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
You may convey verbatim copies of the Program's source code as you Program), you indicate your acceptance of this License to do so, and
receive it, in any medium, provided that you conspicuously and all its terms and conditions for copying, distributing or modifying
appropriately publish on each copy an appropriate copyright notice; the Program or works based on it.
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code; 6. Each time you redistribute the Program (or any work based on the
keep intact all notices of the absence of any warranty; and give all Program), the recipient automatically receives a license from the
recipients a copy of this License along with the Program. original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
You may charge any price or no price for each copy that you convey, restrictions on the recipients' exercise of the rights granted herein.
and you may offer support or warranty protection for a fee. You are not responsible for enforcing compliance by third parties to
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License. this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free 7. If, as a consequence of a court judgment or allegation of patent
patent license under the contributor's essential patent claims, to infringement or for any other reason (not limited to patent issues),
make, use, sell, offer for sale, import and otherwise run, modify and conditions are imposed on you (whether by court order, agreement or
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a excuse you from the conditions of this License. If you cannot
covered work so as to satisfy simultaneously your obligations under this distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may License and any other pertinent obligations, then as a consequence you
not convey it at all. For example, if you agree to terms that obligate you may not distribute the Program at all. For example, if a patent
to collect a royalty for further conveying from those to whom you convey license would not permit royalty-free redistribution of the Program by
the Program, the only way you could satisfy both those terms and this all those who receive copies directly or indirectly through you, then
License would be to refrain entirely from conveying the Program. the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
13. Use with the GNU Affero General Public License. If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
Notwithstanding any other provision of this License, you have It is not the purpose of this section to induce you to infringe any
permission to link or combine any covered work with a work licensed patents or other property right claims or to contest validity of any
under version 3 of the GNU Affero General Public License into a single such claims; this section has the sole purpose of protecting the
combined work, and to convey the resulting work. The terms of this integrity of the free software distribution system, which is
License will continue to apply to the part which is the covered work, implemented by public license practices. Many people have made
but the special requirements of the GNU Affero General Public License, generous contributions to the wide range of software distributed
section 13, concerning interaction through a network will apply to the through that system in reliance on consistent application of that
combination as such. system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
14. Revised Versions of this License. This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
The Free Software Foundation may publish revised and/or new versions of 8. If the distribution and/or use of the Program is restricted in
the GNU General Public License from time to time. Such new versions will certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to be similar in spirit to the present version, but may differ in detail to
address new problems or concerns. address new problems or concerns.
Each version is given a distinguishing version number. If the Each version is given a distinguishing version number. If the Program
Program specifies that a certain numbered version of the GNU General specifies a version number of this License which applies to it and "any
Public License "or any later version" applies to it, you have the later version", you have the option of following the terms and conditions
option of following the terms and conditions either of that numbered either of that version or of any later version published by the Free
version or of any later version published by the Free Software Software Foundation. If the Program does not specify a version number of
Foundation. If the Program does not specify a version number of the this License, you may choose any version ever published by the Free Software
GNU General Public License, you may choose any version ever published Foundation.
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future 10. If you wish to incorporate parts of the Program into other free
versions of the GNU General Public License can be used, that proxy's programs whose distribution conditions are different, write to the author
public statement of acceptance of a version permanently authorizes you to ask for permission. For software which is copyrighted by the Free
to choose that version for the Program. Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
Later license versions may give you additional or different NO WARRANTY
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty. 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
@@ -628,15 +287,15 @@ free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author> Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
@@ -644,31 +303,37 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License along
along with this program. If not, see <http://www.gnu.org/licenses/>. with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short If the program is interactive, make it output a short notice like this
notice like this when it starts in an interactive mode: when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author> Gnomovision version 69, Copyright (C) year name of author
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands parts of the General Public License. Of course, the commands you use may
might be different; for a GUI interface, you would use an "about box". be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or school, You should also get your employer (if you work as a programmer) or your
if any, to sign a "copyright disclaimer" for the program, if necessary. school, if any, to sign a "copyright disclaimer" for the program, if
For more information on this, and how to apply and follow the GNU GPL, see necessary. Here is a sample; alter the names:
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program Yoyodyne, Inc., hereby disclaims all copyright interest in the program
into proprietary programs. If your program is a subroutine library, you `Gnomovision' (which makes passes at compilers) written by James Hacker.
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General <signature of Ty Coon>, 1 April 1989
Public License instead of this License. But first, please read Ty Coon, President of Vice
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

File diff suppressed because it is too large Load Diff

View File

@@ -6,11 +6,11 @@ USER root
# Set timezone to UTC # Set timezone to UTC
RUN ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo UTC > /etc/timezone RUN ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo UTC > /etc/timezone
ARG DEPS_WOLFSSL="build-essential autoconf libtool clang clang-tools zlib1g-dev libuv1-dev libpam0g-dev valgrind git linux-headers-generic gcc-multilib g++-multilib libpcap-dev bubblewrap gdb iputils-ping lldb bsdmainutils netcat-traditional binutils-arm-linux-gnueabi binutils-aarch64-linux-gnu" ARG DEPS_WOLFSSL="build-essential autoconf libtool clang clang-tools zlib1g-dev libuv1-dev libpam0g-dev valgrind git linux-headers-generic gcc-multilib g++-multilib libpcap-dev bubblewrap gdb iputils-ping lldb bsdmainutils netcat binutils-arm-linux-gnueabi binutils-aarch64-linux-gnu"
ARG DEPS_LIBOQS="astyle cmake gcc ninja-build libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml valgrind git" ARG DEPS_LIBOQS="astyle cmake gcc ninja-build libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml valgrind git"
ARG DEPS_UDP_PROXY="wget libevent-dev" ARG DEPS_UDP_PROXY="wget libevent-dev"
ARG DEPS_TESTS="abi-dumper libcurl4-openssl-dev tcpdump libpsl-dev python3-pandas python3-tabulate libnl-genl-3-dev libcap-ng-dev python3-virtualenv curl jq" ARG DEPS_TESTS="abi-dumper libcurl4-openssl-dev tcpdump libpsl-dev python3-pandas python3-tabulate libnl-genl-3-dev libcap-ng-dev"
ARG DEPS_TOOLS="ccache clang-tidy maven libfile-util-perl android-tools-adb usbutils shellcheck" ARG DEPS_TOOLS="ccache clang-tidy maven"
RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \ RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \
&& apt install -y ${DEPS_WOLFSSL} ${DEPS_LIBOQS} ${DEPS_UDP_PROXY} ${DEPS_TESTS} ${DEPS_TOOLS} \ && apt install -y ${DEPS_WOLFSSL} ${DEPS_LIBOQS} ${DEPS_UDP_PROXY} ${DEPS_TESTS} ${DEPS_TOOLS} \
&& apt clean -y && rm -rf /var/lib/apt/lists/* && apt clean -y && rm -rf /var/lib/apt/lists/*
@@ -40,12 +40,10 @@ RUN cd /opt/sources && git clone --single-branch https://github.com/cisco/hash-s
# Install pkixssh to /opt/pkixssh for X509 interop testing with wolfSSH # Install pkixssh to /opt/pkixssh for X509 interop testing with wolfSSH
RUN mkdir /var/empty RUN mkdir /var/empty
RUN cd /opt/sources && wget -q -O- https://roumenpetrov.info/secsh/src/pkixssh-15.1.tar.gz | tar xzf - && cd pkixssh-15.1 && ./configure --prefix=/opt/pkixssh/ --exec-prefix=/opt/pkixssh/ && make install RUN cd /opt/sources && wget -q -O- https://roumenpetrov.info/secsh/src/pkixssh-14.1.1.tar.gz | tar xzf - && cd pkixssh-14.1.1 && ./configure --prefix=/opt/pkixssh/ --exec-prefix=/opt/pkixssh/ && make install
# Install udp/tcp-proxy # Install udp/tcp-proxy
RUN cd /opt/sources && git clone --depth=1 --single-branch --branch=main http://github.com/wolfssl/udp-proxy && cd udp-proxy && make && cp tcp_proxy udp_proxy /bin/. RUN cd /opt/sources && git clone --depth=1 --single-branch --branch=main http://github.com/wolfssl/udp-proxy && cd udp-proxy && make && cp tcp_proxy udp_proxy /bin/.
# Install libbacktrace
RUN cd /opt/sources && git clone --depth=1 --single-branch https://github.com/ianlancetaylor/libbacktrace.git && cd libbacktrace && mkdir build && cd build && ../configure && make && make install
# Allow non-root to use tcpdump (will need NET_RAW and NET_ADMIN capability when running the container) # Allow non-root to use tcpdump (will need NET_RAW and NET_ADMIN capability when running the container)
RUN setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/tcpdump RUN setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/tcpdump

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
# Assume we're in wolfssl/Docker # Assume we're in wolfssl/Docker
WOLFSSL_DIR=$(builtin cd ${BASH_SOURCE%/*}/..; pwd) WOLFSSL_DIR=$(builtin cd ${BASH_SOURCE%/*}/..; pwd)
@@ -18,37 +18,18 @@ docker build -t wolfssl/wolfssl-builder:${CUR_DATE} ${DOCKER_BUILD_OPTIONS} "${W
docker tag wolfssl/testing-cross-compiler:${CUR_DATE} wolfssl/testing-cross-compiler:latest docker tag wolfssl/testing-cross-compiler:${CUR_DATE} wolfssl/testing-cross-compiler:latest
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Push containers to DockerHub [y/N]? " echo "Pushing containers to DockerHub"
read val docker push wolfssl/wolfssl-builder:${CUR_DATE} && docker push wolfssl/wolfssl-builder:latest && \
if [ "$val" = "y" ]; then docker push wolfssl/testing-cross-compiler:${CUR_DATE} && docker push wolfssl/testing-cross-compiler:latest
docker push wolfssl/wolfssl-builder:${CUR_DATE} && docker push wolfssl/wolfssl-builder:latest && \
docker push wolfssl/testing-cross-compiler:${CUR_DATE} && docker push wolfssl/testing-cross-compiler:latest
if [ $? -ne 0 ]; then
echo "Warning: push failed. Continuing"
((NUM_FAILURES++))
fi
fi
else else
echo "Warning: Build wolfssl/wolfssl-builder failed. Continuing" echo "Warning: Build wolfssl/wolfssl-builder failed. Continuing"
((NUM_FAILURES++)) ((NUM_FAILURES++))
fi fi
echo "Building wolfssl/wolfCLU:${CUR_DATE}" echo "Building wolfssl/wolfCLU:${CUR_DATE}"
DOCKER_ARGS="--pull --build-arg DUMMY=${CUR_DATE} --platform=linux/amd64,linux/arm64,linux/arm/v7 ${WOLFSSL_DIR}/Docker/wolfCLU" docker buildx build --pull --push --build-arg DUMMY=${CUR_DATE} -t wolfssl/wolfclu:${CUR_DATE} --platform=linux/amd64,linux/arm64,linux/arm/v7 "${WOLFSSL_DIR}/Docker/wolfCLU" && \
docker buildx build -t wolfssl/wolfclu:${CUR_DATE} ${DOCKER_ARGS} && \ docker buildx build --pull --push --build-arg DUMMY=${CUR_DATE} -t wolfssl/wolfclu:latest --platform=linux/amd64,linux/arm64,linux/arm/v7 "${WOLFSSL_DIR}/Docker/wolfCLU"
docker buildx build -t wolfssl/wolfclu:latest ${DOCKER_ARGS} if [ $? -ne 0 ]; then
if [ $? -eq 0 ]; then
echo "Push containers to DockerHub [y/N]? "
read val
if [ "$val" = "y" ]; then
docker buildx build ${DOCKER_ARGS} --push -t wolfssl/wolfclu:${CUR_DATE} && \
docker buildx build ${DOCKER_ARGS} --push -t wolfssl/wolfclu:latest
if [ $? -ne 0 ]; then
echo "Warning: push failed. Continuing"
((NUM_FAILURES++))
fi
fi
else
echo "Warning: Build wolfssl/wolfclu failed. Continuing" echo "Warning: Build wolfssl/wolfclu failed. Continuing"
((NUM_FAILURES++)) ((NUM_FAILURES++))
fi fi

View File

@@ -2,4 +2,5 @@ FROM debian:latest
RUN apt-get -y update RUN apt-get -y update
RUN apt-get -y upgrade RUN apt-get -y upgrade
RUN apt-get install -y build-essential autoconf gawk debhelper lintian dpkg-dev RUN apt-get install -y build-essential autoconf gawk debhelper lintian

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
echo "Running with \"${*}\"..." echo "Running with \"${*}\"..."

View File

@@ -1,9 +1,9 @@
ARG DOCKER_BASE_IMAGE=ubuntu ARG DOCKER_BASE_IMAGE=ubuntu
FROM ubuntu AS builder FROM ubuntu as BUILDER
ARG DEPS_WOLFSSL="build-essential autoconf libtool zlib1g-dev libuv1-dev libpam0g-dev git libpcap-dev libcurl4-openssl-dev bsdmainutils netcat-traditional iputils-ping bubblewrap" ARG DEPS_WOLFSSL="build-essential autoconf libtool zlib1g-dev libuv1-dev libpam0g-dev git libpcap-dev libcurl4-openssl-dev bsdmainutils netcat iputils-ping bubblewrap"
RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \ RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \
&& apt install -y ${DEPS_WOLFSSL} \ && apt install -y ${DEPS_WOLFSSL} ${DEPS_LIBOQS} \
&& apt clean -y && rm -rf /var/lib/apt/lists/* && apt clean -y && rm -rf /var/lib/apt/lists/*
ARG NUM_CPU=16 ARG NUM_CPU=16
@@ -18,8 +18,8 @@ RUN git clone --depth=1 --single-branch --branch=main http://github.com/wolfssl/
FROM ${DOCKER_BASE_IMAGE} FROM ${DOCKER_BASE_IMAGE}
USER root USER root
COPY --from=builder /usr/local/lib/libwolfssl.so /usr/local/lib/ COPY --from=BUILDER /usr/local/lib/libwolfssl.so /usr/local/lib/
COPY --from=builder /usr/local/bin/wolfssl* /usr/local/bin/ COPY --from=BUILDER /usr/local/bin/wolfssl* /usr/local/bin/
RUN ldconfig RUN ldconfig
ENTRYPOINT ["/usr/local/bin/wolfssl"] ENTRYPOINT ["/usr/local/bin/wolfssl"]
LABEL org.opencontainers.image.source=https://github.com/wolfssl/wolfssl LABEL org.opencontainers.image.source=https://github.com/wolfssl/wolfssl

View File

@@ -1,6 +1,6 @@
This is a small container that has wolfCLU installed for quick access. To build your own run the following: This is a small container that has wolfCLU installed for quick access. To build your own run the following:
``` ```
docker build --pull --build-arg DUMMY=$(date +%s) -t wolfclu . docker build --pull --build-arg DUMMY=$(date +%s) -t wolfclu .
``` ```
To run the container, you can use: To run the container, you can use:

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
# Assume we're in wolfssl/Docker/yocto # Assume we're in wolfssl/Docker/yocto
WOLFSSL_DIR=$(builtin cd ${BASH_SOURCE%/*}/../..; pwd) WOLFSSL_DIR=$(builtin cd ${BASH_SOURCE%/*}/../..; pwd)

View File

@@ -4,46 +4,10 @@ This library is restructured from [wolfSSL](https://github.com/wolfSSL/wolfssl/)
The Official wolfSSL Arduino Library is found in [The Library Manager index](http://downloads.arduino.cc/libraries/library_index.json). The Official wolfSSL Arduino Library is found in [The Library Manager index](http://downloads.arduino.cc/libraries/library_index.json).
See the [Arduino-wolfSSL logs](https://downloads.arduino.cc/libraries/logs/github.com/wolfSSL/Arduino-wolfSSL/) for publishing status. See the [Arduino-wolfSSL logs](https://downloads.arduino.cc/libraries/logs/github.com/wolfSSL/Arduino-wolfSSL/).
Instructions for installing and using libraries can be found in the [Arduino docs](https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries/).
## wolfSSL Configuration
As described in the [Getting Started with wolfSSL on Arduino](https://www.wolfssl.com/getting-started-with-wolfssl-on-arduino/), wolfSSL features are enabled and disabled in the `user_settings.h` file.
The `user_settings.h` file is found in the `<Arduino>/libraries/wolfssl/src` directory.
For Windows this is typically `C:\Users\%USERNAME%\Documents\Arduino\libraries\wolfssl\src`
For Mac: `~/Documents/Arduino/libraries/wolfssl/src`
For Linux: `~/Arduino/libraries/wolfssl/src`
Tips for success:
- The `WOLFSSL_USER_SETTINGS` macro must be defined project-wide. (see [wolfssl.h](https://github.com/wolfSSL/wolfssl/blob/master/IDE/ARDUINO/wolfssl.h))
- Apply any customizations only to `user_settings.h`; Do not edit wolfSSL `settings.h` or `configh.h` files.
- Do not explicitly include `user_settings.h` in any source file.
- For every source file that uses wolfssl, include `wolfssl/wolfcrypt/settings.h` before any other wolfSSL include, typically via `#include "wolfssl.h"`.
- See the [wolfSSL docs](https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html) for details on build configuration macros.
## wolfSSL Examples
Additional wolfSSL examples can be found at:
- https://github.com/wolfSSL/wolfssl/tree/master/IDE/ARDUINO
- https://github.com/wolfSSL/wolfssl/tree/master/examples
- https://github.com/wolfSSL/wolfssl-examples/
## Arduino Releases ## Arduino Releases
This release of wolfSSL is version [5.7.6](https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.6-stable). The first Official wolfSSL Arduino Library is `5.6.6-Arduino.1`: a slightly modified, post [release 5.6.6](https://github.com/wolfSSL/wolfssl/releases/tag/v5.6.6-stable) version update.
See GitHub for [all Arduino wolfSSL releases](https://github.com/wolfSSL/Arduino-wolfSSL/releases). See other [wolfSSL releases versions](https://github.com/wolfSSL/wolfssl/releases). The `./wolfssl-arduino.sh INSTALL` [script](https://github.com/wolfSSL/wolfssl/tree/master/IDE/ARDUINO) can be used to install specific GitHub versions as needed.
The first Official wolfSSL Arduino Library was `5.6.6-Arduino.1`: a slightly modified, post [release 5.6.6](https://github.com/wolfSSL/wolfssl/releases/tag/v5.6.6-stable) version update.
The `./wolfssl-arduino.sh INSTALL` [script](https://github.com/wolfSSL/wolfssl/tree/master/IDE/ARDUINO) can be used to install specific GitHub versions as needed.

View File

@@ -1,50 +1,19 @@
# wolfSSL with Arduino # wolfSSL with Arduino
See the [example sketches](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino): See the [example sketches](./sketches/README.md):
Bare-bones templates: - [sketches/wolfssl_server](./sketches/wolfssl_server/README.md)
- [sketches/wolfssl_client](./sketches/wolfssl_client/README.md)
- [sketches/wolfssl_version](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_version/README.md) single file.
- [sketches/template](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/template/README.md) multiple file example.
Functional examples:
- [sketches/wolfssl_AES_CTR](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_AES_CTR/README.md) AES CTR Encrypt / decrypt.
- [sketches/wolfssl_client](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_client/README.md) TLS Client.
- [sketches/wolfssl_server](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_server/README.md) TLS Server.
- [sketches/wolfssl_client_dtls](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_client_dtls/README.md) DTLS Client.
- [sketches/wolfssl_server_dtls](https://github.com/wolfSSL/wolfssl-examples/tree/master/Arduino/sketches/wolfssl_server_dtls/README.md) DTLS Server.
Both the `template` and `wolfssl_AES_CTR` examples include VisualGDB project files.
When publishing a new version to the Arduino Registry, be sure to edit `WOLFSSL_VERSION_ARUINO_SUFFIX` in the `wolfssl-arduino.sh` script. When publishing a new version to the Arduino Registry, be sure to edit `WOLFSSL_VERSION_ARUINO_SUFFIX` in the `wolfssl-arduino.sh` script.
## Getting Started
See [Getting Started with wolfSSL on Arduino](https://www.wolfssl.com/getting-started-with-wolfssl-on-arduino/), wolfSSL features are enabled and disabled in the `user_settings.h` file.
The `user_settings.h` file is found in the `<Arduino>/libraries/wolfssl/src` directory.
For Windows this is typically `C:\Users\%USERNAME%\Documents\Arduino\libraries\wolfssl\src`
For Mac: `~/Documents/Arduino/libraries/wolfssl/src`
For Linux: `~/Arduino/libraries/wolfssl/src`
Tips for success:
- The `WOLFSSL_USER_SETTINGS` macro must be defined project-wide. (see [wolfssl.h](https://github.com/wolfSSL/wolfssl/blob/master/IDE/ARDUINO/wolfssl.h))
- Apply any customizations only to `user_settings.h`; Do not edit wolfSSL `settings.h` or `configh.h` files.
- Do not explicitly include `user_settings.h` in any source file.
- For every source file that uses wolfssl, include `wolfssl/wolfcrypt/settings.h` before any other wolfSSL include, typically via `#include "wolfssl.h"`.
- See the [wolfSSL docs](https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html) for details on build configuration macros.
## Boards ## Boards
Many of the supported boards are natively built-in to the [Arduino IDE Board Manager](https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager/) Many of the supported boards are natively built-in to the [Arduino IDE Board Manager](https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager/)
and by adding [additional cores](https://docs.arduino.cc/learn/starting-guide/cores/) as needed. and by adding [additional cores](https://docs.arduino.cc/learn/starting-guide/cores/) as needed.
STM32 Support can be added by including this link in the "Additional Boards Managers URLs" field STM32 Support can be added by including this link in the "Additional Boards Managers URLs" field
from [stm32duino/Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32?tab=readme-ov-file#getting-started). from [stm32duino/Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32?tab=readme-ov-file#getting-started) .
``` ```
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
@@ -58,7 +27,7 @@ This option will allow wolfSSL to be installed directly using the native Arduino
## Manually Reformatting wolfSSL as a Compatible Arduino Library ## Manually Reformatting wolfSSL as a Compatible Arduino Library
Use [this](./wolfssl-arduino.sh) shell script that will re-organize the wolfSSL library to be Use [this](./wolfssl-arduino.sh) shell script that will re-organize the wolfSSL library to be
compatible with [Arduino Library Specification](https://arduino.github.io/arduino-cli/0.35/library-specification/) compatible with [Arduino Library Specification](https://arduino.github.io/arduino-cli/0.35/library-specification/)
for projects that use Arduino IDE 1.5.0 or newer. for projects that use Arduino IDE 1.5.0 or newer.
@@ -73,7 +42,7 @@ from within the `wolfssl/IDE/ARDUINO` directory:
1. `./wolfssl-arduino.sh` 1. `./wolfssl-arduino.sh`
- Creates an Arduino Library directory structure in the local `wolfSSL` directory of `IDE/ARDUINO`. - Creates an Arduino Library directory structure in the local `wolfSSL` directory of `IDE/ARDUINO`.
- You can add your own `user_settings.h`, or copy/rename the [default](https://github.com/wolfSSL/wolfssl/blob/master/examples/configs/user_settings_arduino.h). - You can add your own `user_settings.h`, or copy/rename the [default](../../examples/configs/user_settings_arduino.h).
2. `./wolfssl-arduino.sh INSTALL` (The most common option) 2. `./wolfssl-arduino.sh INSTALL` (The most common option)
- Creates an Arduino Library in the local `wolfSSL` directory - Creates an Arduino Library in the local `wolfSSL` directory
@@ -86,8 +55,8 @@ from within the `wolfssl/IDE/ARDUINO` directory:
3. `./wolfssl-arduino.sh INSTALL /path/to/repository` (Used to update [arduino-wolfSSL](https://github.com/wolfSSL/arduino-wolfSSL)) 3. `./wolfssl-arduino.sh INSTALL /path/to/repository` (Used to update [arduino-wolfSSL](https://github.com/wolfSSL/arduino-wolfSSL))
- Creates an Arduino Library in `wolfSSL` directory - Creates an Arduino Library in `wolfSSL` directory
- Copies that directory contents to the specified `/path/to/repository` - Copies that directory contents to the specified `/path/to/repository`
- Adds the [default](../../examples/configs/user_settings_arduino.h) as `user_settings.h`. - Adds the [default](../../examples/configs/user_settings_arduino.h) as `user_settings.h`.
4. `./wolfssl-arduino.sh INSTALL /path/to/any/other/directory` 4. `./wolfssl-arduino.sh INSTALL /path/to/any/other/directory`
- Creates an Arduino Library in `wolfSSL` directory - Creates an Arduino Library in `wolfSSL` directory
- Copies that directory contents to the specified `/path/to/any/other/directory` - Copies that directory contents to the specified `/path/to/any/other/directory`

View File

@@ -2,32 +2,16 @@
# included from Top Level Makefile.am # included from Top Level Makefile.am
# All paths should be given relative to the root # All paths should be given relative to the root
# Library files:
EXTRA_DIST+= IDE/ARDUINO/README.md EXTRA_DIST+= IDE/ARDUINO/README.md
# There's an Arduino-specific Arduino_README_prepend.md that will be prepended to wolfSSL README.md
# Not to be confused with the interim PREPENDED_README.md that is created by script.
EXTRA_DIST+= IDE/ARDUINO/Arduino_README_prepend.md EXTRA_DIST+= IDE/ARDUINO/Arduino_README_prepend.md
# Core library files
EXTRA_DIST+= IDE/ARDUINO/wolfssl.h
EXTRA_DIST+= IDE/ARDUINO/wolfssl.h
EXTRA_DIST+= IDE/ARDUINO/wolfssl-arduino.cpp
EXTRA_DIST+= IDE/ARDUINO/keywords.txt EXTRA_DIST+= IDE/ARDUINO/keywords.txt
EXTRA_DIST+= IDE/ARDUINO/library.properties.template EXTRA_DIST+= IDE/ARDUINO/library.properties.template
# Sketch Examples
EXTRA_DIST+= IDE/ARDUINO/sketches/README.md EXTRA_DIST+= IDE/ARDUINO/sketches/README.md
# wolfssl_client example sketch
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_client/README.md EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_client/README.md
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_client/wolfssl_client.ino
# wolfssl_server example sketch
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_server/README.md EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_server/README.md
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_server/wolfssl_server.ino
# wolfssl_version example sketch
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_version/README.md EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_version/README.md
EXTRA_DIST+= IDE/ARDUINO/sketches/wolfssl_version/wolfssl_version.ino
# Publishing script, either local install or to github.com/wolfSSL/Arduino-wolfSSL clone directory. EXTRA_DIST+= IDE/ARDUINO/wolfssl.h
EXTRA_DIST+= IDE/ARDUINO/wolfssl-arduino.sh EXTRA_DIST+= IDE/ARDUINO/wolfssl-arduino.sh

View File

@@ -1,75 +1,12 @@
# wolfSSL Arduino Examples # wolfSSL Arduino Examples
There are currently five example Arduino sketches: There are currently two example Arduino sketches:
NOTE: Moving; See https://github.com/wolfSSL/wolfssl-examples/pull/499 * [wolfssl_client](./wolfssl_client/README.md): Basic TLS listening client.
* [wolfssl_server](./wolfssl_server/README.md): Basic TLS server.
* `template`: Reference template wolfSSL example, including optional VisualGDB project files.
* `wolfssl_AES_CTR`: Basic AES CTR Encryption / Decryption example.
* `wolfssl_client`: Basic TLS listening client.
* `wolfssl_server`: Basic TLS server.
* `wolfssl_version`: Bare-bones wolfSSL example.
Examples have been most recently confirmed operational on the Examples have been most recently confirmed operational on the
[Arduino IDE](https://www.arduino.cc/en/software) 2.2.1. [Arduino IDE](https://www.arduino.cc/en/software) 2.2.1.
For examples on other platforms, see the [IDE directory](https://github.com/wolfssl/wolfssl/tree/master/IDE). For examples on other platforms, see the [IDE directory](https://github.com/wolfssl/wolfssl/tree/master/IDE).
Additional wolfssl examples can be found at [wolfSSL/wolfssl-examples](https://github.com/wolfSSL/wolfssl-examples/). Additional examples can be found on [wolfSSL/wolfssl-examples](https://github.com/wolfSSL/wolfssl-examples/).
## Using wolfSSL
The typical include will look something like this:
```
#include <Arduino.h>
/* wolfSSL user_settings.h must be included from settings.h
* Make all configurations changes in user_settings.h
* Do not edit wolfSSL `settings.h` or `config.h` files.
* Do not explicitly include user_settings.h in any source code.
* Each Arduino sketch that uses wolfSSL must have: #include "wolfssl.h"
* C/C++ source files can use: #include <wolfssl/wolfcrypt/settings.h>
* The wolfSSL "settings.h" must be included in each source file using wolfSSL.
* The wolfSSL "settings.h" must appear before any other wolfSSL include.
*/
#include <wolfssl.h>
/* settings.h is typically included in wolfssl.h, but here as a reminder: */
#include <wolfssl/wolfcrypt/settings.h>
/* Any other wolfSSL includes follow:*
#include <wolfssl/version.h>
```
## Configuring wolfSSL
See the `user_settings.h` in the Arduino library `wolfssl/src` directory. For Windows users this is typically:
```
C:\Users\%USERNAME%\Documents\Arduino\libraries\wolfssl\src
```
WARNING: Changes to the library `user_settings.h` file will be lost when upgrading wolfSSL using the Arduino IDE.
## Troubleshooting
If compile problems are encountered, for example:
```
ctags: cannot open temporary file : File exists
exit status 1
Compilation error: exit status 1
```
Try deleting the Arduino cache directory:
```
C:\Users\%USERNAME%\AppData\Local\arduino\sketches
```
For VisualGDB users, delete the project `.vs`, `Output`, and `TraceReports` directories.
## More Information
For more details, see [IDE/ARDUINO/README.md](https://github.com/wolfSSL/wolfssl/blob/master/IDE/ARDUINO/README.md)

Some files were not shown because too many files have changed in this diff Show More