Skip to content

handshake, writeread: load the cert and key once, not per iteration #310

handshake, writeread: load the cert and key once, not per iteration

handshake, writeread: load the cert and key once, not per iteration #310

Workflow file for this run

name: "Test"
on:
pull_request:
workflow_dispatch:
jobs:
debian-11:
strategy:
fail-fast: false
matrix:
release: [
{
openssl-branch: "openssl-3.4",
cmakeopts: '-D "run_newrawkey_algos=newrawkey;-a;x25519" -D "run_evp_fetch_pqs=evp_fetch;;"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.5",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.6",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.0",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.1",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "master",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}
]
runs-on: "ubuntu-latest"
container: "docker.io/library/debian:11"
steps:
- name: "Install prerequisites"
run: |
sed -i -e 's|^deb |#deb |' \
-e 's|^# deb http://snapshot|deb http://snapshot|' /etc/apt/sources.list && \
apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Retries=3 update && \
apt-get install -y cmake gcc g++ make perl
- name: "Checkout openssl"
uses: "actions/checkout@v7"
with:
repository: "openssl/openssl"
ref: ${{ matrix.release.openssl-branch }}
fetch-depth: 1
path: "openssl"
- name: "Config openssl build"
working-directory: "./openssl"
run: |
./config ${{ matrix.release.configopts }} --prefix="$PWD/dist"
- name: "Build openssl"
working-directory: "./openssl"
run: |
make -j 4
- name: "Install openssl"
working-directory: "./openssl"
run: |
make install_sw
- name: "Checkout perftools"
uses: "actions/checkout@v7"
with:
path: "perftools"
- name: "Config perftools build with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake -S . -B build_debug -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -DCMAKE_C_FLAGS="-DDEBUG -Werror" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build ssl_poll_perf with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake --build build_debug --config Debug --target ssl_poll_perf -j 4 -v
- name: "Config perftools build"
working-directory: "./perftools/source"
run: |
cmake -S . -B build -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release
- name: "Print perftools version information"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run-version -j 4
- name: "Run perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run -j 4
ubuntu-20-04:
strategy:
fail-fast: false
matrix:
release: [
{
openssl-branch: "openssl-3.4",
cmakeopts: '-D "run_newrawkey_algos=newrawkey;-a;x25519" -D "run_evp_fetch_pqs=evp_fetch;;" -D OPENSSL_VERSION=3.4',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.5",
cmakeopts: '-D OPENSSL_VERSION=3.5',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.6",
cmakeopts: '-D OPENSSL_VERSION=3.6',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.0",
cmakeopts: '-D OPENSSL_VERSION=4.0',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.1",
cmakeopts: '-D OPENSSL_VERSION=4.1',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "master",
cmakeopts: '-D OPENSSL_VERSION=4.2',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}
]
runs-on: "ubuntu-latest"
container: "docker.io/library/ubuntu:20.04"
steps:
- name: "Install prerequisites"
env:
DEBIAN_FRONTEND: "noninteractive"
run: |
apt-get update
apt-get install -y cmake gcc g++ make perl
- name: "Checkout openssl"
uses: "actions/checkout@v7"
with:
repository: "openssl/openssl"
ref: ${{ matrix.release.openssl-branch }}
fetch-depth: 1
path: "openssl"
- name: "Config openssl build"
working-directory: "./openssl"
run: |
./config ${{ matrix.release.configopts }} --prefix="$PWD/dist"
- name: "Build openssl"
working-directory: "./openssl"
run: |
make -j 4
- name: "Install openssl"
working-directory: "./openssl"
run: |
make install_sw
- name: "Checkout perftools"
uses: "actions/checkout@v7"
with:
path: "perftools"
- name: "Config perftools build with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake -S . -B build_debug -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -DCMAKE_C_FLAGS="-DDEBUG -Werror" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build ssl_poll_perf with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake --build build_debug --config Debug --target ssl_poll_perf -j 4 -v
- name: "Config perftools build"
working-directory: "./perftools/source"
run: |
cmake -S . -B build -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release
- name: "Print perftools version information"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run-version -j 4
- name: "Run perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run -j 4
freebsd-13:
strategy:
fail-fast: false
matrix:
release: [
{
openssl-branch: "openssl-3.4",
cmakeopts: '-D "run_newrawkey_algos=newrawkey;-a;x25519" -D "run_evp_fetch_pqs=evp_fetch;;" -D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.5",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.6",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.0",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.1",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "master",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}
]
runs-on: "ubuntu-latest"
steps:
- name: "Install prerequisites"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
sudo pkg install -y cmake gcc perl5
- name: "Checkout openssl"
uses: "actions/checkout@v7"
with:
repository: "openssl/openssl"
ref: ${{ matrix.release.openssl-branch }}
fetch-depth: 1
path: "openssl"
- name: "Config openssl build"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd openssl
./config ${{ matrix.release.configopts }} --prefix="$PWD/dist"
- name: "Build openssl"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd openssl
make -j 4
- name: "Install openssl"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd openssl
make install_sw
- name: "Checkout perftools"
uses: "actions/checkout@v7"
with:
path: "perftools"
- name: "Config perftools build with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake -S . -B build_debug -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -DCMAKE_C_FLAGS="-DDEBUG -Werror" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build ssl_poll_perf with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake --build build_debug --config Debug --target ssl_poll_perf -j 4 -v
- name: "Config perftools build"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake -S . -B build -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build perftools"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake --build build --config Release
- name: "Print perftools version information"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake --build build --config Release --target run-version -j 4
- name: "Run perftools"
uses: "cross-platform-actions/action@fe0167d8082ac584754ef3ffb567fded22642c7d" #v0.27.0
with:
operating_system: "freebsd"
version: "13.4"
shutdown_vm: false
run: |
cd perftools/source
cmake --build build --config Release --target run -j 4
windows:
strategy:
fail-fast: false
matrix:
release: [
{
openssl-branch: "openssl-3.4",
cmakeopts: '-D "run_newrawkey_algos=newrawkey;-a;x25519" -D "run_evp_fetch_pqs=evp_fetch;;"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
z7-patch: "0001-Windows-Use-Z7-compiler-flag-to-enable-parallel-buil.patch",
}, {
openssl-branch: "openssl-3.5",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
z7-patch: "0001-Windows-Use-Z7-compiler-flag-to-enable-parallel-buil.patch",
}, {
openssl-branch: "openssl-3.6",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
z7-patch: "0001-Windows-Use-Z7-compiler-flag-to-enable-parallel-buil.patch",
}, {
openssl-branch: "openssl-4.0",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
z7-patch: "0001-Windows-Use-Z7-compiler-flag-to-enable-parallel-buil.patch",
}, {
openssl-branch: "openssl-4.1",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
z7-patch: '',
}, {
openssl-branch: "master",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
z7-patch: '',
}
]
runs-on: "windows-latest"
steps:
- name: "Checkout perftools"
uses: "actions/checkout@v7"
with:
path: "perftools"
- name: "Install nasm"
if: github.repository == 'openssl/perftools'
run: |
$installer = "nasm-3.01-installer-x64.exe"
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/$installer" -OutFile $installer
$expected = (Get-Content "$env:GITHUB_WORKSPACE\perftools\.github\ci-deps.json" -Raw | ConvertFrom-Json).$installer
$actual = (Get-FileHash $installer -Algorithm SHA256).Hash
if ($actual -ne $expected) { throw "SHA256 mismatch for $installer (expected $expected, got $actual)" }
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
- name: "Install nasm (forks)"
if: github.repository != 'openssl/perftools'
run: |
$installer = "nasm-3.01-installer-x64.exe"
Invoke-WebRequest -Uri "https://www.nasm.us/pub/nasm/releasebuilds/3.01/win64/$installer" -OutFile $installer
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
- name: "Install jom"
if: github.repository == 'openssl/perftools'
run: |
mkdir C:\jom
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/jom-1.1.7.exe" -OutFile C:\jom\jom.exe
$expected = (Get-Content "$env:GITHUB_WORKSPACE\perftools\.github\ci-deps.json" -Raw | ConvertFrom-Json).'jom-1.1.7.exe'
$actual = (Get-FileHash C:\jom\jom.exe -Algorithm SHA256).Hash
if ($actual -ne $expected) { throw "SHA256 mismatch for jom.exe (expected $expected, got $actual)" }
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
- name: "Install jom (forks)"
if: github.repository != 'openssl/perftools'
run: |
mkdir C:\jom
Invoke-WebRequest -Uri "https://download.qt.io/official_releases/jom/jom_1_1_7.zip" -OutFile C:\jom\jom.zip
Expand-Archive -Path C:\jom\jom.zip -DestinationPath C:\jom
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
- name: "Checkout openssl"
uses: "actions/checkout@v7"
with:
repository: "openssl/openssl"
ref: ${{ matrix.release.openssl-branch }}
fetch-depth: 1
path: "openssl"
- name: "Apply the /Z7 parallel-build patch to openssl"
if: ${{ matrix.release.z7-patch != '' }}
working-directory: ".\\openssl"
run: |
git apply -C1 --verbose "$env:GITHUB_WORKSPACE\perftools\patches\${{ matrix.release.z7-patch }}"
- name: "Config openssl build"
working-directory: ".\\openssl"
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
perl Configure no-makedepend ${{ matrix.release.configopts }}
- name: "Build openssl"
working-directory: ".\\openssl"
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
jom /j4 /S
- name: "Config perftools build with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: ".\\perftools\\source"
run: |
cmake -S . -B .\build_debug -DOPENSSL_ROOT_DIR="$env:GITHUB_WORKSPACE\openssl" -DCMAKE_C_FLAGS="/DDEBUG" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build ssl_poll_perf with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: ".\\perftools\\source"
run: |
cmake --build .\build_debug --config Debug --target ssl_poll_perf -j 4 -v
- name: "Config perftools build"
working-directory: ".\\perftools\\source"
run: |
cmake -S . -B .\build -DOPENSSL_ROOT_DIR="$env:GITHUB_WORKSPACE\openssl" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build perftools"
working-directory: ".\\perftools\\source"
run: |
cmake --build .\build --config Release
- name: "Print perftools version information"
working-directory: ".\\perftools\\source"
run: |
cmake --build .\build --config Release --target run-version -j 4
- name: "Run perftools"
working-directory: ".\\perftools\\source"
run: |
cmake --build .\build --config Release --target run -j 4
macos:
strategy:
fail-fast: false
matrix:
release: [
{
openssl-branch: "openssl-3.4",
cmakeopts: '-D "run_newrawkey_algos=newrawkey;-a;x25519" -D "run_evp_fetch_pqs=evp_fetch;;" -D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.5",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: false,
}, {
openssl-branch: "openssl-3.6",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.0",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "openssl-4.1",
cmakeopts: '-D "run_handshake_pool_size=handshake;;;-o 4"',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}, {
openssl-branch: "master",
cmakeopts: '',
configopts: 'no-apps no-tests',
has-ssl_poll_perf: true,
}
]
runs-on: "macos-latest"
steps:
- name: "Checkout openssl"
uses: "actions/checkout@v7"
with:
repository: "openssl/openssl"
ref: ${{ matrix.release.openssl-branch }}
fetch-depth: 1
path: "openssl"
- name: "Config openssl build"
working-directory: "./openssl"
run: |
./config ${{ matrix.release.configopts }} --prefix="$PWD/dist"
- name: "Build openssl"
working-directory: "./openssl"
run: |
make -j 4
- name: "Install openssl"
working-directory: "./openssl"
run: |
make install_sw
- name: "Checkout perftools"
uses: "actions/checkout@v7"
with:
path: "perftools"
- name: "Config perftools build with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake -S . -B build_debug -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -DCMAKE_C_FLAGS="-DDEBUG -Werror" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build ssl_poll_perf with -DDEBUG"
if: ${{ matrix.release.has-ssl_poll_perf }}
working-directory: "./perftools/source"
run: |
cmake --build build_debug --config Debug --target ssl_poll_perf -j 4 -v
- name: "Config perftools build"
working-directory: "./perftools/source"
run: |
cmake -S . -B build -DOPENSSL_ROOT_DIR="$GITHUB_WORKSPACE/openssl" -Drun_add_version_dep:BOOL=OFF ${{ matrix.release.cmakeopts }}
- name: "Build perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release
- name: "Print perftools version information"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run-version -j 4
- name: "Run perftools"
working-directory: "./perftools/source"
run: |
cmake --build build --config Release --target run -j 4