Skip to content

Commit 0fd7838

Browse files
authored
Merge pull request #62 from cisco/boring
Add support for BoringSSL
2 parents f047335 + 8726abd commit 0fd7838

File tree

11 files changed

+524
-46
lines changed

11 files changed

+524
-46
lines changed

.github/workflows/build.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
os: [windows-latest, ubuntu-latest, macos-latest]
21+
crypto: [OPENSSL_1_1, OPENSSL_3, BORINGSSL]
2122
include:
2223
- os: windows-latest
2324
vcpkg-cmake-file: "$env:VCPKG_INSTALLATION_ROOT\\scripts\\buildsystems\\vcpkg.cmake"
@@ -37,10 +38,15 @@ jobs:
3738
steps:
3839
- uses: actions/checkout@v4
3940

41+
- name: dependencies (ubuntu)
42+
if: ${{ matrix.os == 'ubuntu-latest' }}
43+
run: |
44+
sudo apt-get install nasm
45+
4046
- name: dependencies (macos)
4147
if: ${{ matrix.os == 'macos-latest' }}
4248
run: |
43-
brew install llvm ninja
49+
brew install llvm ninja nasm go
4450
ln -s "/usr/local/opt/llvm/bin/clang-format" "/usr/local/bin/clang-format"
4551
ln -s "/usr/local/opt/llvm/bin/clang-tidy" "/usr/local/bin/clang-tidy"
4652
@@ -52,8 +58,8 @@ jobs:
5258
key: ${{ runner.os }}-${{ hashFiles( '**/vcpkg.json' ) }}
5359

5460
- name: configure to use clang-tidy and sanitizers
55-
run: |
56-
cmake -B "${{ env.CMAKE_BUILD_DIR }}" -DCLANG_TIDY=ON -DTESTING=ON -DSANITIZERS=ON -DCMAKE_TOOLCHAIN_FILE="${{ matrix.vcpkg-cmake-file}}" .
61+
run: >
62+
cmake -B "${{ env.CMAKE_BUILD_DIR }}" -DTESTING=ON -DCLANG_TIDY=ON -DSANITIZERS=ON -DCMAKE_TOOLCHAIN_FILE="${{ matrix.vcpkg-cmake-file}}" -DCRYPTO="${{ matrix.crypto }}" -DVCPKG_MANIFEST_DIR="alternatives/${{ matrix.crypto }}"
5763
5864
- name: build
5965
run: |

CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ option(TESTING "Build tests" OFF)
99
option(CLANG_TIDY "Perform linting with clang-tidy" OFF)
1010
option(SANITIZERS "Enable sanitizers" OFF)
1111

12-
# Use -DCRYPTO=(OPENSSL_1_1 | OPENSSL_3) to configure crypto
12+
# Use -DCRYPTO=(OPENSSL_1_1 | OPENSSL_3 | BORINGSSL) to configure crypto
1313
if(NOT DEFINED CRYPTO)
1414
set(CRYPTO "OPENSSL_3")
1515
endif()
@@ -64,6 +64,11 @@ elseif(${CRYPTO} STREQUAL "OPENSSL_3")
6464
find_package(OpenSSL 3 EXACT REQUIRED)
6565
add_compile_definitions(OPENSSL_3)
6666
set(CRYPTO_LIB OpenSSL::Crypto)
67+
elseif(${CRYPTO} STREQUAL "BORINGSSL")
68+
message(STATUS "Configuring with BoringSSL")
69+
find_package(OpenSSL REQUIRED)
70+
add_compile_definitions(BORINGSSL)
71+
set(CRYPTO_LIB OpenSSL::Crypto)
6772
else()
6873
message(FATAL_ERROR "Please select a crypto back-end (OPENSSL_1_1 or OPENSSL_3) [${CRYPTO}]")
6974
endif()

Makefile

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ LIB=./build/libsframe.a
1111
TEST_VECTOR_DIR=./build/test
1212
TEST_BIN=./build/test/sframe_test
1313

14-
.PHONY: all tidy test clean cclean format
14+
OPENSSL_1_1_MANIFEST=alternatives/OPENSSL_1_1
15+
OPENSSL_3_MANIFEST=alternatives/OPENSSL_3
16+
BORINGSSL_MANIFEST=alternatives/BORINGSSL
17+
18+
.PHONY: all dev dev1 devB tidy test clean cclean format
1519

1620
${LIB}: ${BUILD_DIR} src/* include/sframe/*
1721
cmake --build ${BUILD_DIR} --target sframe
@@ -20,7 +24,19 @@ ${BUILD_DIR}: CMakeLists.txt test/CMakeLists.txt
2024
cmake -B${BUILD_DIR} .
2125

2226
dev: CMakeLists.txt test/CMakeLists.txt
23-
cmake -B${BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCLANG_TIDY=ON -DTESTING=ON -DSANITIZERS=ON .
27+
cmake -B${BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DTESTING=ON \
28+
-DCLANG_TIDY=ON -DSANITIZERS=ON \
29+
-DCRYPTO=OPENSSL_3 -DVCPKG_MANIFEST_DIR=${OPENSSL_3_MANIFEST}
30+
31+
dev1: CMakeLists.txt test/CMakeLists.txt
32+
cmake -B${BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DTESTING=ON \
33+
-DCLANG_TIDY=ON -DSANITIZERS=ON \
34+
-DCRYPTO=OPENSSL_1_1 -DVCPKG_MANIFEST_DIR=${OPENSSL_1_1_MANIFEST}
35+
36+
devB: CMakeLists.txt test/CMakeLists.txt
37+
cmake -B${BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DTESTING=ON \
38+
-DCLANG_TIDY=ON -DSANITIZERS=ON \
39+
-DCRYPTO=BORINGSSL -DVCPKG_MANIFEST_DIR=${BORINGSSL_MANIFEST}
2440

2541
${TEST_BIN}: ${LIB} test/*
2642
cmake --build ${BUILD_DIR} --target sframe_test

alternatives/BORINGSSL/vcpkg.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "mlspp",
3+
"version-string": "0.1",
4+
"description": "Cisco MLS C++ library (BoringSSL 1.1)",
5+
"dependencies": [
6+
{
7+
"name": "boringssl",
8+
"version>=": "2023-10-13"
9+
},
10+
"doctest",
11+
"nlohmann-json"
12+
],
13+
"builtin-baseline": "eb33d2f7583405fca184bcdf7fdd5828ec88ac05"
14+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "mlspp",
3+
"version-string": "0.1",
4+
"description": "Cisco MLS C++ library",
5+
"dependencies": [
6+
{
7+
"name": "openssl",
8+
"version>=": "1.1.1n"
9+
},
10+
"doctest",
11+
"nlohmann-json"
12+
],
13+
"builtin-baseline": "eb33d2f7583405fca184bcdf7fdd5828ec88ac05",
14+
"overrides": [
15+
{
16+
"name": "openssl",
17+
"version-string": "1.1.1n"
18+
}
19+
]
20+
}

alternatives/OPENSSL_3/vcpkg.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "mlspp",
3+
"version-string": "0.1",
4+
"description": "Cisco MLS C++ library (OpenSSL 3)",
5+
"dependencies": [
6+
{
7+
"name": "openssl",
8+
"version>=": "3.0.7"
9+
},
10+
"doctest",
11+
"nlohmann-json"
12+
],
13+
"builtin-baseline": "eb33d2f7583405fca184bcdf7fdd5828ec88ac05",
14+
"overrides": [
15+
{
16+
"name": "openssl",
17+
"version": "3.0.7"
18+
}
19+
]
20+
}

0 commit comments

Comments
 (0)