Skip to content

Commit c458458

Browse files
committed
Add CMake support
* Support for building the library with CMake * Support for installing CMake related files when building with autoconf. This enables consuming the library via CMake when built with autoconf. * Added tests for CMake * Fix examples for NULL pointer dereference in case of init errors.
1 parent 52be358 commit c458458

27 files changed

+1381
-78
lines changed

.github/workflows/cmake.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: wolfPKCS11 CMake Build Tests
2+
3+
on:
4+
push:
5+
branches: [ 'master', 'main', 'release/**' ]
6+
pull_request:
7+
branches: [ '*' ]
8+
9+
jobs:
10+
build:
11+
if: github.repository_owner == 'wolfssl'
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
# install cmake
16+
- name: Install cmake
17+
run: |
18+
sudo apt-get update
19+
sudo apt-get install -y cmake
20+
21+
# pull wolfPKCS11
22+
- uses: actions/checkout@v4
23+
with:
24+
submodules: true
25+
26+
# setup wolfSSL
27+
- uses: actions/checkout@master
28+
with:
29+
repository: wolfssl/wolfssl
30+
path: wolfssl
31+
- name: Build wolfssl
32+
working-directory: ./wolfssl
33+
run: |
34+
mkdir build
35+
cd build
36+
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
37+
-DWOLFSSL_AES:BOOL=yes -DWOLFSSL_AESCBC:BOOL=yes -DWOLFSSL_AESCCM:BOOL=yes -DWOLFSSL_AESCFB:BOOL=yes \
38+
-DWOLFSSL_AESECB:BOOL=yes -DWOLFSSL_AESCTR:BOOL=yes -DWOLFSSL_AESGCM:STRING=yes -DWOLFSSL_AESKEYWRAP:BOOL=yes \
39+
-DWOLFSSL_AESOFB:BOOL=yes -DWOLFSSL_AESCTS:BOOL=yes -DWOLFSSL_AESSIV:BOOL=yes -DWOLFSSL_ALIGN_DATA:BOOL=yes \
40+
-DWOLFSSL_ASM:BOOL=yes -DWOLFSSL_DH:STRING=yes -DWOLFSSL_DH_DEFAULT_PARAMS:BOOL=yes -DWOLFSSL_ECC:STRING=yes \
41+
-DWOLFSSL_EXPERIMENTAL:BOOL=yes -DWOLFSSL_HARDEN:BOOL=yes -DWOLFSSL_HASH_DRBG:BOOL=yes \
42+
-DWOLFSSL_HKDF:BOOL=yes -DWOLFSSL_INLINE:BOOL=yes -DWOLFSSL_INSTALL:BOOL=yes -DWOLFSSL_KEYGEN:BOOL=yes \
43+
-DWOLFSSL_MD5:BOOL=yes -DWOLFSSL_RNG:BOOL=yes -DWOLFSSL_RSA:BOOL=yes -DWOLFSSL_RSA_PSS:BOOL=yes \
44+
-DWOLFSSL_SHA:BOOL=yes -DWOLFSSL_SHA224:BOOL=yes -DWOLFSSL_SHA3:STRING=yes -DWOLFSSL_SHA384:BOOL=yes \
45+
-DWOLFSSL_SHA512:BOOL=yes -DWOLFSSL_SHAKE128:STRING=yes -DWOLFSSL_SHAKE256:STRING=yes \
46+
-DWOLFSSL_SP_MATH_ALL:BOOL=yes -DWOLFSSL_X86_64_BUILD_ASM:BOOL=yes -DWOLFSSL_MLKEM=1 \
47+
-DWOLFSSL_LMS=1 -DWOLFSSL_LMSSHA256192=1 -DWOLFSSL_DILITHIUM:BOOL=yes -DWOLFSSL_PUBLIC_MP:BOOL=yes \
48+
-DWOLFSSL_WC_RSA_DIRECT:BOOL=yes -DCMAKE_BUILD_TYPE=Release \
49+
..
50+
cmake --build .
51+
cmake --install .
52+
cd ..
53+
rm -rf build
54+
55+
# setup wolfPKCS11
56+
- name: Build wolfPKCS11
57+
run: |
58+
mkdir build
59+
cd build
60+
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
61+
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWOLFPKCS11_INSTALL:BOOL=yes -DWOLFPKCS11_DEBUG:BOOL=yes \
62+
-DWOLFPKCS11_AESKEYWRAP:BOOL=yes -DWOLFPKCS11_AESCTR:BOOL=yes -DWOLFPKCS11_AESCCM:BOOL=yes \
63+
-DWOLFPKCS11_AESECB:BOOL=yes -DWOLFPKCS11_AESCTS:BOOL=yes -DWOLFPKCS11_AESCMAC:BOOL=yes \
64+
-DWOLFPKCS11_PBKDF2:BOOL=yes -DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/${CMAKE_INSTALL_LIBDIR}" \
65+
..
66+
cmake --build .
67+
ctest -j $(nproc)
68+
cmake --install .
69+
cd ..
70+
rm -rf build

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
language.settings.xml
33
wolfpkcs11/config.h.in
44
autom4te.cache
5+
build
56
build-aux
67
aclocal.m4
78
libtool.m4
@@ -31,6 +32,9 @@ wolfpkcs11-config
3132
*.trs
3233
coverage
3334
coverage.info
35+
cmake/wolfpkcs11Config.cmake
36+
cmake/wolfpkcs11Targets.cmake
37+
cmake/wolfpkcs11ConfigVersion.cmake
3438
tests/pkcs11test
3539
tests/pkcs11mtt
3640
tests/pkcs11str
@@ -54,6 +58,7 @@ store/pkcs11mtt
5458
store/pkcs11test
5559
store/rsa
5660
store/str
61+
store/debug
5762
test/*
5863
*.gcda
5964
*.gcno

0 commit comments

Comments
 (0)