aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/android.yml2
-rw-r--r--.github/workflows/cifuzz.yml4
-rw-r--r--.github/workflows/cmake-config.yml98
-rw-r--r--.github/workflows/cmake_config.yml89
-rw-r--r--.github/workflows/coverity.yml2
-rw-r--r--.github/workflows/emscripten.yml4
-rw-r--r--.github/workflows/fedora-rawhide.yml6
-rw-r--r--.github/workflows/freebsd.yml71
-rw-r--r--.github/workflows/linux.yml13
-rw-r--r--.github/workflows/macos.yml2
-rw-r--r--.github/workflows/release.yml16
-rw-r--r--.github/workflows/rust-openssl.yml2
-rw-r--r--.github/workflows/solaris.yml2
-rw-r--r--.github/workflows/windows.yml2
-rw-r--r--.gitignore12
-rw-r--r--CMakeLists.txt88
-rw-r--r--ChangeLog163
-rw-r--r--FindLibreSSL.cmake5
-rw-r--r--apps/nc/CMakeLists.txt2
-rw-r--r--apps/openssl/Makefile.am5
-rw-r--r--apps/openssl/compat/poll_win.c6
-rw-r--r--configure.ac29
-rw-r--r--crypto/CMakeLists.txt176
-rw-r--r--crypto/Makefile.am114
-rw-r--r--crypto/Makefile.am.elf-arm3
-rw-r--r--crypto/Makefile.am.elf-mips3
-rw-r--r--crypto/Makefile.am.elf-mips643
-rw-r--r--crypto/Makefile.am.elf-x86_6416
-rw-r--r--crypto/Makefile.am.macosx-x86_6416
-rw-r--r--crypto/Makefile.am.masm-x86_6416
-rw-r--r--crypto/Makefile.am.mingw64-x86_6416
-rw-r--r--crypto/arch/loongarch64/crypto_arch.h21
-rw-r--r--crypto/arch/mips/crypto_arch.h21
-rw-r--r--crypto/bn/arch/loongarch64/bn_arch.h23
-rw-r--r--crypto/compat/getdelim.c78
-rw-r--r--crypto/compat/getline.c40
-rw-r--r--crypto/compat/posix_win.c91
-rw-r--r--crypto/compat/ui_openssl_win.c4
-rw-r--r--include/CMakeLists.txt4
-rw-r--r--include/arch/loongarch64/opensslconf.h154
-rw-r--r--include/arch/mips/opensslconf.h22
-rw-r--r--include/compat/endian.h8
-rw-r--r--include/compat/stdio.h12
-rw-r--r--include/compat/sys/stat.h8
-rw-r--r--include/compat/sys/time.h9
-rw-r--r--include/openssl/Makefile.am.tpl3
-rw-r--r--m4/check-libc.m44
-rw-r--r--m4/check-os-options.m41
-rw-r--r--man/links135
-rw-r--r--patches/crypto_arch.h.patch34
-rw-r--r--patches/crypto_namespace.h.patch6
-rw-r--r--patches/netcat.c.patch20
-rw-r--r--patches/openssl.c.patch6
-rw-r--r--patches/opensslfeatures.h.patch22
-rw-r--r--patches/patch-aarch64-crypto-cpu-caps.c.patch39
-rw-r--r--patches/patch-amd64-crypto-cpu-caps.c.patch20
-rw-r--r--patches/patch-i386-crypto-cpu-caps.c.patch20
-rw-r--r--patches/speed.c.patch27
-rw-r--r--patches/ssl_namespace.h.patch6
-rw-r--r--patches/tls_config.c.patch15
-rwxr-xr-xscripts/test28
-rw-r--r--ssl/CMakeLists.txt42
-rw-r--r--ssl/Makefile.am56
-rw-r--r--tests/CMakeLists.txt118
-rw-r--r--tests/Makefile.am115
-rwxr-xr-xtests/mlkem_tests.sh24
-rw-r--r--tests/renegotiation_test.bat14
-rwxr-xr-xtests/renegotiation_test.sh15
-rw-r--r--tls/CMakeLists.txt10
-rwxr-xr-xupdate.sh22
70 files changed, 1596 insertions, 687 deletions
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index d095d6d..7bc59c5 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -10,7 +10,7 @@ concurrency:
10jobs: 10jobs:
11 test: 11 test:
12 name: "Test ${{ matrix.name }}" 12 name: "Test ${{ matrix.name }}"
13 runs-on: ubuntu-latest 13 runs-on: ubuntu-24.04
14 permissions: 14 permissions:
15 contents: read 15 contents: read
16 strategy: 16 strategy:
diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml
index 966d92a..f994f99 100644
--- a/.github/workflows/cifuzz.yml
+++ b/.github/workflows/cifuzz.yml
@@ -9,7 +9,7 @@ concurrency:
9 9
10jobs: 10jobs:
11 Fuzzing: 11 Fuzzing:
12 runs-on: ubuntu-latest 12 runs-on: ubuntu-24.04
13 steps: 13 steps:
14 - name: Build Fuzzers 14 - name: Build Fuzzers
15 id: build 15 id: build
@@ -26,7 +26,7 @@ jobs:
26 dry-run: false 26 dry-run: false
27 language: c++ 27 language: c++
28 - name: Upload Crash 28 - name: Upload Crash
29 uses: actions/upload-artifact@v3 29 uses: actions/upload-artifact@v4
30 if: failure() && steps.build.outcome == 'success' 30 if: failure() && steps.build.outcome == 'success'
31 with: 31 with:
32 name: artifacts 32 name: artifacts
diff --git a/.github/workflows/cmake-config.yml b/.github/workflows/cmake-config.yml
new file mode 100644
index 0000000..0988102
--- /dev/null
+++ b/.github/workflows/cmake-config.yml
@@ -0,0 +1,98 @@
1# GitHub Actions workflow to check CMake config.
2name: "CMake Check"
3
4on:
5 push: {}
6 pull_request: {}
7
8concurrency:
9 group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
10 cancel-in-progress: true
11
12jobs:
13 check:
14 name: "${{ matrix.os }}"
15 runs-on: "${{ matrix.os }}"
16 strategy:
17 fail-fast: true
18 matrix:
19 os: [ "windows-2022", "macos-14", "ubuntu-24.04" ]
20 defaults:
21 run:
22 shell: "bash"
23 permissions:
24 contents: read
25 steps:
26 - name: "Checkout repository"
27 uses: actions/checkout@v4
28
29 - name: "Setup Windows dependencies"
30 if: runner.os == 'Windows'
31 uses: msys2/setup-msys2@v2
32 with:
33 update: true
34 install: >-
35 autoconf
36 automake
37 diffutils
38 libtool
39 gcc
40 git
41 patch
42 perl
43
44 - name: "Setup macOS dependencies"
45 if: runner.os == 'macOS'
46 run: brew install automake libtool
47
48 - name: "Prepare source tree for build (Windows)"
49 if: runner.os == 'Windows'
50 shell: "msys2 {0}"
51 run: ./autogen.sh
52
53 - name: "Prepare source tree for build (Unix)"
54 if: runner.os != 'Windows'
55 run: ./autogen.sh
56
57 - name: "Configure"
58 run: |
59 cmake -S . \
60 -B build \
61 -D CMAKE_BUILD_TYPE=Release \
62 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/../local
63
64 - name: "Build"
65 run: cmake --build build --config Release --verbose
66
67 - name: "Install"
68 run: cmake --install build --config Release
69
70 - name: "Consume from the build directory - Configure"
71 run: |
72 cmake -S tests/cmake \
73 -B consumer-build \
74 -D CMAKE_BUILD_TYPE=Release \
75 -D LibreSSL_DIR=$GITHUB_WORKSPACE/build
76
77 - name: "Consume from the build directory - Build"
78 run: cmake --build consumer-build --config Release --verbose
79
80 - name: "Consume from the install directory (CMAKE_PREFIX_PATH) - Configure"
81 run: |
82 cmake -S tests/cmake \
83 -B consumer-install-prefix \
84 -D CMAKE_BUILD_TYPE=Release \
85 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/../local
86
87 - name: "Consume from the install directory (CMAKE_PREFIX_PATH) - Build"
88 run: cmake --build consumer-install-prefix --config Release --verbose
89
90 - name: "Consume from the install directory (LibreSSL_DIR) - Configure"
91 run: |
92 cmake -S tests/cmake \
93 -B consumer-install-dir \
94 -D CMAKE_BUILD_TYPE=Release \
95 -D LibreSSL_DIR=$GITHUB_WORKSPACE/../local/lib/cmake/LibreSSL
96
97 - name: "Consume from the install directory (LibreSSL_DIR) - Build"
98 run: cmake --build consumer-install-dir --config Release --verbose
diff --git a/.github/workflows/cmake_config.yml b/.github/workflows/cmake_config.yml
deleted file mode 100644
index be9f114..0000000
--- a/.github/workflows/cmake_config.yml
+++ /dev/null
@@ -1,89 +0,0 @@
1name: cmake_config
2
3on: [push, pull_request]
4
5concurrency:
6 group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
7 cancel-in-progress: true
8
9jobs:
10 cmake-check:
11 defaults:
12 run:
13 shell: bash
14 strategy:
15 matrix:
16 os: [windows-latest, macos-latest, ubuntu-latest]
17 runs-on: ${{ matrix.os }}
18 continue-on-error: false
19 name: ${{ matrix.os }}
20 steps:
21 - name: Setup Windows dependencies
22 if: runner.os == 'Windows'
23 uses: msys2/setup-msys2@v2
24 with:
25 update: true
26 install: >-
27 autoconf
28 automake
29 diffutils
30 libtool
31 gcc
32 git
33 patch
34 perl
35
36 - name: Setup macOS dependencies
37 if: runner.os == 'macOS'
38 run: brew install automake libtool
39
40 - uses: actions/checkout@main
41
42 - name: Prepare source tree for build (Windows)
43 if: runner.os == 'Windows'
44 run: ./autogen.sh
45 shell: msys2 {0}
46
47 - name: Prepare source tree for build (Unix)
48 if: runner.os != 'Windows'
49 run: ./autogen.sh
50
51 - name: Configure
52 run: |
53 cmake -S . \
54 -B build \
55 -D CMAKE_BUILD_TYPE=Release \
56 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/../local
57
58 - name: Build
59 run: cmake --build build --config Release --verbose
60
61 - name: Install
62 run: cmake --install build --config Release
63
64 - name: Consume from the build directory - Configure
65 run: |
66 cmake -S tests/cmake \
67 -B consumer-build \
68 -D CMAKE_BUILD_TYPE=Release \
69 -D LibreSSL_DIR=$GITHUB_WORKSPACE/build
70 - name: Consume from the build directory - Build
71 run: cmake --build consumer-build --config Release --verbose
72
73 - name: Consume from the install directory (CMAKE_PREFIX_PATH) - Configure
74 run: |
75 cmake -S tests/cmake \
76 -B consumer-install-prefix \
77 -D CMAKE_BUILD_TYPE=Release \
78 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/../local
79 - name: Consume from the install directory (CMAKE_PREFIX_PATH) - Build
80 run: cmake --build consumer-install-prefix --config Release --verbose
81
82 - name: Consume from the install directory (LibreSSL_DIR) - Configure
83 run: |
84 cmake -S tests/cmake \
85 -B consumer-install-dir \
86 -D CMAKE_BUILD_TYPE=Release \
87 -D LibreSSL_DIR=$GITHUB_WORKSPACE/../local/lib/cmake/LibreSSL
88 - name: Consume from the install directory (LibreSSL_DIR) - Build
89 run: cmake --build consumer-install-dir --config Release --verbose
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
index 112678f..8d0ad11 100644
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -13,7 +13,7 @@ concurrency:
13jobs: 13jobs:
14 scan: 14 scan:
15 name: "Scan" 15 name: "Scan"
16 runs-on: "ubuntu-latest" 16 runs-on: "ubuntu-24.04"
17 if: github.repository_owner == 'libressl' # Prevent running on forks 17 if: github.repository_owner == 'libressl' # Prevent running on forks
18 permissions: 18 permissions:
19 contents: read 19 contents: read
diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml
index 07f140d..013480f 100644
--- a/.github/workflows/emscripten.yml
+++ b/.github/workflows/emscripten.yml
@@ -14,7 +14,7 @@ concurrency:
14jobs: 14jobs:
15 test: 15 test:
16 name: "Emscripten" 16 name: "Emscripten"
17 runs-on: "ubuntu-latest" 17 runs-on: "ubuntu-24.04"
18 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 18 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
19 permissions: 19 permissions:
20 contents: read 20 contents: read
@@ -42,7 +42,7 @@ jobs:
42 # Test ASAN with and without ASM enabled. 42 # Test ASAN with and without ASM enabled.
43 test-asan: 43 test-asan:
44 name: "ASAN (no-asm)" 44 name: "ASAN (no-asm)"
45 runs-on: "ubuntu-latest" 45 runs-on: "ubuntu-24.04"
46 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 46 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
47 permissions: 47 permissions:
48 contents: read 48 contents: read
diff --git a/.github/workflows/fedora-rawhide.yml b/.github/workflows/fedora-rawhide.yml
index ec3c63d..dff4b6a 100644
--- a/.github/workflows/fedora-rawhide.yml
+++ b/.github/workflows/fedora-rawhide.yml
@@ -18,15 +18,15 @@ jobs:
18 matrix: 18 matrix:
19 cc: [ gcc, clang ] 19 cc: [ gcc, clang ]
20 name: ${{ matrix.cc }} 20 name: ${{ matrix.cc }}
21 runs-on: ubuntu-latest 21 runs-on: ubuntu-24.04
22 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 22 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
23 container: 23 container:
24 image: fedora:rawhide 24 image: fedora:rawhide
25 steps: 25 steps:
26 - uses: actions/checkout@v3 26 - uses: actions/checkout@v4
27 - name: Install dependencies 27 - name: Install dependencies
28 run: | 28 run: |
29 dnf -y install git make clang cmake ninja-build autoconf automake libtool diffutils patch 29 dnf -y install git make clang cmake ninja-build autoconf automake libtool diffutils patch gawk
30 - name: Pull upstream source 30 - name: Pull upstream source
31 run: | 31 run: |
32 ./update.sh 32 ./update.sh
diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml
new file mode 100644
index 0000000..850dbe2
--- /dev/null
+++ b/.github/workflows/freebsd.yml
@@ -0,0 +1,71 @@
1# GitHub Actions workflow to run tests on a FreeBSD VM.
2name: "FreeBSD"
3
4on:
5 workflow_dispatch:
6 schedule:
7 - cron: "0 0 * * *" # At 00:00 daily.
8
9concurrency:
10 group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
11 cancel-in-progress: true
12
13env:
14 FREEBSD_VERSION: "14.1"
15
16jobs:
17 autoconf:
18 name: "autoconf"
19 runs-on: ubuntu-24.04
20 if: github.repository_owner == 'libressl' || github.event_name != 'schedule'
21 permissions:
22 contents: read
23 steps:
24 - name: "Checkout repository"
25 uses: actions/checkout@v4
26
27 - name: "Setup"
28 run: |
29 sudo apt-get update
30 sudo apt-get install -y automake autoconf libtool
31 ./autogen.sh
32
33 - name: "Build on VM"
34 uses: vmactions/freebsd-vm@v1
35 with:
36 release: "${{ env.FREEBSD_VERSION }}"
37 copyback: false
38 prepare: |
39 pkg install -y autoconf automake libtool
40 run: |
41 ./configure
42 make -j2 check || (cat tests/test-suite.log && exit 1)
43
44 cmake:
45 name: "cmake"
46 runs-on: ubuntu-24.04
47 if: github.repository_owner == 'libressl' || github.event_name != 'schedule'
48 permissions:
49 contents: read
50 steps:
51 - name: "Checkout repository"
52 uses: actions/checkout@v4
53
54 - name: "Setup"
55 run: |
56 sudo apt-get update
57 sudo apt-get install -y automake autoconf libtool
58 ./autogen.sh
59
60 - name: "Build on VM"
61 uses: vmactions/freebsd-vm@v1
62 with:
63 release: "${{ env.FREEBSD_VERSION }}"
64 copyback: false
65 prepare: |
66 pkg install -y cmake ninja
67 run: |
68 export CTEST_OUTPUT_ON_FAILURE=1
69 cmake -G Ninja -B build
70 ninja -C build
71 ninja -C build test
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 5c85d4b..8334ae6 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -22,22 +22,25 @@ jobs:
22 strategy: 22 strategy:
23 fail-fast: false 23 fail-fast: false
24 matrix: 24 matrix:
25 os: ["ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04"] 25 os: ["ubuntu-22.04", "ubuntu-24.04"]
26 arch: ["native", "arm32", "arm64", "mingw32", "mingw64", "mips32", "mips64"] 26 arch: ["native", "arm32", "arm64", "mingw32", "mingw64", "mips32", "mips64"]
27 compiler: ["gcc"] 27 compiler: ["gcc"]
28 include: 28 include:
29 - os: "ubuntu-20.04" 29 - os: "ubuntu-22.04"
30 arch: "native" 30 arch: "native"
31 compiler: "clang" 31 compiler: "clang"
32 - os: "ubuntu-22.04" 32 - os: "ubuntu-24.04"
33 arch: "native" 33 arch: "native"
34 compiler: "clang" 34 compiler: "clang"
35 - os: "ubuntu-24.04" # loong64
36 arch: "loong64"
37 compiler: "gcc"
35 steps: 38 steps:
36 - name: "Checkout repository" 39 - name: "Checkout repository"
37 uses: actions/checkout@v4 40 uses: actions/checkout@v4
38 41
39 - name: "Run tests" 42 - name: "Run tests"
40 run: ./scripts/test 43 run: ./scripts/test || (status=$?; cat tests/test-suite.log; exit $status)
41 env: 44 env:
42 ARCH: "${{ matrix.arch }}" 45 ARCH: "${{ matrix.arch }}"
43 CC: "${{ matrix.compiler }}" 46 CC: "${{ matrix.compiler }}"
@@ -45,7 +48,7 @@ jobs:
45 # Test ASAN with and without ASM enabled. 48 # Test ASAN with and without ASM enabled.
46 test-asan: 49 test-asan:
47 name: "ASAN (${{ matrix.asm == 'ON' && 'asm' || 'no-asm' }})" 50 name: "ASAN (${{ matrix.asm == 'ON' && 'asm' || 'no-asm' }})"
48 runs-on: "ubuntu-latest" 51 runs-on: "ubuntu-24.04"
49 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 52 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
50 permissions: 53 permissions:
51 contents: read 54 contents: read
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index d5dd3eb..ac29bc0 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -21,7 +21,7 @@ jobs:
21 strategy: 21 strategy:
22 fail-fast: false 22 fail-fast: false
23 matrix: 23 matrix:
24 os: ["macos-14", "macos-13", "macos-12"] 24 os: ["macos-15", "macos-14", "macos-13"]
25 arch: ["arm64", "x86_64"] 25 arch: ["arm64", "x86_64"]
26 steps: 26 steps:
27 - name: "Install required packages" 27 - name: "Install required packages"
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c2e94b8..c135920 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,7 +15,7 @@ permissions:
15jobs: 15jobs:
16 release: 16 release:
17 name: "Release" 17 name: "Release"
18 runs-on: "ubuntu-latest" 18 runs-on: "ubuntu-24.04"
19 outputs: 19 outputs:
20 upload_url: "${{ steps.create_release.outputs.upload_url }}" 20 upload_url: "${{ steps.create_release.outputs.upload_url }}"
21 steps: 21 steps:
@@ -29,7 +29,7 @@ jobs:
29 29
30 - name: "Create GitHub release" 30 - name: "Create GitHub release"
31 id: create_release 31 id: create_release
32 uses: softprops/action-gh-release@v1 32 uses: softprops/action-gh-release@v2
33 with: 33 with:
34 body_path: "${{ github.workspace }}/release-changelog.txt" 34 body_path: "${{ github.workspace }}/release-changelog.txt"
35 35
@@ -72,14 +72,10 @@ jobs:
72 run: cmake --install build --config Release 72 run: cmake --install build --config Release
73 73
74 - shell: pwsh 74 - shell: pwsh
75 run: Compress-Archive -Path local\* local.zip 75 run: Compress-Archive -Path local\* "libressl_${{ github.ref_name }}_windows_${{ matrix.arch }}.zip"
76 76
77 - name: "Upload release artifact" 77 - name: "Upload release artifact"
78 uses: actions/upload-release-asset@v1 78 uses: softprops/action-gh-release@v2
79 env:
80 GITHUB_TOKEN: "${{ github.token }}"
81 with: 79 with:
82 upload_url: "${{ needs.release.outputs.upload_url }}" 80 files: |
83 asset_path: "local.zip" 81 libressl_${{ github.ref_name }}_windows_${{ matrix.arch }}.zip
84 asset_name: "libressl_${{ github.ref_name }}_windows_${{ matrix.arch }}.zip"
85 asset_content_type: "application/zip"
diff --git a/.github/workflows/rust-openssl.yml b/.github/workflows/rust-openssl.yml
index b707c4b..4ff41c0 100644
--- a/.github/workflows/rust-openssl.yml
+++ b/.github/workflows/rust-openssl.yml
@@ -13,7 +13,7 @@ concurrency:
13jobs: 13jobs:
14 test: 14 test:
15 name: "Test" 15 name: "Test"
16 runs-on: "ubuntu-latest" 16 runs-on: "ubuntu-24.04"
17 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 17 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
18 permissions: 18 permissions:
19 contents: read 19 contents: read
diff --git a/.github/workflows/solaris.yml b/.github/workflows/solaris.yml
index f68a2aa..902e488 100644
--- a/.github/workflows/solaris.yml
+++ b/.github/workflows/solaris.yml
@@ -13,7 +13,7 @@ concurrency:
13jobs: 13jobs:
14 test: 14 test:
15 name: "Solaris" 15 name: "Solaris"
16 runs-on: ubuntu-latest 16 runs-on: ubuntu-24.04
17 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }} 17 if: ${{ github.repository_owner == 'libressl' || github.event_name != 'schedule' }}
18 permissions: 18 permissions:
19 contents: read 19 contents: read
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 6aca153..c4c7d72 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -50,7 +50,7 @@ jobs:
50 50
51 - name: "Configure CMake" 51 - name: "Configure CMake"
52 shell: cmd 52 shell: cmd
53 run: cmake -Bbuild -G "${{ matrix.generator }}" -A ${{ matrix.arch }} DBUILD_SHARED_LIBS=${{ matrix.shared }} -DCMAKE_INSTALL_PREFIX=../local 53 run: cmake -Bbuild -G "${{ matrix.generator }}" -A ${{ matrix.arch }} -D BUILD_SHARED_LIBS=${{ matrix.shared }} -D CMAKE_INSTALL_PREFIX=../local
54 54
55 - name: "Build" 55 - name: "Build"
56 shell: cmd 56 shell: cmd
diff --git a/.gitignore b/.gitignore
index 4f4cf89..7aff24f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,6 +39,7 @@ Makefile.in
39 39
40# CMake stuff 40# CMake stuff
41build 41build
42cmake-build-debug/
42 43
43# Libtool stuff 44# Libtool stuff
44.libs 45.libs
@@ -109,15 +110,17 @@ tests/ctlog.conf
109tests/*.crt 110tests/*.crt
110tests/ec_point_conversion* 111tests/ec_point_conversion*
111tests/ecc_cdh* 112tests/ecc_cdh*
112tests/evp_pkey_check*
113tests/evp_pkey_cleanup* 113tests/evp_pkey_cleanup*
114tests/explicit_bzero* 114tests/explicit_bzero*
115tests/freenull* 115tests/freenull*
116tests/gost2814789t* 116tests/gost2814789t*
117tests/key_schedule* 117tests/key_schedule*
118tests/lhash_test* 118tests/lhash_test*
119tests/mlkem*
119tests/mont* 120tests/mont*
121tests/parse*
120tests/policy* 122tests/policy*
123tests/renegotiation_test*
121tests/rfc3779* 124tests/rfc3779*
122tests/rfc5280time* 125tests/rfc5280time*
123tests/ssl_get_shared_ciphers* 126tests/ssl_get_shared_ciphers*
@@ -141,6 +144,7 @@ tests/x509_algor*
141tests/x509_asn1* 144tests/x509_asn1*
142tests/x509_extensions_test* 145tests/x509_extensions_test*
143tests/x509_info* 146tests/x509_info*
147tests/x509_name_test*
144tests/x509attribute* 148tests/x509attribute*
145tests/x509name* 149tests/x509name*
146tests/x509req_ext* 150tests/x509req_ext*
@@ -235,10 +239,16 @@ include/openssl/*.h
235 239
236/crypto/* 240/crypto/*
237!/crypto/Makefile.am.* 241!/crypto/Makefile.am.*
242!/crypto/arch/
243!/crypto/arch/mips/*
244!/crypto/compat/
245/crypto/compat/*
238!/crypto/compat/arc4random.h 246!/crypto/compat/arc4random.h
239!/crypto/compat/b_win.c 247!/crypto/compat/b_win.c
240!/crypto/compat/explicit_bzero_win.c 248!/crypto/compat/explicit_bzero_win.c
241!/crypto/compat/freezero.c 249!/crypto/compat/freezero.c
250!/crypto/compat/getdelim.c
251!/crypto/compat/getline.c
242!/crypto/compat/getpagesize.c 252!/crypto/compat/getpagesize.c
243!/crypto/compat/posix_win.c 253!/crypto/compat/posix_win.c
244!/crypto/compat/bsd_asprintf.c 254!/crypto/compat/bsd_asprintf.c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c496ad9..8437e02 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ if(MSVC)
3 cmake_policy(SET CMP0091 NEW) 3 cmake_policy(SET CMP0091 NEW)
4endif() 4endif()
5 5
6project (LibreSSL C ASM) 6project(LibreSSL LANGUAGES C ASM)
7 7
8include(CheckFunctionExists) 8include(CheckFunctionExists)
9include(CheckSymbolExists) 9include(CheckSymbolExists)
@@ -72,10 +72,6 @@ endforeach()
72 72
73set(BUILD_NC true) 73set(BUILD_NC true)
74 74
75if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
76 add_definitions(-fno-common)
77endif()
78
79if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") 75if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
80 add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__) 76 add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__)
81 add_definitions(-DHAVE_ATTRIBUTE__DEAD__) 77 add_definitions(-DHAVE_ATTRIBUTE__DEAD__)
@@ -89,6 +85,10 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
89 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread) 85 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread)
90endif() 86endif()
91 87
88if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
89 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread)
90endif()
91
92if(WIN32) 92if(WIN32)
93 set(BUILD_NC false) 93 set(BUILD_NC false)
94 if(MINGW) 94 if(MINGW)
@@ -127,7 +127,7 @@ add_definitions(-D__END_HIDDEN_DECLS=)
127set(CMAKE_POSITION_INDEPENDENT_CODE true) 127set(CMAKE_POSITION_INDEPENDENT_CODE true)
128 128
129if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") 129if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
130 add_definitions(-Wno-pointer-sign) 130 add_compile_options(-Wno-pointer-sign)
131endif() 131endif()
132 132
133if(WIN32) 133if(WIN32)
@@ -158,17 +158,21 @@ if(MSVC)
158 set(MSVC_DISABLED_WARNINGS_LIST 158 set(MSVC_DISABLED_WARNINGS_LIST
159 "C4018" # 'expression' : signed/unsigned mismatch 159 "C4018" # 'expression' : signed/unsigned mismatch
160 "C4057" # 'operator' : 'identifier1' indirection to 160 "C4057" # 'operator' : 'identifier1' indirection to
161 # slightly different base types from 'identifier2' 161 # slightly different base types from 'identifier2'
162 "C4100" # 'identifier' : unreferenced formal parameter 162 "C4100" # 'identifier' : unreferenced formal parameter
163 "C4127" # conditional expression is constant 163 "C4127" # conditional expression is constant
164 "C4132" # 'object' : const object should be initialized
164 "C4146" # unary minus operator applied to unsigned type, 165 "C4146" # unary minus operator applied to unsigned type,
165 # result still unsigned 166 # result still unsigned
167 "C4206" # nonstandard extension used : translation unit is empty
166 "C4244" # 'argument' : conversion from 'type1' to 'type2', 168 "C4244" # 'argument' : conversion from 'type1' to 'type2',
167 # possible loss of data 169 # possible loss of data
168 "C4245" # 'conversion' : conversion from 'type1' to 'type2', 170 "C4245" # 'conversion' : conversion from 'type1' to 'type2',
169 # signed/unsigned mismatch 171 # signed/unsigned mismatch
170 "C4267" # 'var' : conversion from 'size_t' to 'type', 172 "C4267" # 'var' : conversion from 'size_t' to 'type',
171 # possible loss of data 173 # possible loss of data
174 "C4295" # 'array' : array is too small to include a terminating
175 # null character
172 "C4389" # 'operator' : signed/unsigned mismatch 176 "C4389" # 'operator' : signed/unsigned mismatch
173 "C4706" # assignment within conditional expression 177 "C4706" # assignment within conditional expression
174 "C4996" # The POSIX name for this item is deprecated. 178 "C4996" # The POSIX name for this item is deprecated.
@@ -200,21 +204,33 @@ else()
200 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") 204 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
201endif() 205endif()
202 206
207# XXX - needs _GNU_SOURCE on linux
203check_function_exists(asprintf HAVE_ASPRINTF) 208check_function_exists(asprintf HAVE_ASPRINTF)
204if(HAVE_ASPRINTF) 209if(HAVE_ASPRINTF)
205 add_definitions(-DHAVE_ASPRINTF) 210 add_definitions(-DHAVE_ASPRINTF)
206endif() 211endif()
207 212
208check_function_exists(getopt HAVE_GETOPT) 213check_symbol_exists(getdelim "stdio.h" HAVE_GETDELIM)
214if(HAVE_GETDELIM)
215 add_definitions(-DHAVE_GETDELIM)
216endif()
217
218check_symbol_exists(getline "stdio.h" HAVE_GETLINE)
219if(HAVE_GETLINE)
220 add_definitions(-DHAVE_GETLINE)
221endif()
222
223check_symbol_exists(getopt "unistd.h" HAVE_GETOPT)
209if(HAVE_GETOPT) 224if(HAVE_GETOPT)
210 add_definitions(-DHAVE_GETOPT) 225 add_definitions(-DHAVE_GETOPT)
211endif() 226endif()
212 227
213check_function_exists(reallocarray HAVE_REALLOCARRAY) 228check_symbol_exists(reallocarray "stdlib.h" HAVE_REALLOCARRAY)
214if(HAVE_REALLOCARRAY) 229if(HAVE_REALLOCARRAY)
215 add_definitions(-DHAVE_REALLOCARRAY) 230 add_definitions(-DHAVE_REALLOCARRAY)
216endif() 231endif()
217 232
233# XXX strcasecmp() is in strings.h which isn't available everywhere
218check_function_exists(strcasecmp HAVE_STRCASECMP) 234check_function_exists(strcasecmp HAVE_STRCASECMP)
219if(HAVE_STRCASECMP) 235if(HAVE_STRCASECMP)
220 add_definitions(-DHAVE_STRCASECMP) 236 add_definitions(-DHAVE_STRCASECMP)
@@ -222,18 +238,18 @@ endif()
222 238
223# Emscripten's strlcat and strlcpy triggers ASAN errors 239# Emscripten's strlcat and strlcpy triggers ASAN errors
224if(NOT EMSCRIPTEN) 240if(NOT EMSCRIPTEN)
225 check_function_exists(strlcat HAVE_STRLCAT) 241 check_symbol_exists(strlcat "string.h" HAVE_STRLCAT)
226 if(HAVE_STRLCAT) 242 if(HAVE_STRLCAT)
227 add_definitions(-DHAVE_STRLCAT) 243 add_definitions(-DHAVE_STRLCAT)
228 endif() 244 endif()
229 245
230 check_function_exists(strlcpy HAVE_STRLCPY) 246 check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
231 if(HAVE_STRLCPY) 247 if(HAVE_STRLCPY)
232 add_definitions(-DHAVE_STRLCPY) 248 add_definitions(-DHAVE_STRLCPY)
233 endif() 249 endif()
234endif() 250endif()
235 251
236check_function_exists(strndup HAVE_STRNDUP) 252check_symbol_exists(strndup "string.h" HAVE_STRNDUP)
237if(HAVE_STRNDUP) 253if(HAVE_STRNDUP)
238 add_definitions(-DHAVE_STRNDUP) 254 add_definitions(-DHAVE_STRNDUP)
239endif() 255endif()
@@ -242,62 +258,64 @@ if(WIN32)
242 set(HAVE_STRNLEN true) 258 set(HAVE_STRNLEN true)
243 add_definitions(-DHAVE_STRNLEN) 259 add_definitions(-DHAVE_STRNLEN)
244else() 260else()
245 check_function_exists(strnlen HAVE_STRNLEN) 261 check_symbol_exists(strnlen "string.h" HAVE_STRNLEN)
246 if(HAVE_STRNLEN) 262 if(HAVE_STRNLEN)
247 add_definitions(-DHAVE_STRNLEN) 263 add_definitions(-DHAVE_STRNLEN)
248 endif() 264 endif()
249endif() 265endif()
250 266
251check_function_exists(strsep HAVE_STRSEP) 267check_symbol_exists(strsep "string.h" HAVE_STRSEP)
252if(HAVE_STRSEP) 268if(HAVE_STRSEP)
253 add_definitions(-DHAVE_STRSEP) 269 add_definitions(-DHAVE_STRSEP)
254endif() 270endif()
255 271
256check_function_exists(strtonum HAVE_STRTONUM) 272check_symbol_exists(strtonum "stdlib.h" HAVE_STRTONUM)
257if(HAVE_STRTONUM) 273if(HAVE_STRTONUM)
258 add_definitions(-DHAVE_STRTONUM) 274 add_definitions(-DHAVE_STRTONUM)
259endif() 275endif()
260 276
261check_function_exists(arc4random_buf HAVE_ARC4RANDOM_BUF) 277check_symbol_exists(arc4random_buf "stdlib.h" HAVE_ARC4RANDOM_BUF)
262if(HAVE_ARC4RANDOM_BUF) 278if(HAVE_ARC4RANDOM_BUF)
263 add_definitions(-DHAVE_ARC4RANDOM_BUF) 279 add_definitions(-DHAVE_ARC4RANDOM_BUF)
264endif() 280endif()
265 281
266check_function_exists(arc4random_uniform HAVE_ARC4RANDOM_UNIFORM) 282check_symbol_exists(arc4random_uniform "stdlib.h" HAVE_ARC4RANDOM_UNIFORM)
267if(HAVE_ARC4RANDOM_UNIFORM) 283if(HAVE_ARC4RANDOM_UNIFORM)
268 add_definitions(-DHAVE_ARC4RANDOM_UNIFORM) 284 add_definitions(-DHAVE_ARC4RANDOM_UNIFORM)
269endif() 285endif()
270 286
271check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO) 287check_symbol_exists(explicit_bzero "string.h" HAVE_EXPLICIT_BZERO)
272if(HAVE_EXPLICIT_BZERO) 288if(HAVE_EXPLICIT_BZERO)
273 add_definitions(-DHAVE_EXPLICIT_BZERO) 289 add_definitions(-DHAVE_EXPLICIT_BZERO)
274endif() 290endif()
275 291
276check_function_exists(getauxval HAVE_GETAUXVAL) 292check_symbol_exists(getauxval "sys/auxv.h" HAVE_GETAUXVAL)
277if(HAVE_GETAUXVAL) 293if(HAVE_GETAUXVAL)
278 add_definitions(-DHAVE_GETAUXVAL) 294 add_definitions(-DHAVE_GETAUXVAL)
279endif() 295endif()
280 296
297# XXX macos fails to find getentropy with check_symbol_exists()
281check_function_exists(getentropy HAVE_GETENTROPY) 298check_function_exists(getentropy HAVE_GETENTROPY)
282if(HAVE_GETENTROPY) 299if(HAVE_GETENTROPY)
283 add_definitions(-DHAVE_GETENTROPY) 300 add_definitions(-DHAVE_GETENTROPY)
284endif() 301endif()
285 302
286check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE) 303check_symbol_exists(getpagesize "unistd.h" HAVE_GETPAGESIZE)
287if(HAVE_GETPAGESIZE) 304if(HAVE_GETPAGESIZE)
288 add_definitions(-DHAVE_GETPAGESIZE) 305 add_definitions(-DHAVE_GETPAGESIZE)
289endif() 306endif()
290 307
291check_function_exists(getprogname HAVE_GETPROGNAME) 308check_symbol_exists(getprogname "stdlib.h" HAVE_GETPROGNAME)
292if(HAVE_GETPROGNAME) 309if(HAVE_GETPROGNAME)
293 add_definitions(-DHAVE_GETPROGNAME) 310 add_definitions(-DHAVE_GETPROGNAME)
294endif() 311endif()
295 312
296check_function_exists(syslog_r HAVE_SYSLOG_R) 313check_symbol_exists(syslog_r "syslog.h;stdarg.h" HAVE_SYSLOG_R)
297if(HAVE_SYSLOG_R) 314if(HAVE_SYSLOG_R)
298 add_definitions(-DHAVE_SYSLOG_R) 315 add_definitions(-DHAVE_SYSLOG_R)
299endif() 316endif()
300 317
318# XXX - needs _GNU_SOURCE on linux
301check_function_exists(syslog HAVE_SYSLOG) 319check_function_exists(syslog HAVE_SYSLOG)
302if(HAVE_SYSLOG) 320if(HAVE_SYSLOG)
303 add_definitions(-DHAVE_SYSLOG) 321 add_definitions(-DHAVE_SYSLOG)
@@ -308,16 +326,17 @@ if(HAVE_TIMESPECSUB)
308 add_definitions(-DHAVE_TIMESPECSUB) 326 add_definitions(-DHAVE_TIMESPECSUB)
309endif() 327endif()
310 328
311check_function_exists(timingsafe_bcmp HAVE_TIMINGSAFE_BCMP) 329check_symbol_exists(timingsafe_bcmp "string.h" HAVE_TIMINGSAFE_BCMP)
312if(HAVE_TIMINGSAFE_BCMP) 330if(HAVE_TIMINGSAFE_BCMP)
313 add_definitions(-DHAVE_TIMINGSAFE_BCMP) 331 add_definitions(-DHAVE_TIMINGSAFE_BCMP)
314endif() 332endif()
315 333
316check_function_exists(timingsafe_memcmp HAVE_TIMINGSAFE_MEMCMP) 334check_symbol_exists(timingsafe_memcmp "string.h" HAVE_TIMINGSAFE_MEMCMP)
317if(HAVE_TIMINGSAFE_MEMCMP) 335if(HAVE_TIMINGSAFE_MEMCMP)
318 add_definitions(-DHAVE_TIMINGSAFE_MEMCMP) 336 add_definitions(-DHAVE_TIMINGSAFE_MEMCMP)
319endif() 337endif()
320 338
339# XXX - needs _GNU_SOURCE on linux
321check_function_exists(memmem HAVE_MEMMEM) 340check_function_exists(memmem HAVE_MEMMEM)
322if(HAVE_MEMMEM) 341if(HAVE_MEMMEM)
323 add_definitions(-DHAVE_MEMMEM) 342 add_definitions(-DHAVE_MEMMEM)
@@ -366,6 +385,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)")
366elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)") 385elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)")
367 set(ENABLE_ASM false) 386 set(ENABLE_ASM false)
368 set(HOST_I386 true) 387 set(HOST_I386 true)
388elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
389 set(HOST_LOONGARCH64 true)
369elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") 390elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64")
370 set(HOST_MIPS64 true) 391 set(HOST_MIPS64 true)
371elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") 392elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips")
@@ -373,7 +394,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips")
373elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc") 394elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc")
374 set(HOST_POWERPC true) 395 set(HOST_POWERPC true)
375elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64") 396elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
376 set(HOST_PPC64 true) 397 set(HOST_POWERPC64 true)
377elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") 398elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64")
378 set(HOST_RISCV64 true) 399 set(HOST_RISCV64 true)
379elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc64") 400elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc64")
@@ -384,21 +405,20 @@ endif()
384 405
385if(ENABLE_ASM) 406if(ENABLE_ASM)
386 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF") 407 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF")
387 if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64)") 408 if(HOST_X86_64)
388 set(HOST_ASM_ELF_X86_64 true) 409 set(HOST_ASM_ELF_X86_64 true)
389 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" AND 410 elseif(HOST_ARM)
390 NOT CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
391 set(HOST_ASM_ELF_ARMV4 true) 411 set(HOST_ASM_ELF_ARMV4 true)
392 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") 412 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386)
393 set(HOST_ASM_ELF_X86_64 true) 413 set(HOST_ASM_ELF_X86_64 true)
394 endif() 414 endif()
395 add_definitions(-DHAVE_GNU_STACK) 415 add_definitions(-DHAVE_GNU_STACK)
396 elseif(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") 416 elseif(APPLE AND HOST_X86_64)
397 set(HOST_ASM_MACOSX_X86_64 true) 417 set(HOST_ASM_MACOSX_X86_64 true)
398 elseif(MSVC AND (CMAKE_GENERATOR MATCHES "Win64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64")) 418 elseif(MSVC AND (CMAKE_GENERATOR MATCHES "Win64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64"))
399 set(HOST_ASM_MASM_X86_64 true) 419 set(HOST_ASM_MASM_X86_64 true)
400 ENABLE_LANGUAGE(ASM_MASM) 420 ENABLE_LANGUAGE(ASM_MASM)
401 elseif(MINGW AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") 421 elseif(MINGW AND HOST_X86_64)
402 set(HOST_ASM_MINGW64_X86_64 true) 422 set(HOST_ASM_MINGW64_X86_64 true)
403 endif() 423 endif()
404endif() 424endif()
@@ -441,10 +461,10 @@ if(OPENSSLDIR STREQUAL "")
441 if(WIN32) 461 if(WIN32)
442 set(OPENSSLDIR "C:/Windows/libressl/ssl") 462 set(OPENSSLDIR "C:/Windows/libressl/ssl")
443 else() 463 else()
444 set(OPENSSLDIR "${CMAKE_INSTALL_PREFIX}/etc/ssl") 464 set(OPENSSLDIR "${CMAKE_INSTALL_SYSCONFDIR}/ssl")
445 endif() 465 endif()
446 466
447 set(CONF_DIR "${CMAKE_INSTALL_PREFIX}/etc/ssl") 467 set(CONF_DIR "${CMAKE_INSTALL_SYSCONFDIR}/ssl")
448else() 468else()
449 set(CONF_DIR "${OPENSSLDIR}") 469 set(CONF_DIR "${OPENSSLDIR}")
450endif() 470endif()
@@ -513,7 +533,7 @@ if(ENABLE_LIBRESSL_INSTALL)
513 set(prefix ${CMAKE_INSTALL_PREFIX}) 533 set(prefix ${CMAKE_INSTALL_PREFIX})
514 set(exec_prefix \${prefix}) 534 set(exec_prefix \${prefix})
515 set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR}) 535 set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR})
516 set(includedir \${prefix}/include) 536 set(includedir \${prefix}/${CMAKE_INSTALL_INCLUDEDIR})
517 if(PLATFORM_LIBS) 537 if(PLATFORM_LIBS)
518 string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}") 538 string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}")
519 endif() 539 endif()
diff --git a/ChangeLog b/ChangeLog
index c03ff15..52aa44d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
1Because this project is maintained both in the OpenBSD tree using CVS and in 1Because this project is maintained both in the OpenBSD tree using CVS and in
2Git, it can be confusing following all of the changes. 2Git, it can be confusing following all of the changes.
3 3
4Most of the libssl and libcrypto source code is is here in OpenBSD CVS: 4Most of the libssl and libcrypto source code is here in OpenBSD CVS:
5 5
6 https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/ 6 https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/
7 7
@@ -28,12 +28,95 @@ history is also available from Git.
28 28
29LibreSSL Portable Release Notes: 29LibreSSL Portable Release Notes:
30 30
314.0.0 - In development 314.1.0 - In development
32 32
33 * Portable changes 33 * Portable changes
34 - Added initial Emscripten support in CMake builds 34 - Added initial experimental support for loongarch64.
35 - Fixed compilation for mips32 and reenable CI.
36 - Fixed CMake builds on FreeBSD.
37 - Fixed the --prefix option for cmake --install.
38 - Fixed tests for MinGW due to missing sh(1).
39 * Internal improvements
40 - Cleaned up the error implementation.
41 - Many bug fixes and simplifications in the EC ASN.1 code.
42 - Corrected DER encoding for EC keys and parameters.
43 - Polished EC_POINT_{oct2point,point2oct}() internals.
44 - Rewrote the wNAF code for fast ECDSA verification.
45 - Improved the code setting compressed coordinates for EC points.
46 - Reworked CPU capabilities detection for amd64 and aarch64.
47 - New SHA-1, SHA-256 and SHA-512 assembly implementations for amd64.
48 These make use of the SHA-NI instruction if it is available and
49 replace the perl-generated assembly optimized for museum pieces.
50 These are not yet enabled in libressl-portable.
51 - New SHA-256 and SHA-512 assembly implementations for aarch64
52 making use of the ARM Cryptographic Extension (CE). Not yet
53 enabled in libressl-portable.
54 - New simplified, readable MD5 implementation for amd64.
55 - Rewrote BN_bn2binpad() and its lebin siblings.
56 - The BIGNUMs in EC_GROUP and EC_POINT are now heap allocated.
57 - Rewrote TS_ASN1_INTEGER_print_bio().
58 - Improved bit counter handling in MD5.
59 - Simplified and cleaned up the BN_RECP_CTX internals.
60 - Improved SM4 to match other symmetric ciphers more closely.
61 - Rewrote X509_NAME_oneline() and X509_NAME_print() using CBS/CBB.
62 - CRLs are now cached in the issuer cache like certificates.
63 - Replaced combinations of BN_MONT_CTX_new/set with an internal
64 BN_MONT_CTX_create().
65 - Replaced BN_bn2hex() reimplementation in openssl(1) ca with
66 a poper API call.
67 - Fixed integer overflows due to signed shift in obj_dat.c.
68 - Fixed a few memory leaks in legacy code.
69 - Improved some X509_VERIFY_PARAM internals and avoid an out of
70 bounds read from public API.
71 - Imported ML-KEM 768 and 1024 from BoringSSL (not yet public API).
72 * Compatibility changes
73 - Added an OPENSSL_INIT_NO_ATEXIT flag for OPENSSL_init_crypto().
74 It has no effect since LibreSSL doesn't call atexit().
75 - Elliptic curve parameters are only accepted if they encode a
76 built-in curve.
77 - EC_METHOD is no longer public and the API exposing it has been
78 removed. This includes EC_GROUP_new(), EC_GFp_mont_method(),
79 EC_GROUP_method_of() and EC_METHOD_get_field_type().
80 - The precomputation stubs for EC_GROUP were removed.
81 - The API setting Jacobian projective coordinates for a point was
82 removed as were EC_POINTs_{mul,make_affine}().
83 - All elliptic curves over fields with less than 224 bits and a
84 few more were removed from the built-in curves. This includes
85 all WTLS curves and P-192.
86 - It is no longer necessary to set RSA_FLAG_SIGN_VER to use the
87 sign and verify handlers set with RSA_meth_set_{sign,verify}.
88 - Removed the -C option to generate "C code" from the openssl(1)
89 dh, dhparam, dsaparam, ecparam, and x509 subcommands.
90 - Removed #error in headers when OPENSSL_NO_* is defined.
91 - CRYPTO_set_mem_functions() now matches OpenSSL 1.1 and
92 CRYPTO_set_mem_ex_functions() was removed.
93 - The tls_session_secret_cb_fn type now matches OpenSSL 1.1.
94 - Unexport X509_NAME_print() and X509_OBJECT_up_ref_count().
95 - const corrected UI_OpenSSL() and BN_MONT_CTX_copy().
96 - Support OPENSSL_NO_FILENAMES.
97 - Support SSL_OP_NO_RENEGOTIATION and SSL_OP_ALLOW_CLIENT_RENEGOTIATION.
98 - Export PKCS12_key_gen_uni() again.
99 * New features
100 - libtls has a new tls_peer_cert_common_name() API call to retrieve
101 the peer's common name without having to inspect the PEM.
102 * Bug fixes
103 - Plugged a leak in eckey_compute_pubkey().
104 - Again allow the magic values -1, -2 and -3 for the salt length
105 of an RSA-PSS key in the EVP_PKEY_CTX_ctrl_str() interface.
106 * Documentation
107 - The remaining undocumented public EVP API is now documented.
108 Reorganization of existing documentation for clarity and accuracy.
109 * Testing and proactive security
110 - Improved regress coverage of the EC code.
111
1124.0.0 - Stable release
113
114 * Portable changes
115 - Added initial Emscripten support in CMake builds.
35 - Removed timegm() compatibility layer since all uses were replaced 116 - Removed timegm() compatibility layer since all uses were replaced
36 with OPENSSL_timegm(). Cleaned up the corresponding test harness. 117 with OPENSSL_timegm(). Cleaned up the corresponding test harness.
118 - The mips32 platform is no longer actively supported.
119 - Fixed Windows support for dates beyond 2038.
37 * Internal improvements 120 * Internal improvements
38 - Cleaned up parts of the conf directory. Simplified some logic, 121 - Cleaned up parts of the conf directory. Simplified some logic,
39 fixed memory leaks. 122 fixed memory leaks.
@@ -66,29 +149,68 @@ LibreSSL Portable Release Notes:
66 - Made most error string tables const. 149 - Made most error string tables const.
67 - Removed handling for SSLv2 client hello messages. 150 - Removed handling for SSLv2 client hello messages.
68 - Improvements in the openssl(1) speed app's signal handler. 151 - Improvements in the openssl(1) speed app's signal handler.
69 - Added support for TLS PRF in the EVP KDF API. 152 - Cleaned up various X509v3_* extension API.
153 - Unified the X.509v3 extension methods.
154 - Cleaned up cipher handling in SSL_SESSION.
155 - Removed get_cipher from SSL_METHOD.
156 - Rewrote CRYPTO_EX_DATA from scratch. The only intentional change of
157 behavior is that there is now a hard limit on the number of indexes
158 that can be allocated.
159 - Removed bogus connect() call from netcat.
160 - Uses of atoi() and strtol() in libcrypto were replaced with
161 strtonum().
162 - Introduced crypto_arch.h which will contain the architecture
163 dependent code and defines rather than the public opensslconf.h.
164 - OPENSSL_cpu_caps() is now architecture independent.
165 - Reorganized the DES implementation to use fewer files and removed
166 optimizations for ancient processors and compilers.
167 * New features
168 - Added CRLfile option to the cms command of openssl(1) to specify
169 additional CRLs for use during verification.
70 * Documentation improvements 170 * Documentation improvements
71 - Removed documentation of no longer existing API. 171 - Removed documentation of no longer existing API.
172 - Unified the description of the obsolete ENGINE parameter that
173 needs to remain in many functions and should always be NULL.
72 * Testing and proactive security 174 * Testing and proactive security
73 - Switched the remaining tests to new certs. 175 - Switched the remaining tests to new certs.
74 * Compatibility changes 176 * Compatibility changes
177 - Protocol parsing in libtls was changed. The unsupported TLSv1.1
178 and TLSv1.0 protocols are ignored and no longer enable or disable
179 TLSv1.2 in surprising ways.
180 - The dangerous EVP_PKEY*_check(3) family of functions was removed.
181 The openssl(1) pkey and pkeyparam commands no longer support the
182 -check and -pubcheck flags.
75 - The one-step hashing functions, MD4(), MD5(), RIPEMD160(), SHA1(), 183 - The one-step hashing functions, MD4(), MD5(), RIPEMD160(), SHA1(),
76 all SHA-2, and HMAC() no longer support returning a static buffer. 184 all SHA-2, and HMAC() no longer support returning a static buffer.
77 Callers must pass in a correctly sized buffer. 185 Callers must pass in a correctly sized buffer.
186 - Support for Whirlpool was removed. Applications still using this
187 should honor OPENSSL_NO_WHIRLPOOL.
78 - Removed workaround for F5 middle boxes. 188 - Removed workaround for F5 middle boxes.
79 - Removed the useless pem2.h, a public header that was added since 189 - Removed the useless pem2.h, a public header that was added since
80 it was too hard to add a prototype to one file. 190 it was too hard to add a single prototype to one file.
191 - Removed conf_api.h and the public API therein.
192 - Removed ssl2.h, ssl23.h and ui_compat.h.
193 - Numerous conf and attribute functions were removed. Some unused
194 types were removed, others were made opaque.
195 - Removed the deprecated HMAC_Init() function.
196 - Removed OPENSSL_load_builtin_modules().
197 - Removed X509_REQ_{get,set}_extension_nids().
198 - X509_check_trust() and was removed, X509_VAL was made opaque.
81 - Only specified versions can be set on certs, CRLs and CSRs. 199 - Only specified versions can be set on certs, CRLs and CSRs.
82 - Prepared X509_REQ_{get,set}_extension_nids() for removal.
83 - Removed unused PEM_USER and PEM_CTX types from pem.h. 200 - Removed unused PEM_USER and PEM_CTX types from pem.h.
84 - Removed typdefs for COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, 201 - Removed typdefs for COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE,
85 STORE_METHOD, and SSL_AEAD_CTX. 202 STORE_METHOD, and SSL_AEAD_CTX.
86 - i2d_ASN1_OBJECT() now returns -1 on error like most other i2d_*. 203 - i2d_ASN1_OBJECT() now returns -1 on error like most other i2d_*.
87 - SPKAC support was removed from openssl(1) 204 - SPKAC support was removed from openssl(1).
88 - Added TLS1-PRF support to the EVP interface. 205 - Added TLS1-PRF support to the EVP interface.
89 - Cleaned up various X509v3_* extension API. 206 - Support for attributes in EVP_PKEYs was removed.
90 - Unified the X.509v3 extension methods. 207 - The X509at_* API is no longer public.
91 - Removed ssl2.h and ssl23.h. 208 - SSL_CTX_set1_cert_store() and SSL_CIPHER_get_handshake_digest()
209 were added to libssl.
210 - The completely broken UI_UTIL password API was removed.
211 - The OpenSSL pkcs12 command and PKCS12_create() no longer support
212 setting the Microsoft-specific Local Key Set and Cryptographic
213 Service Provider attributes.
92 * Bug fixes 214 * Bug fixes
93 - Made ASN1_TIME_set_string() and ASN1_TIME_set_string_X509() match 215 - Made ASN1_TIME_set_string() and ASN1_TIME_set_string_X509() match
94 their documentation. They always set an RFC 5280 conformant time. 216 their documentation. They always set an RFC 5280 conformant time.
@@ -115,6 +237,20 @@ LibreSSL Portable Release Notes:
115 ALPN callback. 237 ALPN callback.
116 - Avoid pushing a spurious error onto the error stack in 238 - Avoid pushing a spurious error onto the error stack in
117 ssl_sigalg_select(). 239 ssl_sigalg_select().
240 - Made fatal alerts fatal in QUIC.
241
2423.9.2 - Stable release
243
244 * Bugfixes
245 - OpenBSD 7.5 errata 003. A missing bounds check could lead to a crash
246 due to dereferencing a zero-sized allocation.
247
2483.9.1 - Stable release
249
250 * Portable changes
251 - Updated tests with expiring certificates
252 - CET-related build fixes for Windows and macOS targets
253 - update libtls linker script to include libssl and libcrypto again
118 254
1193.9.0 - Development release 2553.9.0 - Development release
120 256
@@ -193,6 +329,13 @@ LibreSSL Portable Release Notes:
193 stack. 329 stack.
194 - Made in-place decryption work for EVP_chacha20_poly1305(). 330 - Made in-place decryption work for EVP_chacha20_poly1305().
195 331
3323.8.4 - Stable release
333
334 * Portable changes
335 - Updated tests with expiring certificates
336 - CET-related build fixes for Windows and macOS targets
337 - update libtls linker script to include libssl and libcrypto again
338
1963.8.3 - Stable release 3393.8.3 - Stable release
197 340
198 * Portable changes 341 * Portable changes
diff --git a/FindLibreSSL.cmake b/FindLibreSSL.cmake
index 6bdc069..6779371 100644
--- a/FindLibreSSL.cmake
+++ b/FindLibreSSL.cmake
@@ -81,6 +81,11 @@ if (WIN32)
81 "${_programfiles}/LibreSSL" 81 "${_programfiles}/LibreSSL"
82 ) 82 )
83 unset(_programfiles) 83 unset(_programfiles)
84elseif(APPLE)
85 # Homebrew installs LibreSSL here
86 set(_LIBRESSL_ROOT_PATHS
87 "/usr/local/opt/libressl"
88 )
84else() 89else()
85 set(_LIBRESSL_ROOT_PATHS 90 set(_LIBRESSL_ROOT_PATHS
86 "/usr/local/" 91 "/usr/local/"
diff --git a/apps/nc/CMakeLists.txt b/apps/nc/CMakeLists.txt
index 7bbdb02..d5f7813 100644
--- a/apps/nc/CMakeLists.txt
+++ b/apps/nc/CMakeLists.txt
@@ -22,7 +22,7 @@ else()
22 set(NC_SRC ${NC_SRC} compat/accept4.c) 22 set(NC_SRC ${NC_SRC} compat/accept4.c)
23endif() 23endif()
24 24
25check_function_exists(readpassphrase HAVE_READPASSPHRASE) 25check_symbol_exists(readpassphrase "readpassphrase.h" HAVE_READPASSPHRASE)
26if(HAVE_READPASSPHRASE) 26if(HAVE_READPASSPHRASE)
27 add_definitions(-DHAVE_READPASSPHRASE) 27 add_definitions(-DHAVE_READPASSPHRASE)
28else() 28else()
diff --git a/apps/openssl/Makefile.am b/apps/openssl/Makefile.am
index 810408d..ee1b65b 100644
--- a/apps/openssl/Makefile.am
+++ b/apps/openssl/Makefile.am
@@ -88,11 +88,6 @@ endif
88endif 88endif
89 89
90noinst_HEADERS = apps.h 90noinst_HEADERS = apps.h
91noinst_HEADERS += progs.h
92noinst_HEADERS += s_apps.h
93noinst_HEADERS += testdsa.h
94noinst_HEADERS += testrsa.h
95noinst_HEADERS += timeouts.h
96 91
97EXTRA_DIST = CMakeLists.txt 92EXTRA_DIST = CMakeLists.txt
98 93
diff --git a/apps/openssl/compat/poll_win.c b/apps/openssl/compat/poll_win.c
index c9422b9..30f6b60 100644
--- a/apps/openssl/compat/poll_win.c
+++ b/apps/openssl/compat/poll_win.c
@@ -248,12 +248,12 @@ poll(struct pollfd *pfds, nfds_t nfds, int timeout_ms)
248 timespent_ms = 0; 248 timespent_ms = 0;
249 wait_rc = WAIT_FAILED; 249 wait_rc = WAIT_FAILED;
250 250
251 if (timeout_ms < 0) 251 looptime_ms = (timeout_ms > 100 || timeout_ms == -1) ? 100 : timeout_ms;
252 if (timeout_ms == -1)
252 timeout_ms = INFINITE; 253 timeout_ms = INFINITE;
253 looptime_ms = timeout_ms > 100 ? 100 : timeout_ms;
254 254
255 do { 255 do {
256 struct timeval tv; 256 TIMEVAL tv;
257 tv.tv_sec = 0; 257 tv.tv_sec = 0;
258 tv.tv_usec = looptime_ms * 1000; 258 tv.tv_usec = looptime_ms * 1000;
259 int handle_signaled = 0; 259 int handle_signaled = 0;
diff --git a/configure.ac b/configure.ac
index 87a80cc..7a88f27 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,10 +32,6 @@ LT_INIT([pic-only])
32 32
33CHECK_OS_OPTIONS 33CHECK_OS_OPTIONS
34 34
35if test "$HOST_OS" = "unsupported"; then
36 AC_MSG_ERROR([unsupported platform: $host_os])
37fi
38
39CHECK_C_HARDENING_OPTIONS 35CHECK_C_HARDENING_OPTIONS
40 36
41DISABLE_AS_EXECUTABLE_STACK 37DISABLE_AS_EXECUTABLE_STACK
@@ -90,16 +86,17 @@ AS_CASE([$host_cpu],
90) 86)
91AM_CONDITIONAL([HOST_CPU_IS_INTEL], [test "x$HOSTARCH" = "xintel"]) 87AM_CONDITIONAL([HOST_CPU_IS_INTEL], [test "x$HOSTARCH" = "xintel"])
92 88
93AM_CONDITIONAL([HOST_AARCH64], [test "$host_cpu" = "aarch64"]) 89AM_CONDITIONAL([HOST_AARCH64], [test "$host_cpu" = "aarch64"])
94AM_CONDITIONAL([HOST_ARM], [test "$host_cpu" = "arm"]) 90AM_CONDITIONAL([HOST_ARM], [test "$host_cpu" = "arm"])
95AM_CONDITIONAL([HOST_I386], [test "$host_cpu" = "i386"]) 91AM_CONDITIONAL([HOST_I386], [test "$host_cpu" = "i386"])
96AM_CONDITIONAL([HOST_MIPS], [test "$host_cpu" = "mips"]) 92AM_CONDITIONAL([HOST_LOONGARCH64], [test "$host_cpu" = "loongarch64"])
97AM_CONDITIONAL([HOST_MIPS64], [test "$host_cpu" = "mips64"]) 93AM_CONDITIONAL([HOST_MIPS], [test "$host_cpu" = "mips"])
98AM_CONDITIONAL([HOST_POWERPC], [test "$host_cpu" = "powerpc"]) 94AM_CONDITIONAL([HOST_MIPS64], [test "$host_cpu" = "mips64"])
99AM_CONDITIONAL([HOST_POWERPC64], [test "$host_cpu" = "ppc64"]) 95AM_CONDITIONAL([HOST_POWERPC], [test "$host_cpu" = "powerpc"])
100AM_CONDITIONAL([HOST_RISCV64], [test "$host_cpu" = "riscv64"]) 96AM_CONDITIONAL([HOST_POWERPC64], [test "$host_cpu" = "ppc64"])
101AM_CONDITIONAL([HOST_SPARC64], [test "$host_cpu" = "sparc64"]) 97AM_CONDITIONAL([HOST_RISCV64], [test "$host_cpu" = "riscv64"])
102AM_CONDITIONAL([HOST_X86_64], [test "$host_cpu" = "x86_64"]) 98AM_CONDITIONAL([HOST_SPARC64], [test "$host_cpu" = "sparc64"])
99AM_CONDITIONAL([HOST_X86_64], [test "$host_cpu" = "x86_64"])
103 100
104AC_MSG_CHECKING([if .gnu.warning accepts long strings]) 101AC_MSG_CHECKING([if .gnu.warning accepts long strings])
105AC_LINK_IFELSE([AC_LANG_SOURCE([[ 102AC_LINK_IFELSE([AC_LANG_SOURCE([[
@@ -163,3 +160,7 @@ AM_CONDITIONAL([ENABLE_LIBTLS_ONLY], [test "x$enable_libtls_only" = xyes])
163AC_REQUIRE_AUX_FILE([tap-driver.sh]) 160AC_REQUIRE_AUX_FILE([tap-driver.sh])
164 161
165AC_OUTPUT 162AC_OUTPUT
163
164if test "$HOST_OS" = "unsupported"; then
165 AC_MSG_WARN([unsupported platform: $host_os])
166fi
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 5ee20ff..64bccd8 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -15,11 +15,7 @@ if(HOST_ASM_ELF_ARMV4)
15 add_definitions(-DAES_ASM) 15 add_definitions(-DAES_ASM)
16 add_definitions(-DOPENSSL_BN_ASM_MONT) 16 add_definitions(-DOPENSSL_BN_ASM_MONT)
17 add_definitions(-DGHASH_ASM) 17 add_definitions(-DGHASH_ASM)
18 add_definitions(-DSHA1_ASM)
19 add_definitions(-DSHA256_ASM)
20 add_definitions(-DSHA512_ASM)
21 add_definitions(-DOPENSSL_CPUID_OBJ) 18 add_definitions(-DOPENSSL_CPUID_OBJ)
22 set_property(SOURCE ${ASM_ARMV4_ELF_SRC} PROPERTY LANGUAGE C)
23 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC}) 19 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC})
24endif() 20endif()
25 21
@@ -33,13 +29,8 @@ if(HOST_ASM_ELF_X86_64)
33 bn/modexp512-elf-x86_64.S 29 bn/modexp512-elf-x86_64.S
34 bn/mont-elf-x86_64.S 30 bn/mont-elf-x86_64.S
35 bn/mont5-elf-x86_64.S 31 bn/mont5-elf-x86_64.S
36 md5/md5-elf-x86_64.S
37 modes/ghash-elf-x86_64.S 32 modes/ghash-elf-x86_64.S
38 rc4/rc4-elf-x86_64.S 33 rc4/rc4-elf-x86_64.S
39 sha/sha1-elf-x86_64.S
40 sha/sha256-elf-x86_64.S
41 sha/sha512-elf-x86_64.S
42 cpuid-elf-x86_64.S
43 34
44 bn/arch/amd64/bignum_add.S 35 bn/arch/amd64/bignum_add.S
45 bn/arch/amd64/bignum_cmadd.S 36 bn/arch/amd64/bignum_cmadd.S
@@ -57,24 +48,12 @@ if(HOST_ASM_ELF_X86_64)
57 add_definitions(-DAES_ASM) 48 add_definitions(-DAES_ASM)
58 add_definitions(-DBSAES_ASM) 49 add_definitions(-DBSAES_ASM)
59 add_definitions(-DVPAES_ASM) 50 add_definitions(-DVPAES_ASM)
60 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
61 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
62 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
63 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
64 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
65 add_definitions(-DOPENSSL_IA32_SSE2) 51 add_definitions(-DOPENSSL_IA32_SSE2)
66 add_definitions(-DOPENSSL_BN_ASM_MONT) 52 add_definitions(-DOPENSSL_BN_ASM_MONT)
67 add_definitions(-DOPENSSL_BN_ASM_MONT5) 53 add_definitions(-DOPENSSL_BN_ASM_MONT5)
68 add_definitions(-DMD5_ASM)
69 add_definitions(-DGHASH_ASM) 54 add_definitions(-DGHASH_ASM)
70 add_definitions(-DRSA_ASM) 55 add_definitions(-DRSA_ASM)
71 add_definitions(-DSHA1_ASM)
72 add_definitions(-DSHA256_ASM)
73 add_definitions(-DSHA512_ASM)
74 add_definitions(-DWHIRLPOOL_ASM)
75 add_definitions(-DOPENSSL_CPUID_OBJ)
76 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_ELF_SRC}) 56 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_ELF_SRC})
77 set_property(SOURCE ${ASM_X86_64_ELF_SRC} PROPERTY LANGUAGE C)
78endif() 57endif()
79 58
80if(HOST_ASM_MACOSX_X86_64) 59if(HOST_ASM_MACOSX_X86_64)
@@ -87,13 +66,8 @@ if(HOST_ASM_MACOSX_X86_64)
87 bn/modexp512-macosx-x86_64.S 66 bn/modexp512-macosx-x86_64.S
88 bn/mont-macosx-x86_64.S 67 bn/mont-macosx-x86_64.S
89 bn/mont5-macosx-x86_64.S 68 bn/mont5-macosx-x86_64.S
90 md5/md5-macosx-x86_64.S
91 modes/ghash-macosx-x86_64.S 69 modes/ghash-macosx-x86_64.S
92 rc4/rc4-macosx-x86_64.S 70 rc4/rc4-macosx-x86_64.S
93 sha/sha1-macosx-x86_64.S
94 sha/sha256-macosx-x86_64.S
95 sha/sha512-macosx-x86_64.S
96 cpuid-macosx-x86_64.S
97 71
98 bn/arch/amd64/bignum_add.S 72 bn/arch/amd64/bignum_add.S
99 bn/arch/amd64/bignum_cmadd.S 73 bn/arch/amd64/bignum_cmadd.S
@@ -111,24 +85,12 @@ if(HOST_ASM_MACOSX_X86_64)
111 add_definitions(-DAES_ASM) 85 add_definitions(-DAES_ASM)
112 add_definitions(-DBSAES_ASM) 86 add_definitions(-DBSAES_ASM)
113 add_definitions(-DVPAES_ASM) 87 add_definitions(-DVPAES_ASM)
114 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
115 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
116 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
117 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
118 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
119 add_definitions(-DOPENSSL_IA32_SSE2) 88 add_definitions(-DOPENSSL_IA32_SSE2)
120 add_definitions(-DOPENSSL_BN_ASM_MONT) 89 add_definitions(-DOPENSSL_BN_ASM_MONT)
121 add_definitions(-DOPENSSL_BN_ASM_MONT5) 90 add_definitions(-DOPENSSL_BN_ASM_MONT5)
122 add_definitions(-DMD5_ASM)
123 add_definitions(-DGHASH_ASM) 91 add_definitions(-DGHASH_ASM)
124 add_definitions(-DRSA_ASM) 92 add_definitions(-DRSA_ASM)
125 add_definitions(-DSHA1_ASM)
126 add_definitions(-DSHA256_ASM)
127 add_definitions(-DSHA512_ASM)
128 add_definitions(-DWHIRLPOOL_ASM)
129 add_definitions(-DOPENSSL_CPUID_OBJ)
130 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MACOSX_SRC}) 93 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MACOSX_SRC})
131 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY LANGUAGE C)
132 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY XCODE_EXPLICIT_FILE_TYPE "sourcecode.asm") 94 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY XCODE_EXPLICIT_FILE_TYPE "sourcecode.asm")
133endif() 95endif()
134 96
@@ -142,34 +104,18 @@ if(HOST_ASM_MASM_X86_64)
142 #bn/modexp512-masm-x86_64.S 104 #bn/modexp512-masm-x86_64.S
143 #bn/mont-masm-x86_64.S 105 #bn/mont-masm-x86_64.S
144 #bn/mont5-masm-x86_64.S 106 #bn/mont5-masm-x86_64.S
145 md5/md5-masm-x86_64.S
146 modes/ghash-masm-x86_64.S 107 modes/ghash-masm-x86_64.S
147 rc4/rc4-masm-x86_64.S 108 rc4/rc4-masm-x86_64.S
148 sha/sha1-masm-x86_64.S
149 sha/sha256-masm-x86_64.S
150 sha/sha512-masm-x86_64.S
151 cpuid-masm-x86_64.S
152 ) 109 )
153 add_definitions(-Dendbr64=) 110 add_definitions(-Dendbr64=)
154 add_definitions(-DAES_ASM) 111 add_definitions(-DAES_ASM)
155 add_definitions(-DBSAES_ASM) 112 add_definitions(-DBSAES_ASM)
156 add_definitions(-DVPAES_ASM) 113 add_definitions(-DVPAES_ASM)
157 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
158 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
159 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
160 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
161 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
162 add_definitions(-DOPENSSL_IA32_SSE2) 114 add_definitions(-DOPENSSL_IA32_SSE2)
163 #add_definitions(-DOPENSSL_BN_ASM_MONT) 115 #add_definitions(-DOPENSSL_BN_ASM_MONT)
164 #add_definitions(-DOPENSSL_BN_ASM_MONT5) 116 #add_definitions(-DOPENSSL_BN_ASM_MONT5)
165 add_definitions(-DMD5_ASM)
166 add_definitions(-DGHASH_ASM) 117 add_definitions(-DGHASH_ASM)
167 add_definitions(-DRSA_ASM) 118 add_definitions(-DRSA_ASM)
168 add_definitions(-DSHA1_ASM)
169 add_definitions(-DSHA256_ASM)
170 add_definitions(-DSHA512_ASM)
171 add_definitions(-DWHIRLPOOL_ASM)
172 add_definitions(-DOPENSSL_CPUID_OBJ)
173 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MASM_SRC}) 119 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MASM_SRC})
174 set_property(SOURCE ${ASM_X86_64_MASM_SRC} PROPERTY LANGUAGE ASM_MASM) 120 set_property(SOURCE ${ASM_X86_64_MASM_SRC} PROPERTY LANGUAGE ASM_MASM)
175endif() 121endif()
@@ -184,50 +130,37 @@ if(HOST_ASM_MINGW64_X86_64)
184 #bn/modexp512-mingw64-x86_64.S 130 #bn/modexp512-mingw64-x86_64.S
185 #bn/mont-mingw64-x86_64.S 131 #bn/mont-mingw64-x86_64.S
186 #bn/mont5-mingw64-x86_64.S 132 #bn/mont5-mingw64-x86_64.S
187 md5/md5-mingw64-x86_64.S
188 modes/ghash-mingw64-x86_64.S 133 modes/ghash-mingw64-x86_64.S
189 rc4/rc4-mingw64-x86_64.S 134 rc4/rc4-mingw64-x86_64.S
190 sha/sha1-mingw64-x86_64.S
191 sha/sha256-mingw64-x86_64.S
192 sha/sha512-mingw64-x86_64.S
193 cpuid-mingw64-x86_64.S
194 ) 135 )
195 add_definitions(-Dendbr32=endbr64) 136 add_definitions(-Dendbr32=endbr64)
196 add_definitions(-DAES_ASM) 137 add_definitions(-DAES_ASM)
197 add_definitions(-DBSAES_ASM) 138 add_definitions(-DBSAES_ASM)
198 add_definitions(-DVPAES_ASM) 139 add_definitions(-DVPAES_ASM)
199 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
200 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
201 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
202 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
203 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
204 add_definitions(-DOPENSSL_IA32_SSE2) 140 add_definitions(-DOPENSSL_IA32_SSE2)
205 #add_definitions(-DOPENSSL_BN_ASM_MONT) 141 #add_definitions(-DOPENSSL_BN_ASM_MONT)
206 #add_definitions(-DOPENSSL_BN_ASM_MONT5) 142 #add_definitions(-DOPENSSL_BN_ASM_MONT5)
207 add_definitions(-DMD5_ASM)
208 add_definitions(-DGHASH_ASM) 143 add_definitions(-DGHASH_ASM)
209 add_definitions(-DRSA_ASM) 144 add_definitions(-DRSA_ASM)
210 add_definitions(-DSHA1_ASM)
211 add_definitions(-DSHA256_ASM)
212 add_definitions(-DSHA512_ASM)
213 add_definitions(-DWHIRLPOOL_ASM)
214 add_definitions(-DOPENSSL_CPUID_OBJ)
215 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MINGW64_SRC}) 145 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MINGW64_SRC})
216 set_property(SOURCE ${ASM_X86_64_MINGW64_SRC} PROPERTY LANGUAGE C) 146endif()
147
148if(HOST_AARCH64)
149 set(CRYPTO_SRC ${CRYPTO_SRC} arch/aarch64/crypto_cpu_caps.c)
150elseif(HOST_X86_64)
151 set(CRYPTO_SRC ${CRYPTO_SRC} arch/amd64/crypto_cpu_caps.c)
152elseif(HOST_I386)
153 set(CRYPTO_SRC ${CRYPTO_SRC} arch/i386/crypto_cpu_caps.c)
217endif() 154endif()
218 155
219set( 156set(
220 CRYPTO_SRC 157 CRYPTO_SRC
221 ${CRYPTO_SRC} 158 ${CRYPTO_SRC}
222 cpt_err.c 159 crypto_err.c
223 cryptlib.c 160 crypto_ex_data.c
224 crypto_init.c 161 crypto_init.c
225 cversion.c 162 crypto_legacy.c
226 ex_data.c 163 crypto_memory.c
227 malloc-wrapper.c
228 mem_clr.c
229 mem_dbg.c
230 o_fips.c
231 aes/aes.c 164 aes/aes.c
232 aes/aes_core.c 165 aes/aes_core.c
233 aes/aes_ige.c 166 aes/aes_ige.c
@@ -364,7 +297,6 @@ set(
364 conf/conf_def.c 297 conf/conf_def.c
365 conf/conf_err.c 298 conf/conf_err.c
366 conf/conf_lib.c 299 conf/conf_lib.c
367 conf/conf_mall.c
368 conf/conf_mod.c 300 conf/conf_mod.c
369 conf/conf_sap.c 301 conf/conf_sap.c
370 ct/ct_b64.c 302 ct/ct_b64.c
@@ -379,26 +311,11 @@ set(
379 ct/ct_x509v3.c 311 ct/ct_x509v3.c
380 curve25519/curve25519-generic.c 312 curve25519/curve25519-generic.c
381 curve25519/curve25519.c 313 curve25519/curve25519.c
382 des/cbc_cksm.c 314 des/des.c
383 des/cbc_enc.c 315 des/des_cksum.c
384 des/cfb64ede.c
385 des/cfb64enc.c
386 des/cfb_enc.c
387 des/des_enc.c 316 des/des_enc.c
388 des/ecb3_enc.c 317 des/des_fcrypt.c
389 des/ecb_enc.c 318 des/des_key.c
390 des/ede_cbcm_enc.c
391 des/enc_read.c
392 des/fcrypt.c
393 des/fcrypt_b.c
394 des/ofb64ede.c
395 des/ofb64enc.c
396 des/ofb_enc.c
397 des/pcbc_enc.c
398 des/qud_cksm.c
399 des/set_key.c
400 des/str2key.c
401 des/xcbc_enc.c
402 dh/dh_ameth.c 319 dh/dh_ameth.c
403 dh/dh_asn1.c 320 dh/dh_asn1.c
404 dh/dh_check.c 321 dh/dh_check.c
@@ -419,21 +336,15 @@ set(
419 dsa/dsa_prn.c 336 dsa/dsa_prn.c
420 ec/ec_ameth.c 337 ec/ec_ameth.c
421 ec/ec_asn1.c 338 ec/ec_asn1.c
422 ec/ec_check.c 339 ec/ec_convert.c
423 ec/ec_curve.c 340 ec/ec_curve.c
424 ec/ec_cvt.c
425 ec/ec_err.c 341 ec/ec_err.c
426 ec/ec_key.c 342 ec/ec_key.c
427 ec/ec_kmeth.c
428 ec/ec_lib.c 343 ec/ec_lib.c
429 ec/ec_mult.c 344 ec/ec_mult.c
430 ec/ec_oct.c
431 ec/ec_pmeth.c 345 ec/ec_pmeth.c
432 ec/ec_print.c
433 ec/eck_prn.c 346 ec/eck_prn.c
434 ec/ecp_mont.c 347 ec/ecp_methods.c
435 ec/ecp_oct.c
436 ec/ecp_smpl.c
437 ec/ecx_methods.c 348 ec/ecx_methods.c
438 ecdh/ecdh.c 349 ecdh/ecdh.c
439 ecdsa/ecdsa.c 350 ecdsa/ecdsa.c
@@ -476,7 +387,6 @@ set(
476 evp/m_sha3.c 387 evp/m_sha3.c
477 evp/m_sigver.c 388 evp/m_sigver.c
478 evp/m_sm3.c 389 evp/m_sm3.c
479 evp/m_wp.c
480 evp/p_legacy.c 390 evp/p_legacy.c
481 evp/p_lib.c 391 evp/p_lib.c
482 evp/p_sign.c 392 evp/p_sign.c
@@ -495,6 +405,8 @@ set(
495 lhash/lhash.c 405 lhash/lhash.c
496 md4/md4.c 406 md4/md4.c
497 md5/md5.c 407 md5/md5.c
408 mlkem/mlkem768.c
409 mlkem/mlkem1024.c
498 modes/cbc128.c 410 modes/cbc128.c
499 modes/ccm128.c 411 modes/ccm128.c
500 modes/cfb128.c 412 modes/cfb128.c
@@ -599,8 +511,6 @@ set(
599 ui/ui_err.c 511 ui/ui_err.c
600 ui/ui_lib.c 512 ui/ui_lib.c
601 ui/ui_null.c 513 ui/ui_null.c
602 ui/ui_util.c
603 whrlpool/whirlpool.c
604 x509/by_dir.c 514 x509/by_dir.c
605 x509/by_file.c 515 x509/by_file.c
606 x509/by_mem.c 516 x509/by_mem.c
@@ -641,6 +551,7 @@ set(
641 x509/x509_r2x.c 551 x509/x509_r2x.c
642 x509/x509_req.c 552 x509/x509_req.c
643 x509/x509_set.c 553 x509/x509_set.c
554 x509/x509_siginfo.c
644 x509/x509_skey.c 555 x509/x509_skey.c
645 x509/x509_trs.c 556 x509/x509_trs.c
646 x509/x509_txt.c 557 x509/x509_txt.c
@@ -685,6 +596,14 @@ if(NOT HAVE_FREEZERO)
685 set(COMPAT_SRC ${COMPAT_SRC} compat/freezero.c) 596 set(COMPAT_SRC ${COMPAT_SRC} compat/freezero.c)
686endif() 597endif()
687 598
599if(NOT HAVE_GETDELIM)
600 set(COMPAT_SRC ${COMPAT_SRC} compat/getdelim.c)
601endif()
602
603if(NOT HAVE_GETLINE)
604 set(COMPAT_SRC ${COMPAT_SRC} compat/getline.c)
605endif()
606
688if(NOT HAVE_GETOPT) 607if(NOT HAVE_GETOPT)
689 set(COMPAT_SRC ${COMPAT_SRC} compat/getopt_long.c) 608 set(COMPAT_SRC ${COMPAT_SRC} compat/getopt_long.c)
690endif() 609endif()
@@ -821,6 +740,7 @@ target_include_directories(crypto_obj
821 bio 740 bio
822 bn 741 bn
823 bytestring 742 bytestring
743 conf
824 dh 744 dh
825 dsa 745 dsa
826 curve25519 746 curve25519
@@ -832,6 +752,7 @@ target_include_directories(crypto_obj
832 hidden 752 hidden
833 hmac 753 hmac
834 lhash 754 lhash
755 mlkem
835 modes 756 modes
836 ocsp 757 ocsp
837 pkcs12 758 pkcs12
@@ -845,41 +766,65 @@ target_include_directories(crypto_obj
845 ${CMAKE_BINARY_DIR}/include) 766 ${CMAKE_BINARY_DIR}/include)
846 767
847if(HOST_AARCH64) 768if(HOST_AARCH64)
769 target_include_directories(crypto_obj PRIVATE arch/aarch64/)
848 target_include_directories(crypto_obj PRIVATE bn/arch/aarch64/) 770 target_include_directories(crypto_obj PRIVATE bn/arch/aarch64/)
849elseif(HOST_ARM) 771elseif(HOST_ARM)
772 target_include_directories(crypto_obj PRIVATE arch/arm/)
850 target_include_directories(crypto_obj PRIVATE bn/arch/arm/) 773 target_include_directories(crypto_obj PRIVATE bn/arch/arm/)
851elseif(HOST_I386) 774elseif(HOST_I386)
775 target_include_directories(crypto_obj PRIVATE arch/i386/)
852 target_include_directories(crypto_obj PRIVATE bn/arch/i386/) 776 target_include_directories(crypto_obj PRIVATE bn/arch/i386/)
777elseif(HOST_LOONGARCH64)
778 target_include_directories(crypto_obj PRIVATE arch/loongarch64)
779 target_include_directories(crypto_obj PRIVATE bn/arch/loongarch64)
853elseif(HOST_MIPS64) 780elseif(HOST_MIPS64)
781 target_include_directories(crypto_obj PRIVATE arch/mips64)
854 target_include_directories(crypto_obj PRIVATE bn/arch/mips64) 782 target_include_directories(crypto_obj PRIVATE bn/arch/mips64)
855elseif(HOST_MIPS) 783elseif(HOST_MIPS)
784 target_include_directories(crypto_obj PRIVATE arch/mips)
856 target_include_directories(crypto_obj PRIVATE bn/arch/mips) 785 target_include_directories(crypto_obj PRIVATE bn/arch/mips)
857elseif(HOST_POWERPC) 786elseif(HOST_POWERPC)
787 target_include_directories(crypto_obj PRIVATE arch/powerpc)
858 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc) 788 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc)
859elseif(HOST_POWERPC64) 789elseif(HOST_POWERPC64)
790 target_include_directories(crypto_obj PRIVATE arch/powerpc64)
860 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc64) 791 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc64)
861elseif(HOST_RISCV64) 792elseif(HOST_RISCV64)
793 target_include_directories(crypto_obj PRIVATE arch/riscv64)
862 target_include_directories(crypto_obj PRIVATE bn/arch/riscv64) 794 target_include_directories(crypto_obj PRIVATE bn/arch/riscv64)
863elseif(HOST_SPARC64) 795elseif(HOST_SPARC64)
796 target_include_directories(crypto_obj PRIVATE arch/sparc64)
864 target_include_directories(crypto_obj PRIVATE bn/arch/sparc64) 797 target_include_directories(crypto_obj PRIVATE bn/arch/sparc64)
865elseif(HOST_X86_64) 798elseif(HOST_X86_64)
799 target_include_directories(crypto_obj PRIVATE arch/amd64)
866 target_include_directories(crypto_obj PRIVATE bn/arch/amd64) 800 target_include_directories(crypto_obj PRIVATE bn/arch/amd64)
867endif() 801endif()
868 802
803if(MSVC)
804 # "C4701" - Potentially uninitialized local variable 'name' used
805 set_source_files_properties(bn/bn_convert.c pem/pem_lib.c PROPERTIES
806 COMPILE_OPTIONS /wd4701
807 )
808 # "C4702" - unreachable code
809 set_source_files_properties(pkcs7/pk7_doit.c PROPERTIES
810 COMPILE_OPTIONS /wd4702
811 )
812endif()
813
869add_library(crypto $<TARGET_OBJECTS:crypto_obj> $<TARGET_OBJECTS:compat_obj> empty.c) 814add_library(crypto $<TARGET_OBJECTS:crypto_obj> $<TARGET_OBJECTS:compat_obj> empty.c)
870 815
871export_symbol(crypto ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym) 816export_symbol(crypto ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym)
872target_link_libraries(crypto ${PLATFORM_LIBS}) 817target_link_libraries(crypto ${PLATFORM_LIBS})
873if (WIN32)
874 set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION} PARENT_SCOPE)
875endif()
876set_target_properties(crypto PROPERTIES 818set_target_properties(crypto PROPERTIES
877 OUTPUT_NAME crypto${CRYPTO_POSTFIX} 819 OUTPUT_NAME crypto
878 ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX} 820 ARCHIVE_OUTPUT_NAME crypto
879 EXPORT_NAME Crypto 821 EXPORT_NAME Crypto
880 VERSION ${CRYPTO_VERSION} 822 VERSION ${CRYPTO_VERSION}
881 SOVERSION ${CRYPTO_MAJOR_VERSION} 823 SOVERSION ${CRYPTO_MAJOR_VERSION}
882) 824)
825if(NOT CMAKE_VERSION VERSION_LESS 3.27.0)
826 set_target_properties(crypto PROPERTIES DLL_NAME_WITH_SOVERSION TRUE)
827endif()
883 828
884target_include_directories( 829target_include_directories(
885 crypto 830 crypto
@@ -919,4 +864,3 @@ if(BUILD_SHARED_LIBS)
919 add_library(crypto-static STATIC $<TARGET_OBJECTS:crypto_obj>) 864 add_library(crypto-static STATIC $<TARGET_OBJECTS:crypto_obj>)
920 target_link_libraries(crypto-static ${PLATFORM_LIBS}) 865 target_link_libraries(crypto-static ${PLATFORM_LIBS})
921endif() 866endif()
922
diff --git a/crypto/Makefile.am b/crypto/Makefile.am
index 6e1e975..d1c5b76 100644
--- a/crypto/Makefile.am
+++ b/crypto/Makefile.am
@@ -5,6 +5,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/crypto/asn1
5AM_CPPFLAGS += -I$(top_srcdir)/crypto/bio 5AM_CPPFLAGS += -I$(top_srcdir)/crypto/bio
6AM_CPPFLAGS += -I$(top_srcdir)/crypto/bn 6AM_CPPFLAGS += -I$(top_srcdir)/crypto/bn
7AM_CPPFLAGS += -I$(top_srcdir)/crypto/bytestring 7AM_CPPFLAGS += -I$(top_srcdir)/crypto/bytestring
8AM_CPPFLAGS += -I$(top_srcdir)/crypto/conf
8AM_CPPFLAGS += -I$(top_srcdir)/crypto/curve25519 9AM_CPPFLAGS += -I$(top_srcdir)/crypto/curve25519
9AM_CPPFLAGS += -I$(top_srcdir)/crypto/dh 10AM_CPPFLAGS += -I$(top_srcdir)/crypto/dh
10AM_CPPFLAGS += -I$(top_srcdir)/crypto/dsa 11AM_CPPFLAGS += -I$(top_srcdir)/crypto/dsa
@@ -15,6 +16,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/crypto/err
15AM_CPPFLAGS += -I$(top_srcdir)/crypto/evp 16AM_CPPFLAGS += -I$(top_srcdir)/crypto/evp
16AM_CPPFLAGS += -I$(top_srcdir)/crypto/hmac 17AM_CPPFLAGS += -I$(top_srcdir)/crypto/hmac
17AM_CPPFLAGS += -I$(top_srcdir)/crypto/lhash 18AM_CPPFLAGS += -I$(top_srcdir)/crypto/lhash
19AM_CPPFLAGS += -I$(top_srcdir)/crypto/mlkem
18AM_CPPFLAGS += -I$(top_srcdir)/crypto/modes 20AM_CPPFLAGS += -I$(top_srcdir)/crypto/modes
19AM_CPPFLAGS += -I$(top_srcdir)/crypto/ocsp 21AM_CPPFLAGS += -I$(top_srcdir)/crypto/ocsp
20AM_CPPFLAGS += -I$(top_srcdir)/crypto/pkcs12 22AM_CPPFLAGS += -I$(top_srcdir)/crypto/pkcs12
@@ -132,6 +134,14 @@ if !HAVE_FREEZERO
132libcompat_la_SOURCES += compat/freezero.c 134libcompat_la_SOURCES += compat/freezero.c
133endif 135endif
134 136
137if !HAVE_GETDELIM
138libcompat_la_SOURCES += compat/getdelim.c
139endif
140
141if !HAVE_GETLINE
142libcompat_la_SOURCES += compat/getline.c
143endif
144
135if !HAVE_GETPAGESIZE 145if !HAVE_GETPAGESIZE
136libcompat_la_SOURCES += compat/getpagesize.c 146libcompat_la_SOURCES += compat/getpagesize.c
137endif 147endif
@@ -201,23 +211,28 @@ endif
201endif 211endif
202endif 212endif
203 213
204libcrypto_la_SOURCES += cpt_err.c 214if HOST_AARCH64
205libcrypto_la_SOURCES += cryptlib.c 215libcrypto_la_SOURCES += arch/aarch64/crypto_cpu_caps.c
216endif
217if HOST_X86_64
218libcrypto_la_SOURCES += arch/amd64/crypto_cpu_caps.c
219endif
220if HOST_I386
221libcrypto_la_SOURCES += arch/i386/crypto_cpu_caps.c
222endif
223
224libcrypto_la_SOURCES += crypto_err.c
225libcrypto_la_SOURCES += crypto_ex_data.c
206libcrypto_la_SOURCES += crypto_init.c 226libcrypto_la_SOURCES += crypto_init.c
227libcrypto_la_SOURCES += crypto_legacy.c
207if !HOST_WIN 228if !HOST_WIN
208libcrypto_la_SOURCES += crypto_lock.c 229libcrypto_la_SOURCES += crypto_lock.c
209else 230else
210libcrypto_la_SOURCES += compat/crypto_lock_win.c 231libcrypto_la_SOURCES += compat/crypto_lock_win.c
211endif 232endif
212libcrypto_la_SOURCES += cversion.c 233libcrypto_la_SOURCES += crypto_memory.c
213libcrypto_la_SOURCES += ex_data.c
214libcrypto_la_SOURCES += malloc-wrapper.c
215libcrypto_la_SOURCES += mem_clr.c
216libcrypto_la_SOURCES += mem_dbg.c
217libcrypto_la_SOURCES += o_fips.c
218noinst_HEADERS += arm_arch.h 234noinst_HEADERS += arm_arch.h
219noinst_HEADERS += constant_time.h 235noinst_HEADERS += constant_time.h
220noinst_HEADERS += cryptlib.h
221noinst_HEADERS += crypto_internal.h 236noinst_HEADERS += crypto_internal.h
222noinst_HEADERS += crypto_local.h 237noinst_HEADERS += crypto_local.h
223noinst_HEADERS += x86_arch.h 238noinst_HEADERS += x86_arch.h
@@ -359,55 +374,82 @@ noinst_HEADERS += bn/bn_prime.h
359noinst_HEADERS += bn/s2n_bignum.h 374noinst_HEADERS += bn/s2n_bignum.h
360noinst_HEADERS += bn/s2n_bignum_internal.h 375noinst_HEADERS += bn/s2n_bignum_internal.h
361 376
362# bn/arch 377# arch, bn/arch
363if HOST_AARCH64 378if HOST_AARCH64
379libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/aarch64/
364libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/aarch64/ 380libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/aarch64/
365endif 381endif
382noinst_HEADERS += arch/aarch64/crypto_arch.h
366noinst_HEADERS += bn/arch/aarch64/bn_arch.h 383noinst_HEADERS += bn/arch/aarch64/bn_arch.h
367 384
368if HOST_ARM 385if HOST_ARM
386libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/arm/
369libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/arm/ 387libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/arm/
370endif 388endif
389noinst_HEADERS += arch/arm/crypto_arch.h
371noinst_HEADERS += bn/arch/arm/bn_arch.h 390noinst_HEADERS += bn/arch/arm/bn_arch.h
372 391
373if HOST_I386 392if HOST_I386
393libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/i386/
374libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/i386/ 394libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/i386/
375endif 395endif
396noinst_HEADERS += arch/i386/crypto_arch.h
376noinst_HEADERS += bn/arch/i386/bn_arch.h 397noinst_HEADERS += bn/arch/i386/bn_arch.h
377 398
399if HOST_LOONGARCH64
400libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/loongarch64/
401libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/loongarch64/
402endif
403noinst_HEADERS += arch/loongarch64/crypto_arch.h
404noinst_HEADERS += bn/arch/loongarch64/bn_arch.h
405
378if HOST_MIPS 406if HOST_MIPS
407libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips/
379libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips/ 408libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips/
380endif 409endif
410noinst_HEADERS += arch/mips/crypto_arch.h
381noinst_HEADERS += bn/arch/mips/bn_arch.h 411noinst_HEADERS += bn/arch/mips/bn_arch.h
382 412
383if HOST_MIPS64 413if HOST_MIPS64
414libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips64/
384libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips64/ 415libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips64/
385endif 416endif
417noinst_HEADERS += arch/mips64/crypto_arch.h
386noinst_HEADERS += bn/arch/mips64/bn_arch.h 418noinst_HEADERS += bn/arch/mips64/bn_arch.h
387 419
388if HOST_POWERPC 420if HOST_POWERPC
421libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc/
389libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc/ 422libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc/
390endif 423endif
424noinst_HEADERS += arch/powerpc/crypto_arch.h
391noinst_HEADERS += bn/arch/powerpc/bn_arch.h 425noinst_HEADERS += bn/arch/powerpc/bn_arch.h
392 426
393if HOST_POWERPC64 427if HOST_POWERPC64
428libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc64/
394libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc64/ 429libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc64/
395endif 430endif
431noinst_HEADERS += arch/powerpc64/crypto_arch.h
396noinst_HEADERS += bn/arch/powerpc64/bn_arch.h 432noinst_HEADERS += bn/arch/powerpc64/bn_arch.h
397 433
398if HOST_RISCV64 434if HOST_RISCV64
435libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/riscv64/
399libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/riscv64/ 436libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/riscv64/
400endif 437endif
438noinst_HEADERS += arch/riscv64/crypto_arch.h
401noinst_HEADERS += bn/arch/riscv64/bn_arch.h 439noinst_HEADERS += bn/arch/riscv64/bn_arch.h
402 440
403if HOST_SPARC64 441if HOST_SPARC64
442libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/sparc64/
404libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/sparc64/ 443libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/sparc64/
405endif 444endif
445noinst_HEADERS += arch/sparc64/crypto_arch.h
406noinst_HEADERS += bn/arch/sparc64/bn_arch.h 446noinst_HEADERS += bn/arch/sparc64/bn_arch.h
407 447
408if HOST_X86_64 448if HOST_X86_64
449libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/amd64/
409libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/amd64/ 450libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/amd64/
410endif 451endif
452noinst_HEADERS += arch/amd64/crypto_arch.h
411noinst_HEADERS += bn/arch/amd64/bn_arch.h 453noinst_HEADERS += bn/arch/amd64/bn_arch.h
412 454
413# buffer 455# buffer
@@ -458,10 +500,10 @@ libcrypto_la_SOURCES += conf/conf_api.c
458libcrypto_la_SOURCES += conf/conf_def.c 500libcrypto_la_SOURCES += conf/conf_def.c
459libcrypto_la_SOURCES += conf/conf_err.c 501libcrypto_la_SOURCES += conf/conf_err.c
460libcrypto_la_SOURCES += conf/conf_lib.c 502libcrypto_la_SOURCES += conf/conf_lib.c
461libcrypto_la_SOURCES += conf/conf_mall.c
462libcrypto_la_SOURCES += conf/conf_mod.c 503libcrypto_la_SOURCES += conf/conf_mod.c
463libcrypto_la_SOURCES += conf/conf_sap.c 504libcrypto_la_SOURCES += conf/conf_sap.c
464noinst_HEADERS += conf/conf_def.h 505noinst_HEADERS += conf/conf_def.h
506noinst_HEADERS += conf/conf_local.h
465 507
466# ct 508# ct
467libcrypto_la_SOURCES += ct/ct_b64.c 509libcrypto_la_SOURCES += ct/ct_b64.c
@@ -483,29 +525,12 @@ noinst_HEADERS += curve25519/curve25519_internal.h
483 525
484 526
485# des 527# des
486libcrypto_la_SOURCES += des/cbc_cksm.c 528libcrypto_la_SOURCES += des/des.c
487libcrypto_la_SOURCES += des/cbc_enc.c 529libcrypto_la_SOURCES += des/des_cksum.c
488libcrypto_la_SOURCES += des/cfb64ede.c
489libcrypto_la_SOURCES += des/cfb64enc.c
490libcrypto_la_SOURCES += des/cfb_enc.c
491libcrypto_la_SOURCES += des/des_enc.c 530libcrypto_la_SOURCES += des/des_enc.c
492libcrypto_la_SOURCES += des/ecb3_enc.c 531libcrypto_la_SOURCES += des/des_fcrypt.c
493libcrypto_la_SOURCES += des/ecb_enc.c 532libcrypto_la_SOURCES += des/des_key.c
494libcrypto_la_SOURCES += des/ede_cbcm_enc.c
495libcrypto_la_SOURCES += des/enc_read.c
496libcrypto_la_SOURCES += des/fcrypt.c
497libcrypto_la_SOURCES += des/fcrypt_b.c
498EXTRA_libcrypto_la_SOURCES += des/ncbc_enc.c
499libcrypto_la_SOURCES += des/ofb64ede.c
500libcrypto_la_SOURCES += des/ofb64enc.c
501libcrypto_la_SOURCES += des/ofb_enc.c
502libcrypto_la_SOURCES += des/pcbc_enc.c
503libcrypto_la_SOURCES += des/qud_cksm.c
504libcrypto_la_SOURCES += des/set_key.c
505libcrypto_la_SOURCES += des/str2key.c
506libcrypto_la_SOURCES += des/xcbc_enc.c
507noinst_HEADERS += des/des_local.h 533noinst_HEADERS += des/des_local.h
508noinst_HEADERS += des/spr.h
509 534
510# dh 535# dh
511libcrypto_la_SOURCES += dh/dh_ameth.c 536libcrypto_la_SOURCES += dh/dh_ameth.c
@@ -534,21 +559,15 @@ noinst_HEADERS += dsa/dsa_local.h
534# ec 559# ec
535libcrypto_la_SOURCES += ec/ec_ameth.c 560libcrypto_la_SOURCES += ec/ec_ameth.c
536libcrypto_la_SOURCES += ec/ec_asn1.c 561libcrypto_la_SOURCES += ec/ec_asn1.c
537libcrypto_la_SOURCES += ec/ec_check.c 562libcrypto_la_SOURCES += ec/ec_convert.c
538libcrypto_la_SOURCES += ec/ec_curve.c 563libcrypto_la_SOURCES += ec/ec_curve.c
539libcrypto_la_SOURCES += ec/ec_cvt.c
540libcrypto_la_SOURCES += ec/ec_err.c 564libcrypto_la_SOURCES += ec/ec_err.c
541libcrypto_la_SOURCES += ec/ec_key.c 565libcrypto_la_SOURCES += ec/ec_key.c
542libcrypto_la_SOURCES += ec/ec_kmeth.c
543libcrypto_la_SOURCES += ec/ec_lib.c 566libcrypto_la_SOURCES += ec/ec_lib.c
544libcrypto_la_SOURCES += ec/ec_mult.c 567libcrypto_la_SOURCES += ec/ec_mult.c
545libcrypto_la_SOURCES += ec/ec_oct.c
546libcrypto_la_SOURCES += ec/ec_pmeth.c 568libcrypto_la_SOURCES += ec/ec_pmeth.c
547libcrypto_la_SOURCES += ec/ec_print.c
548libcrypto_la_SOURCES += ec/eck_prn.c 569libcrypto_la_SOURCES += ec/eck_prn.c
549libcrypto_la_SOURCES += ec/ecp_mont.c 570libcrypto_la_SOURCES += ec/ecp_methods.c
550libcrypto_la_SOURCES += ec/ecp_oct.c
551libcrypto_la_SOURCES += ec/ecp_smpl.c
552libcrypto_la_SOURCES += ec/ecx_methods.c 571libcrypto_la_SOURCES += ec/ecx_methods.c
553noinst_HEADERS += ec/ec_local.h 572noinst_HEADERS += ec/ec_local.h
554 573
@@ -604,7 +623,6 @@ libcrypto_la_SOURCES += evp/m_sha1.c
604libcrypto_la_SOURCES += evp/m_sha3.c 623libcrypto_la_SOURCES += evp/m_sha3.c
605libcrypto_la_SOURCES += evp/m_sigver.c 624libcrypto_la_SOURCES += evp/m_sigver.c
606libcrypto_la_SOURCES += evp/m_sm3.c 625libcrypto_la_SOURCES += evp/m_sm3.c
607libcrypto_la_SOURCES += evp/m_wp.c
608libcrypto_la_SOURCES += evp/p_legacy.c 626libcrypto_la_SOURCES += evp/p_legacy.c
609libcrypto_la_SOURCES += evp/p_lib.c 627libcrypto_la_SOURCES += evp/p_lib.c
610libcrypto_la_SOURCES += evp/p_sign.c 628libcrypto_la_SOURCES += evp/p_sign.c
@@ -629,7 +647,6 @@ noinst_HEADERS += hidden/openssl/chacha.h
629noinst_HEADERS += hidden/openssl/cmac.h 647noinst_HEADERS += hidden/openssl/cmac.h
630noinst_HEADERS += hidden/openssl/cms.h 648noinst_HEADERS += hidden/openssl/cms.h
631noinst_HEADERS += hidden/openssl/conf.h 649noinst_HEADERS += hidden/openssl/conf.h
632noinst_HEADERS += hidden/openssl/conf_api.h
633noinst_HEADERS += hidden/openssl/crypto.h 650noinst_HEADERS += hidden/openssl/crypto.h
634noinst_HEADERS += hidden/openssl/ct.h 651noinst_HEADERS += hidden/openssl/ct.h
635noinst_HEADERS += hidden/openssl/curve25519.h 652noinst_HEADERS += hidden/openssl/curve25519.h
@@ -646,6 +663,7 @@ noinst_HEADERS += hidden/openssl/idea.h
646noinst_HEADERS += hidden/openssl/lhash.h 663noinst_HEADERS += hidden/openssl/lhash.h
647noinst_HEADERS += hidden/openssl/md4.h 664noinst_HEADERS += hidden/openssl/md4.h
648noinst_HEADERS += hidden/openssl/md5.h 665noinst_HEADERS += hidden/openssl/md5.h
666noinst_HEADERS += hidden/openssl/mlkem.h
649noinst_HEADERS += hidden/openssl/modes.h 667noinst_HEADERS += hidden/openssl/modes.h
650noinst_HEADERS += hidden/openssl/objects.h 668noinst_HEADERS += hidden/openssl/objects.h
651noinst_HEADERS += hidden/openssl/ocsp.h 669noinst_HEADERS += hidden/openssl/ocsp.h
@@ -666,7 +684,6 @@ noinst_HEADERS += hidden/openssl/stack.h
666noinst_HEADERS += hidden/openssl/ts.h 684noinst_HEADERS += hidden/openssl/ts.h
667noinst_HEADERS += hidden/openssl/txt_db.h 685noinst_HEADERS += hidden/openssl/txt_db.h
668noinst_HEADERS += hidden/openssl/ui.h 686noinst_HEADERS += hidden/openssl/ui.h
669noinst_HEADERS += hidden/openssl/whrlpool.h
670noinst_HEADERS += hidden/openssl/x509.h 687noinst_HEADERS += hidden/openssl/x509.h
671noinst_HEADERS += hidden/openssl/x509_vfy.h 688noinst_HEADERS += hidden/openssl/x509_vfy.h
672noinst_HEADERS += hidden/openssl/x509v3.h 689noinst_HEADERS += hidden/openssl/x509v3.h
@@ -698,6 +715,12 @@ libcrypto_la_SOURCES += md4/md4.c
698# md5 715# md5
699libcrypto_la_SOURCES += md5/md5.c 716libcrypto_la_SOURCES += md5/md5.c
700 717
718# mlkem
719libcrypto_la_SOURCES += mlkem/mlkem768.c
720libcrypto_la_SOURCES += mlkem/mlkem1024.c
721noinst_HEADERS += mlkem/mlkem.h
722noinst_HEADERS += mlkem/mlkem_internal.h
723
701# modes 724# modes
702libcrypto_la_SOURCES += modes/cbc128.c 725libcrypto_la_SOURCES += modes/cbc128.c
703libcrypto_la_SOURCES += modes/ccm128.c 726libcrypto_la_SOURCES += modes/ccm128.c
@@ -856,12 +879,8 @@ endif
856if HOST_WIN 879if HOST_WIN
857libcrypto_la_SOURCES += ui/ui_openssl_win.c 880libcrypto_la_SOURCES += ui/ui_openssl_win.c
858endif 881endif
859libcrypto_la_SOURCES += ui/ui_util.c
860noinst_HEADERS += ui/ui_local.h 882noinst_HEADERS += ui/ui_local.h
861 883
862# whrlpool
863libcrypto_la_SOURCES += whrlpool/whirlpool.c
864
865# x509 884# x509
866libcrypto_la_SOURCES += x509/by_dir.c 885libcrypto_la_SOURCES += x509/by_dir.c
867libcrypto_la_SOURCES += x509/by_file.c 886libcrypto_la_SOURCES += x509/by_file.c
@@ -903,6 +922,7 @@ libcrypto_la_SOURCES += x509/x509_purp.c
903libcrypto_la_SOURCES += x509/x509_r2x.c 922libcrypto_la_SOURCES += x509/x509_r2x.c
904libcrypto_la_SOURCES += x509/x509_req.c 923libcrypto_la_SOURCES += x509/x509_req.c
905libcrypto_la_SOURCES += x509/x509_set.c 924libcrypto_la_SOURCES += x509/x509_set.c
925libcrypto_la_SOURCES += x509/x509_siginfo.c
906libcrypto_la_SOURCES += x509/x509_skey.c 926libcrypto_la_SOURCES += x509/x509_skey.c
907libcrypto_la_SOURCES += x509/x509_trs.c 927libcrypto_la_SOURCES += x509/x509_trs.c
908libcrypto_la_SOURCES += x509/x509_txt.c 928libcrypto_la_SOURCES += x509/x509_txt.c
diff --git a/crypto/Makefile.am.elf-arm b/crypto/Makefile.am.elf-arm
index 4f88994..6a9fa50 100644
--- a/crypto/Makefile.am.elf-arm
+++ b/crypto/Makefile.am.elf-arm
@@ -13,9 +13,6 @@ if HOST_ASM_ELF_ARM
13libcrypto_la_CPPFLAGS += -DAES_ASM 13libcrypto_la_CPPFLAGS += -DAES_ASM
14libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 14libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
15libcrypto_la_CPPFLAGS += -DGHASH_ASM 15libcrypto_la_CPPFLAGS += -DGHASH_ASM
16libcrypto_la_CPPFLAGS += -DSHA1_ASM
17libcrypto_la_CPPFLAGS += -DSHA256_ASM
18libcrypto_la_CPPFLAGS += -DSHA512_ASM
19libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ 16libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
20libcrypto_la_SOURCES += $(ASM_ARM_ELF) 17libcrypto_la_SOURCES += $(ASM_ARM_ELF)
21endif 18endif
diff --git a/crypto/Makefile.am.elf-mips b/crypto/Makefile.am.elf-mips
index ea0a730..f7a44f2 100644
--- a/crypto/Makefile.am.elf-mips
+++ b/crypto/Makefile.am.elf-mips
@@ -10,8 +10,5 @@ EXTRA_DIST += $(ASM_MIPS_ELF)
10if HOST_ASM_ELF_MIPS 10if HOST_ASM_ELF_MIPS
11libcrypto_la_CPPFLAGS += -DAES_ASM 11libcrypto_la_CPPFLAGS += -DAES_ASM
12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
13libcrypto_la_CPPFLAGS += -DSHA1_ASM
14libcrypto_la_CPPFLAGS += -DSHA256_ASM
15libcrypto_la_CPPFLAGS += -DSHA512_ASM
16libcrypto_la_SOURCES += $(ASM_MIPS_ELF) 13libcrypto_la_SOURCES += $(ASM_MIPS_ELF)
17endif 14endif
diff --git a/crypto/Makefile.am.elf-mips64 b/crypto/Makefile.am.elf-mips64
index 8f851f3..7d90bc0 100644
--- a/crypto/Makefile.am.elf-mips64
+++ b/crypto/Makefile.am.elf-mips64
@@ -10,8 +10,5 @@ EXTRA_DIST += $(ASM_MIPS64_ELF)
10if HOST_ASM_ELF_MIPS64 10if HOST_ASM_ELF_MIPS64
11libcrypto_la_CPPFLAGS += -DAES_ASM 11libcrypto_la_CPPFLAGS += -DAES_ASM
12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
13libcrypto_la_CPPFLAGS += -DSHA1_ASM
14libcrypto_la_CPPFLAGS += -DSHA256_ASM
15libcrypto_la_CPPFLAGS += -DSHA512_ASM
16libcrypto_la_SOURCES += $(ASM_MIPS64_ELF) 13libcrypto_la_SOURCES += $(ASM_MIPS64_ELF)
17endif 14endif
diff --git a/crypto/Makefile.am.elf-x86_64 b/crypto/Makefile.am.elf-x86_64
index 6933a11..c62662c 100644
--- a/crypto/Makefile.am.elf-x86_64
+++ b/crypto/Makefile.am.elf-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_ELF += aes/aesni-elf-x86_64.S
6ASM_X86_64_ELF += bn/modexp512-elf-x86_64.S 6ASM_X86_64_ELF += bn/modexp512-elf-x86_64.S
7ASM_X86_64_ELF += bn/mont-elf-x86_64.S 7ASM_X86_64_ELF += bn/mont-elf-x86_64.S
8ASM_X86_64_ELF += bn/mont5-elf-x86_64.S 8ASM_X86_64_ELF += bn/mont5-elf-x86_64.S
9ASM_X86_64_ELF += md5/md5-elf-x86_64.S
10ASM_X86_64_ELF += modes/ghash-elf-x86_64.S 9ASM_X86_64_ELF += modes/ghash-elf-x86_64.S
11ASM_X86_64_ELF += rc4/rc4-elf-x86_64.S 10ASM_X86_64_ELF += rc4/rc4-elf-x86_64.S
12ASM_X86_64_ELF += sha/sha1-elf-x86_64.S
13ASM_X86_64_ELF += sha/sha256-elf-x86_64.S
14ASM_X86_64_ELF += sha/sha512-elf-x86_64.S
15ASM_X86_64_ELF += cpuid-elf-x86_64.S
16 11
17ASM_X86_64_ELF += bn/arch/amd64/bignum_add.S 12ASM_X86_64_ELF += bn/arch/amd64/bignum_add.S
18ASM_X86_64_ELF += bn/arch/amd64/bignum_cmadd.S 13ASM_X86_64_ELF += bn/arch/amd64/bignum_cmadd.S
@@ -33,21 +28,10 @@ if HOST_ASM_ELF_X86_64
33libcrypto_la_CPPFLAGS += -DAES_ASM 28libcrypto_la_CPPFLAGS += -DAES_ASM
34libcrypto_la_CPPFLAGS += -DBSAES_ASM 29libcrypto_la_CPPFLAGS += -DBSAES_ASM
35libcrypto_la_CPPFLAGS += -DVPAES_ASM 30libcrypto_la_CPPFLAGS += -DVPAES_ASM
36libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
37libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
38libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
39libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
40libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
41libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 31libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
42libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 32libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
43libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 33libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
44libcrypto_la_CPPFLAGS += -DMD5_ASM
45libcrypto_la_CPPFLAGS += -DGHASH_ASM 34libcrypto_la_CPPFLAGS += -DGHASH_ASM
46libcrypto_la_CPPFLAGS += -DRSA_ASM 35libcrypto_la_CPPFLAGS += -DRSA_ASM
47libcrypto_la_CPPFLAGS += -DSHA1_ASM
48libcrypto_la_CPPFLAGS += -DSHA256_ASM
49libcrypto_la_CPPFLAGS += -DSHA512_ASM
50libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
51libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
52libcrypto_la_SOURCES += $(ASM_X86_64_ELF) 36libcrypto_la_SOURCES += $(ASM_X86_64_ELF)
53endif 37endif
diff --git a/crypto/Makefile.am.macosx-x86_64 b/crypto/Makefile.am.macosx-x86_64
index 1020567..010e3be 100644
--- a/crypto/Makefile.am.macosx-x86_64
+++ b/crypto/Makefile.am.macosx-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MACOSX += aes/aesni-macosx-x86_64.S
6ASM_X86_64_MACOSX += bn/modexp512-macosx-x86_64.S 6ASM_X86_64_MACOSX += bn/modexp512-macosx-x86_64.S
7ASM_X86_64_MACOSX += bn/mont-macosx-x86_64.S 7ASM_X86_64_MACOSX += bn/mont-macosx-x86_64.S
8ASM_X86_64_MACOSX += bn/mont5-macosx-x86_64.S 8ASM_X86_64_MACOSX += bn/mont5-macosx-x86_64.S
9ASM_X86_64_MACOSX += md5/md5-macosx-x86_64.S
10ASM_X86_64_MACOSX += modes/ghash-macosx-x86_64.S 9ASM_X86_64_MACOSX += modes/ghash-macosx-x86_64.S
11ASM_X86_64_MACOSX += rc4/rc4-macosx-x86_64.S 10ASM_X86_64_MACOSX += rc4/rc4-macosx-x86_64.S
12ASM_X86_64_MACOSX += sha/sha1-macosx-x86_64.S
13ASM_X86_64_MACOSX += sha/sha256-macosx-x86_64.S
14ASM_X86_64_MACOSX += sha/sha512-macosx-x86_64.S
15ASM_X86_64_MACOSX += cpuid-macosx-x86_64.S
16 11
17ASM_X86_64_MACOSX += bn/arch/amd64/bignum_add.S 12ASM_X86_64_MACOSX += bn/arch/amd64/bignum_add.S
18ASM_X86_64_MACOSX += bn/arch/amd64/bignum_cmadd.S 13ASM_X86_64_MACOSX += bn/arch/amd64/bignum_cmadd.S
@@ -33,21 +28,10 @@ if HOST_ASM_MACOSX_X86_64
33libcrypto_la_CPPFLAGS += -DAES_ASM 28libcrypto_la_CPPFLAGS += -DAES_ASM
34libcrypto_la_CPPFLAGS += -DBSAES_ASM 29libcrypto_la_CPPFLAGS += -DBSAES_ASM
35libcrypto_la_CPPFLAGS += -DVPAES_ASM 30libcrypto_la_CPPFLAGS += -DVPAES_ASM
36libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
37libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
38libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
39libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
40libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
41libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 31libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
42libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 32libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
43libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 33libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
44libcrypto_la_CPPFLAGS += -DMD5_ASM
45libcrypto_la_CPPFLAGS += -DGHASH_ASM 34libcrypto_la_CPPFLAGS += -DGHASH_ASM
46libcrypto_la_CPPFLAGS += -DRSA_ASM 35libcrypto_la_CPPFLAGS += -DRSA_ASM
47libcrypto_la_CPPFLAGS += -DSHA1_ASM
48libcrypto_la_CPPFLAGS += -DSHA256_ASM
49libcrypto_la_CPPFLAGS += -DSHA512_ASM
50libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
51libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
52libcrypto_la_SOURCES += $(ASM_X86_64_MACOSX) 36libcrypto_la_SOURCES += $(ASM_X86_64_MACOSX)
53endif 37endif
diff --git a/crypto/Makefile.am.masm-x86_64 b/crypto/Makefile.am.masm-x86_64
index 7da3cc2..2ef7e1b 100644
--- a/crypto/Makefile.am.masm-x86_64
+++ b/crypto/Makefile.am.masm-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MASM += aes/aesni-masm-x86_64.S
6ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S 6ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S
7ASM_X86_64_MASM += bn/mont-masm-x86_64.S 7ASM_X86_64_MASM += bn/mont-masm-x86_64.S
8ASM_X86_64_MASM += bn/mont5-masm-x86_64.S 8ASM_X86_64_MASM += bn/mont5-masm-x86_64.S
9ASM_X86_64_MASM += md5/md5-masm-x86_64.S
10ASM_X86_64_MASM += modes/ghash-masm-x86_64.S 9ASM_X86_64_MASM += modes/ghash-masm-x86_64.S
11ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S 10ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S
12ASM_X86_64_MASM += sha/sha1-masm-x86_64.S
13ASM_X86_64_MASM += sha/sha256-masm-x86_64.S
14ASM_X86_64_MASM += sha/sha512-masm-x86_64.S
15ASM_X86_64_MASM += cpuid-masm-x86_64.S
16 11
17EXTRA_DIST += $(ASM_X86_64_MASM) 12EXTRA_DIST += $(ASM_X86_64_MASM)
18 13
@@ -20,21 +15,10 @@ if HOST_ASM_MASM_X86_64
20libcrypto_la_CPPFLAGS += -DAES_ASM 15libcrypto_la_CPPFLAGS += -DAES_ASM
21libcrypto_la_CPPFLAGS += -DBSAES_ASM 16libcrypto_la_CPPFLAGS += -DBSAES_ASM
22libcrypto_la_CPPFLAGS += -DVPAES_ASM 17libcrypto_la_CPPFLAGS += -DVPAES_ASM
23libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
24libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
25libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
26libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
27libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
28libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 18libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 19libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 20libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CPPFLAGS += -DMD5_ASM
32libcrypto_la_CPPFLAGS += -DGHASH_ASM 21libcrypto_la_CPPFLAGS += -DGHASH_ASM
33libcrypto_la_CPPFLAGS += -DRSA_ASM 22libcrypto_la_CPPFLAGS += -DRSA_ASM
34libcrypto_la_CPPFLAGS += -DSHA1_ASM
35libcrypto_la_CPPFLAGS += -DSHA256_ASM
36libcrypto_la_CPPFLAGS += -DSHA512_ASM
37libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
38libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
39libcrypto_la_SOURCES += $(ASM_X86_64_MASM) 23libcrypto_la_SOURCES += $(ASM_X86_64_MASM)
40endif 24endif
diff --git a/crypto/Makefile.am.mingw64-x86_64 b/crypto/Makefile.am.mingw64-x86_64
index 7d0d3f7..8e39e9f 100644
--- a/crypto/Makefile.am.mingw64-x86_64
+++ b/crypto/Makefile.am.mingw64-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MINGW64 += aes/aesni-mingw64-x86_64.S
6#ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S 6#ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S
7#ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S 7#ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S
8#ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S 8#ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S
9ASM_X86_64_MINGW64 += md5/md5-mingw64-x86_64.S
10ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S 9ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S
11ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S 10ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S
12ASM_X86_64_MINGW64 += sha/sha1-mingw64-x86_64.S
13ASM_X86_64_MINGW64 += sha/sha256-mingw64-x86_64.S
14ASM_X86_64_MINGW64 += sha/sha512-mingw64-x86_64.S
15ASM_X86_64_MINGW64 += cpuid-mingw64-x86_64.S
16 11
17EXTRA_DIST += $(ASM_X86_64_MINGW64) 12EXTRA_DIST += $(ASM_X86_64_MINGW64)
18 13
@@ -21,21 +16,10 @@ libcrypto_la_CPPFLAGS += -Dendbr32=endbr64
21libcrypto_la_CPPFLAGS += -DAES_ASM 16libcrypto_la_CPPFLAGS += -DAES_ASM
22libcrypto_la_CPPFLAGS += -DBSAES_ASM 17libcrypto_la_CPPFLAGS += -DBSAES_ASM
23libcrypto_la_CPPFLAGS += -DVPAES_ASM 18libcrypto_la_CPPFLAGS += -DVPAES_ASM
24libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
25libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
26libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
27libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
28libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
29libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 19libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
30#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 20#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
31#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 21#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
32libcrypto_la_CPPFLAGS += -DMD5_ASM
33libcrypto_la_CPPFLAGS += -DGHASH_ASM 22libcrypto_la_CPPFLAGS += -DGHASH_ASM
34libcrypto_la_CPPFLAGS += -DRSA_ASM 23libcrypto_la_CPPFLAGS += -DRSA_ASM
35libcrypto_la_CPPFLAGS += -DSHA1_ASM
36libcrypto_la_CPPFLAGS += -DSHA256_ASM
37libcrypto_la_CPPFLAGS += -DSHA512_ASM
38libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64) 24libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64)
41endif 25endif
diff --git a/crypto/arch/loongarch64/crypto_arch.h b/crypto/arch/loongarch64/crypto_arch.h
new file mode 100644
index 0000000..a3dd98d
--- /dev/null
+++ b/crypto/arch/loongarch64/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/crypto/arch/mips/crypto_arch.h b/crypto/arch/mips/crypto_arch.h
new file mode 100644
index 0000000..274879c
--- /dev/null
+++ b/crypto/arch/mips/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD$ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/crypto/bn/arch/loongarch64/bn_arch.h b/crypto/bn/arch/loongarch64/bn_arch.h
new file mode 100644
index 0000000..672ac12
--- /dev/null
+++ b/crypto/bn/arch/loongarch64/bn_arch.h
@@ -0,0 +1,23 @@
1/* $OpenBSD: bn_arch.h,v 1.7 2023/07/09 10:37:32 jsing Exp $ */
2/*
3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#include <openssl/bn.h>
19
20#ifndef HEADER_BN_ARCH_H
21#define HEADER_BN_ARCH_H
22
23#endif
diff --git a/crypto/compat/getdelim.c b/crypto/compat/getdelim.c
new file mode 100644
index 0000000..caec3f2
--- /dev/null
+++ b/crypto/compat/getdelim.c
@@ -0,0 +1,78 @@
1/*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Christos Zoulas.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include <stdio.h>
31#include <stdlib.h>
32
33#ifndef HAVE_GETDELIM
34
35ssize_t
36getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
37{
38 char *ptr, *eptr;
39
40
41 if (*buf == NULL || *bufsiz == 0) {
42 *bufsiz = BUFSIZ;
43 if ((*buf = malloc(*bufsiz)) == NULL)
44 return -1;
45 }
46
47 for (ptr = *buf, eptr = *buf + *bufsiz;;) {
48 int c = fgetc(fp);
49 if (c == -1) {
50 if (feof(fp)) {
51 ssize_t diff = (ssize_t)(ptr - *buf);
52 if (diff != 0) {
53 *ptr = '\0';
54 return diff;
55 }
56 }
57 return -1;
58 }
59 *ptr++ = c;
60 if (c == delimiter) {
61 *ptr = '\0';
62 return ptr - *buf;
63 }
64 if (ptr + 2 >= eptr) {
65 char *nbuf;
66 size_t nbufsiz = *bufsiz * 2;
67 ssize_t d = ptr - *buf;
68 if ((nbuf = realloc(*buf, nbufsiz)) == NULL)
69 return -1;
70 *buf = nbuf;
71 *bufsiz = nbufsiz;
72 eptr = nbuf + nbufsiz;
73 ptr = nbuf + d;
74 }
75 }
76}
77
78#endif /* HAVE_GETDELIM */
diff --git a/crypto/compat/getline.c b/crypto/compat/getline.c
new file mode 100644
index 0000000..e6ecde0
--- /dev/null
+++ b/crypto/compat/getline.c
@@ -0,0 +1,40 @@
1/*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Christos Zoulas.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include <stdio.h>
31
32#ifndef HAVE_GETLINE
33
34ssize_t
35getline(char **buf, size_t *bufsiz, FILE *fp)
36{
37 return getdelim(buf, bufsiz, '\n', fp);
38}
39
40#endif /* HAVE_GETLINE */
diff --git a/crypto/compat/posix_win.c b/crypto/compat/posix_win.c
index bb3e653..572e527 100644
--- a/crypto/compat/posix_win.c
+++ b/crypto/compat/posix_win.c
@@ -9,6 +9,8 @@
9 9
10#define NO_REDEF_POSIX_FUNCTIONS 10#define NO_REDEF_POSIX_FUNCTIONS
11 11
12#include <sys/time.h>
13
12#include <ws2tcpip.h> 14#include <ws2tcpip.h>
13#include <windows.h> 15#include <windows.h>
14 16
@@ -20,6 +22,25 @@
20#include <string.h> 22#include <string.h>
21#include <unistd.h> 23#include <unistd.h>
22 24
25#include <sys/stat.h>
26
27static int
28is_socket(int fd)
29{
30 // Border case: Don't break std* file descriptors
31 if (fd < 3)
32 return 0;
33
34 // All locally-allocated file descriptors will have the high bit set
35 return (fd & 0x80000000) == 0;
36}
37
38static int
39get_real_fd(int fd)
40{
41 return (fd & 0x7fffffff);
42}
43
23void 44void
24posix_perror(const char *s) 45posix_perror(const char *s)
25{ 46{
@@ -42,6 +63,12 @@ posix_fopen(const char *path, const char *mode)
42} 63}
43 64
44int 65int
66libressl_fstat(int fd, struct stat *statbuf)
67{
68 return fstat(get_real_fd(fd), statbuf);
69}
70
71int
45posix_open(const char *path, ...) 72posix_open(const char *path, ...)
46{ 73{
47 va_list ap; 74 va_list ap;
@@ -60,7 +87,11 @@ posix_open(const char *path, ...)
60 flags |= O_NOINHERIT; 87 flags |= O_NOINHERIT;
61 } 88 }
62 flags &= ~O_NONBLOCK; 89 flags &= ~O_NONBLOCK;
63 return open(path, flags, mode); 90
91 const int fh = open(path, flags, mode);
92
93 // Set high bit to mark file descriptor as a file handle
94 return fh + 0x80000000;
64} 95}
65 96
66char * 97char *
@@ -148,52 +179,6 @@ wsa_errno(int err)
148 return -1; 179 return -1;
149} 180}
150 181
151/*
152 * Employ a similar trick to cpython (pycore_fileutils.h) where the CRT report
153 * handler is disabled while checking if a descriptor is a socket or a file
154 */
155#if defined _MSC_VER && _MSC_VER >= 1900
156
157#include <crtdbg.h>
158#include <stdlib.h>
159
160static void noop_handler(const wchar_t *expression, const wchar_t *function,
161 const wchar_t *file, unsigned int line, uintptr_t pReserved)
162{
163 return;
164}
165
166#define BEGIN_SUPPRESS_IPH \
167 const int old_report_mode = _CrtSetReportMode(_CRT_ASSERT, 0); \
168 const _invalid_parameter_handler old_handler = _set_thread_local_invalid_parameter_handler(noop_handler)
169#define END_SUPPRESS_IPH \
170 (void)old_report_mode; /* Silence warning in release mode when _CrtSetReportMode compiles to void. */ \
171 _CrtSetReportMode(_CRT_ASSERT, old_report_mode); \
172 _set_thread_local_invalid_parameter_handler(old_handler)
173
174#else
175
176#define BEGIN_SUPPRESS_IPH
177#define END_SUPPRESS_IPH
178
179#endif
180
181static int
182is_socket(int fd)
183{
184 intptr_t hd;
185
186 BEGIN_SUPPRESS_IPH;
187 hd = _get_osfhandle(fd);
188 END_SUPPRESS_IPH;
189
190 if (hd == (intptr_t)INVALID_HANDLE_VALUE) {
191 return 1; /* fd is not file descriptor */
192 }
193
194 return 0;
195}
196
197int 182int
198posix_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) 183posix_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
199{ 184{
@@ -207,14 +192,13 @@ int
207posix_close(int fd) 192posix_close(int fd)
208{ 193{
209 int rc; 194 int rc;
210
211 if (is_socket(fd)) { 195 if (is_socket(fd)) {
212 if ((rc = closesocket(fd)) == SOCKET_ERROR) { 196 if ((rc = closesocket(fd)) == SOCKET_ERROR) {
213 int err = WSAGetLastError(); 197 int err = WSAGetLastError();
214 rc = wsa_errno(err); 198 rc = wsa_errno(err);
215 } 199 }
216 } else { 200 } else {
217 rc = close(fd); 201 rc = close(get_real_fd(fd));
218 } 202 }
219 return rc; 203 return rc;
220} 204}
@@ -223,14 +207,13 @@ ssize_t
223posix_read(int fd, void *buf, size_t count) 207posix_read(int fd, void *buf, size_t count)
224{ 208{
225 ssize_t rc; 209 ssize_t rc;
226
227 if (is_socket(fd)) { 210 if (is_socket(fd)) {
228 if ((rc = recv(fd, buf, count, 0)) == SOCKET_ERROR) { 211 if ((rc = recv(fd, buf, count, 0)) == SOCKET_ERROR) {
229 int err = WSAGetLastError(); 212 int err = WSAGetLastError();
230 rc = wsa_errno(err); 213 rc = wsa_errno(err);
231 } 214 }
232 } else { 215 } else {
233 rc = read(fd, buf, count); 216 rc = read(get_real_fd(fd), buf, count);
234 } 217 }
235 return rc; 218 return rc;
236} 219}
@@ -244,7 +227,7 @@ posix_write(int fd, const void *buf, size_t count)
244 rc = wsa_errno(WSAGetLastError()); 227 rc = wsa_errno(WSAGetLastError());
245 } 228 }
246 } else { 229 } else {
247 rc = write(fd, buf, count); 230 rc = write(get_real_fd(fd), buf, count);
248 } 231 }
249 return rc; 232 return rc;
250} 233}
@@ -289,7 +272,7 @@ uid_t getuid(void)
289 272
290#ifdef _MSC_VER 273#ifdef _MSC_VER
291struct timezone; 274struct timezone;
292int gettimeofday(struct timeval * tp, struct timezone * tzp) 275int gettimeofday(struct timeval *tp, void *tzp)
293{ 276{
294 /* 277 /*
295 * Note: some broken versions only have 8 trailing zero's, the correct 278 * Note: some broken versions only have 8 trailing zero's, the correct
@@ -306,7 +289,7 @@ int gettimeofday(struct timeval * tp, struct timezone * tzp)
306 time = ((uint64_t)file_time.dwLowDateTime); 289 time = ((uint64_t)file_time.dwLowDateTime);
307 time += ((uint64_t)file_time.dwHighDateTime) << 32; 290 time += ((uint64_t)file_time.dwHighDateTime) << 32;
308 291
309 tp->tv_sec = (long)((time - EPOCH) / 10000000L); 292 tp->tv_sec = (long long)((time - EPOCH) / 10000000L);
310 tp->tv_usec = (long)(system_time.wMilliseconds * 1000); 293 tp->tv_usec = (long)(system_time.wMilliseconds * 1000);
311 return 0; 294 return 0;
312} 295}
diff --git a/crypto/compat/ui_openssl_win.c b/crypto/compat/ui_openssl_win.c
index 09705e4..4ae2c5d 100644
--- a/crypto/compat/ui_openssl_win.c
+++ b/crypto/compat/ui_openssl_win.c
@@ -146,7 +146,7 @@ static int echo_console(UI *ui);
146static int noecho_console(UI *ui); 146static int noecho_console(UI *ui);
147static int close_console(UI *ui); 147static int close_console(UI *ui);
148 148
149static UI_METHOD ui_openssl = { 149static const UI_METHOD ui_openssl = {
150 .name = "OpenSSL default user interface", 150 .name = "OpenSSL default user interface",
151 .ui_open_session = open_console, 151 .ui_open_session = open_console,
152 .ui_write_string = write_string, 152 .ui_write_string = write_string,
@@ -155,7 +155,7 @@ static UI_METHOD ui_openssl = {
155}; 155};
156 156
157/* The method with all the built-in thingies */ 157/* The method with all the built-in thingies */
158UI_METHOD * 158const UI_METHOD *
159UI_OpenSSL(void) 159UI_OpenSSL(void)
160{ 160{
161 return &ui_openssl; 161 return &ui_openssl;
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index 9d015cd..11ab7c2 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -24,6 +24,8 @@ elseif(HOST_ARM)
24 file(READ arch/arm/opensslconf.h OPENSSLCONF) 24 file(READ arch/arm/opensslconf.h OPENSSLCONF)
25elseif(HOST_I386) 25elseif(HOST_I386)
26 file(READ arch/i386/opensslconf.h OPENSSLCONF) 26 file(READ arch/i386/opensslconf.h OPENSSLCONF)
27elseif(HOST_LOONGARCH64)
28 file(READ arch/loongarch64/opensslconf.h OPENSSLCONF)
27elseif(HOST_MIPS) 29elseif(HOST_MIPS)
28 file(READ arch/mips/opensslconf.h OPENSSLCONF) 30 file(READ arch/mips/opensslconf.h OPENSSLCONF)
29elseif(HOST_MIPS64) 31elseif(HOST_MIPS64)
@@ -38,5 +40,7 @@ elseif(HOST_SPARC64)
38 file(READ arch/sparc64/opensslconf.h OPENSSLCONF) 40 file(READ arch/sparc64/opensslconf.h OPENSSLCONF)
39elseif(HOST_X86_64) 41elseif(HOST_X86_64)
40 file(READ arch/amd64/opensslconf.h OPENSSLCONF) 42 file(READ arch/amd64/opensslconf.h OPENSSLCONF)
43else()
44 message(FATAL_ERROR "Architecture not supported")
41endif() 45endif()
42file(WRITE ${CMAKE_BINARY_DIR}/include/openssl/opensslconf.h "${OPENSSLCONF}") 46file(WRITE ${CMAKE_BINARY_DIR}/include/openssl/opensslconf.h "${OPENSSLCONF}")
diff --git a/include/arch/loongarch64/opensslconf.h b/include/arch/loongarch64/opensslconf.h
new file mode 100644
index 0000000..731b06a
--- /dev/null
+++ b/include/arch/loongarch64/opensslconf.h
@@ -0,0 +1,154 @@
1#include <openssl/opensslfeatures.h>
2/* crypto/opensslconf.h.in */
3
4#if defined(HEADER_CRYPTO_LOCAL_H) && !defined(OPENSSLDIR)
5#define OPENSSLDIR "/etc/ssl"
6#endif
7
8#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
9
10#ifndef OPENSSL_FILE
11#ifdef OPENSSL_NO_FILENAMES
12#define OPENSSL_FILE ""
13#define OPENSSL_LINE 0
14#else
15#define OPENSSL_FILE __FILE__
16#define OPENSSL_LINE __LINE__
17#endif
18#endif
19
20#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
21#define IDEA_INT unsigned int
22#endif
23
24#if defined(HEADER_MD2_H) && !defined(MD2_INT)
25#define MD2_INT unsigned int
26#endif
27
28#if defined(HEADER_RC2_H) && !defined(RC2_INT)
29/* I need to put in a mod for the alpha - eay */
30#define RC2_INT unsigned int
31#endif
32
33#if defined(HEADER_RC4_H)
34#if !defined(RC4_INT)
35/* using int types make the structure larger but make the code faster
36 * on most boxes I have tested - up to %20 faster. */
37/*
38 * I don't know what does "most" mean, but declaring "int" is a must on:
39 * - Intel P6 because partial register stalls are very expensive;
40 * - elder Alpha because it lacks byte load/store instructions;
41 */
42#define RC4_INT unsigned int
43#endif
44#if !defined(RC4_CHUNK)
45/*
46 * This enables code handling data aligned at natural CPU word
47 * boundary. See crypto/rc4/rc4_enc.c for further details.
48 */
49#define RC4_CHUNK unsigned long
50#endif
51#endif
52
53#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
54/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
55 * %20 speed up (longs are 8 bytes, int's are 4). */
56#ifndef DES_LONG
57#define DES_LONG unsigned int
58#endif
59#endif
60
61#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
62#define CONFIG_HEADER_BN_H
63#undef BN_LLONG
64
65/* Should we define BN_DIV2W here? */
66
67/* Only one for the following should be defined */
68/* The prime number generation stuff may not work when
69 * EIGHT_BIT but I don't care since I've only used this mode
70 * for debugging the bignum libraries */
71#define SIXTY_FOUR_BIT_LONG
72#undef SIXTY_FOUR_BIT
73#undef THIRTY_TWO_BIT
74#undef SIXTEEN_BIT
75#undef EIGHT_BIT
76#endif
77
78#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
79#define CONFIG_HEADER_BF_LOCL_H
80#undef BF_PTR
81#endif /* HEADER_BF_LOCL_H */
82
83#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
84#define CONFIG_HEADER_DES_LOCL_H
85#ifndef DES_DEFAULT_OPTIONS
86/* the following is tweaked from a config script, that is why it is a
87 * protected undef/define */
88#ifndef DES_PTR
89#undef DES_PTR
90#endif
91
92/* This helps C compiler generate the correct code for multiple functional
93 * units. It reduces register dependencies at the expense of 2 more
94 * registers */
95#ifndef DES_RISC1
96#undef DES_RISC1
97#endif
98
99#ifndef DES_RISC2
100#undef DES_RISC2
101#endif
102
103#if defined(DES_RISC1) && defined(DES_RISC2)
104YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
105#endif
106
107/* Unroll the inner loop, this sometimes helps, sometimes hinders.
108 * Very much CPU dependent */
109#ifndef DES_UNROLL
110#define DES_UNROLL
111#endif
112
113/* These default values were supplied by
114 * Peter Gutman <pgut001@cs.auckland.ac.nz>
115 * They are only used if nothing else has been defined */
116#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
117/* Special defines which change the way the code is built depending on the
118 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
119 even newer MIPS CPU's, but at the moment one size fits all for
120 optimization options. Older Sparc's work better with only UNROLL, but
121 there's no way to tell at compile time what it is you're running on */
122
123#if defined( sun ) /* Newer Sparc's */
124# define DES_PTR
125# define DES_RISC1
126# define DES_UNROLL
127#elif defined( __ultrix ) /* Older MIPS */
128# define DES_PTR
129# define DES_RISC2
130# define DES_UNROLL
131#elif defined( __osf1__ ) /* Alpha */
132# define DES_PTR
133# define DES_RISC2
134#elif defined ( _AIX ) /* RS6000 */
135 /* Unknown */
136#elif defined( __hpux ) /* HP-PA */
137 /* Unknown */
138#elif defined( __aux ) /* 68K */
139 /* Unknown */
140#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
141# define DES_UNROLL
142#elif defined( __sgi ) /* Newer MIPS */
143# define DES_PTR
144# define DES_RISC2
145# define DES_UNROLL
146#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
147# define DES_PTR
148# define DES_RISC1
149# define DES_UNROLL
150#endif /* Systems-specific speed defines */
151#endif
152
153#endif /* DES_DEFAULT_OPTIONS */
154#endif /* HEADER_DES_LOCL_H */
diff --git a/include/arch/mips/opensslconf.h b/include/arch/mips/opensslconf.h
index f17d3d2..a5d26b6 100644
--- a/include/arch/mips/opensslconf.h
+++ b/include/arch/mips/opensslconf.h
@@ -1,15 +1,22 @@
1#include <openssl/opensslfeatures.h> 1#include <openssl/opensslfeatures.h>
2/* crypto/opensslconf.h.in */ 2/* crypto/opensslconf.h.in */
3 3
4#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) 4#if defined(HEADER_CRYPTO_LOCAL_H) && !defined(OPENSSLDIR)
5#define OPENSSLDIR "/etc/ssl" 5#define OPENSSLDIR "/etc/ssl"
6#endif 6#endif
7 7
8#undef OPENSSL_UNISTD
9#define OPENSSL_UNISTD <unistd.h>
10
11#undef OPENSSL_EXPORT_VAR_AS_FUNCTION 8#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
12 9
10#ifndef OPENSSL_FILE
11#ifdef OPENSSL_NO_FILENAMES
12#define OPENSSL_FILE ""
13#define OPENSSL_LINE 0
14#else
15#define OPENSSL_FILE __FILE__
16#define OPENSSL_LINE __LINE__
17#endif
18#endif
19
13#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) 20#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
14#define IDEA_INT unsigned int 21#define IDEA_INT unsigned int
15#endif 22#endif
@@ -68,13 +75,6 @@
68#undef EIGHT_BIT 75#undef EIGHT_BIT
69#endif 76#endif
70 77
71#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
72#define CONFIG_HEADER_RC4_LOCL_H
73/* if this is defined data[i] is used instead of *data, this is a %20
74 * speedup on x86 */
75#define RC4_INDEX
76#endif
77
78#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) 78#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
79#define CONFIG_HEADER_BF_LOCL_H 79#define CONFIG_HEADER_BF_LOCL_H
80#undef BF_PTR 80#undef BF_PTR
diff --git a/include/compat/endian.h b/include/compat/endian.h
index 5376c1a..af3664d 100644
--- a/include/compat/endian.h
+++ b/include/compat/endian.h
@@ -62,7 +62,7 @@
62#endif 62#endif
63#endif 63#endif
64 64
65#if defined(__APPLE__) && !defined(HAVE_ENDIAN_H) 65#if defined(__APPLE__)
66#include <libkern/OSByteOrder.h> 66#include <libkern/OSByteOrder.h>
67#define be16toh(x) OSSwapBigToHostInt16((x)) 67#define be16toh(x) OSSwapBigToHostInt16((x))
68#define htobe16(x) OSSwapHostToBigInt16((x)) 68#define htobe16(x) OSSwapHostToBigInt16((x))
@@ -74,7 +74,7 @@
74#define htobe64(x) OSSwapHostToBigInt64(x) 74#define htobe64(x) OSSwapHostToBigInt64(x)
75#define le64toh(x) OSSwapLittleToHostInt64(x) 75#define le64toh(x) OSSwapLittleToHostInt64(x)
76#define be64toh(x) OSSwapBigToHostInt64(x) 76#define be64toh(x) OSSwapBigToHostInt64(x)
77#endif /* __APPLE__ && !HAVE_ENDIAN_H */ 77#endif /* __APPLE__ */
78 78
79#if defined(_WIN32) && !defined(HAVE_ENDIAN_H) 79#if defined(_WIN32) && !defined(HAVE_ENDIAN_H)
80#include <winsock2.h> 80#include <winsock2.h>
@@ -101,6 +101,8 @@
101#endif 101#endif
102 102
103#define htobe64(x) ntohll((x)) 103#define htobe64(x) ntohll((x))
104#define htole64(x) (x)
105#define le64toh(x) (x)
104#endif /* _WIN32 && !HAVE_ENDIAN_H */ 106#endif /* _WIN32 && !HAVE_ENDIAN_H */
105 107
106#ifdef __linux__ 108#ifdef __linux__
@@ -151,6 +153,8 @@
151#define htole32(x) LE_32(x) 153#define htole32(x) LE_32(x)
152#define htobe32(x) BE_32(x) 154#define htobe32(x) BE_32(x)
153#define be64toh(x) BE_64(x) 155#define be64toh(x) BE_64(x)
156#define le64toh(x) LE_64(x)
157#define htole64(x) LE_64(x)
154#define htobe64(x) BE_64(x) 158#define htobe64(x) BE_64(x)
155#endif 159#endif
156 160
diff --git a/include/compat/stdio.h b/include/compat/stdio.h
index 2af8f3e..2ccdeeb 100644
--- a/include/compat/stdio.h
+++ b/include/compat/stdio.h
@@ -18,6 +18,18 @@
18#include_next <stdio.h> 18#include_next <stdio.h>
19#endif 19#endif
20 20
21#ifndef HAVE_GETDELIM
22#include <sys/types.h>
23#define getdelim libressl_getdelim
24ssize_t getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp);
25#endif
26
27#ifndef HAVE_GETLINE
28#include <sys/types.h>
29#define getline libressl_getline
30ssize_t getline(char **buf, size_t *bufsiz, FILE *fp);
31#endif
32
21#ifndef HAVE_ASPRINTF 33#ifndef HAVE_ASPRINTF
22#include <stdarg.h> 34#include <stdarg.h>
23#define vasprintf libressl_vasprintf 35#define vasprintf libressl_vasprintf
diff --git a/include/compat/sys/stat.h b/include/compat/sys/stat.h
index b88da1d..57aa521 100644
--- a/include/compat/sys/stat.h
+++ b/include/compat/sys/stat.h
@@ -118,4 +118,12 @@
118 118
119#endif 119#endif
120 120
121#ifdef _WIN32
122int libressl_fstat(int fd, struct stat *statbuf);
123
124#ifndef NO_REDEF_POSIX_FUNCTIONS
125#define fstat(fd, statbuf) libressl_fstat(fd, statbuf)
126#endif
127#endif
128
121#endif 129#endif
diff --git a/include/compat/sys/time.h b/include/compat/sys/time.h
index 76428c1..2448969 100644
--- a/include/compat/sys/time.h
+++ b/include/compat/sys/time.h
@@ -8,6 +8,15 @@
8 8
9#ifdef _MSC_VER 9#ifdef _MSC_VER
10#include <winsock2.h> 10#include <winsock2.h>
11
12#define timeval libressl_timeval
13#define gettimeofday libressl_gettimeofday
14
15struct timeval {
16 long long tv_sec;
17 long tv_usec;
18};
19
11int gettimeofday(struct timeval *tp, void *tzp); 20int gettimeofday(struct timeval *tp, void *tzp);
12#else 21#else
13#include_next <sys/time.h> 22#include_next <sys/time.h>
diff --git a/include/openssl/Makefile.am.tpl b/include/openssl/Makefile.am.tpl
index 303d0b9..4bbbd60 100644
--- a/include/openssl/Makefile.am.tpl
+++ b/include/openssl/Makefile.am.tpl
@@ -17,6 +17,9 @@ endif
17if HOST_I386 17if HOST_I386
18 -cp $(top_srcdir)/include/arch/i386/opensslconf.h opensslconf.h 18 -cp $(top_srcdir)/include/arch/i386/opensslconf.h opensslconf.h
19endif 19endif
20if HOST_LOONGARCH64
21 -cp $(top_srcdir)/include/arch/loongarch64/opensslconf.h opensslconf.h
22endif
20if HOST_MIPS 23if HOST_MIPS
21 -cp $(top_srcdir)/include/arch/mips/opensslconf.h opensslconf.h 24 -cp $(top_srcdir)/include/arch/mips/opensslconf.h opensslconf.h
22endif 25endif
diff --git a/m4/check-libc.m4 b/m4/check-libc.m4
index 40df15b..8cb849b 100644
--- a/m4/check-libc.m4
+++ b/m4/check-libc.m4
@@ -7,7 +7,7 @@ AC_CHECK_HEADERS([netinet/ip.h], [], [],
7]) 7])
8AC_HEADER_RESOLV 8AC_HEADER_RESOLV
9# Check for general libc functions 9# Check for general libc functions
10AC_CHECK_FUNCS([asprintf freezero memmem]) 10AC_CHECK_FUNCS([asprintf freezero getdelim getline memmem])
11AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray]) 11AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray])
12AC_CHECK_FUNCS([strcasecmp strlcat strlcpy strndup strnlen strsep strtonum]) 12AC_CHECK_FUNCS([strcasecmp strlcat strlcpy strndup strnlen strsep strtonum])
13AC_CHECK_FUNCS([timegm _mkgmtime timespecsub]) 13AC_CHECK_FUNCS([timegm _mkgmtime timespecsub])
@@ -24,6 +24,8 @@ AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [
24]) 24])
25AM_CONDITIONAL([HAVE_ASPRINTF], [test "x$ac_cv_func_asprintf" = xyes]) 25AM_CONDITIONAL([HAVE_ASPRINTF], [test "x$ac_cv_func_asprintf" = xyes])
26AM_CONDITIONAL([HAVE_FREEZERO], [test "x$ac_cv_func_freezero" = xyes]) 26AM_CONDITIONAL([HAVE_FREEZERO], [test "x$ac_cv_func_freezero" = xyes])
27AM_CONDITIONAL([HAVE_GETDELIM], [test "x$ac_cv_func_getdelim" = xyes])
28AM_CONDITIONAL([HAVE_GETLINE], [test "x$ac_cv_func_getline" = xyes])
27AM_CONDITIONAL([HAVE_GETPAGESIZE], [test "x$ac_cv_func_getpagesize" = xyes]) 29AM_CONDITIONAL([HAVE_GETPAGESIZE], [test "x$ac_cv_func_getpagesize" = xyes])
28AM_CONDITIONAL([HAVE_GETOPT], [test "x$ac_cv_func_getopt" = xyes]) 30AM_CONDITIONAL([HAVE_GETOPT], [test "x$ac_cv_func_getopt" = xyes])
29AM_CONDITIONAL([HAVE_MEMMEM], [test "x$ac_cv_func_memmem" = xyes]) 31AM_CONDITIONAL([HAVE_MEMMEM], [test "x$ac_cv_func_memmem" = xyes])
diff --git a/m4/check-os-options.m4 b/m4/check-os-options.m4
index 91c3021..2ef4293 100644
--- a/m4/check-os-options.m4
+++ b/m4/check-os-options.m4
@@ -133,6 +133,7 @@ char buf[1]; getentropy(buf, 1);
133 ;; 133 ;;
134 *) 134 *)
135 HOST_OS=unsupported 135 HOST_OS=unsupported
136 HOST_ABI=elf
136 ;; 137 ;;
137esac 138esac
138 139
diff --git a/man/links b/man/links
index c07d534..b1dbf82 100644
--- a/man/links
+++ b/man/links
@@ -514,12 +514,6 @@ CONF_modules_free.3,CONF_modules_finish.3
514CONF_modules_free.3,CONF_modules_unload.3 514CONF_modules_free.3,CONF_modules_unload.3
515CONF_modules_load_file.3,CONF_modules_load.3 515CONF_modules_load_file.3,CONF_modules_load.3
516CONF_modules_load_file.3,X509_get_default_cert_area.3 516CONF_modules_load_file.3,X509_get_default_cert_area.3
517CRYPTO_get_mem_functions.3,CRYPTO_MEM_LEAK_CB.3
518CRYPTO_get_mem_functions.3,CRYPTO_mem_ctrl.3
519CRYPTO_get_mem_functions.3,CRYPTO_mem_leaks.3
520CRYPTO_get_mem_functions.3,CRYPTO_mem_leaks_cb.3
521CRYPTO_get_mem_functions.3,CRYPTO_mem_leaks_fp.3
522CRYPTO_get_mem_functions.3,CRYPTO_set_mem_functions.3
523CRYPTO_lock.3,CRYPTO_add.3 517CRYPTO_lock.3,CRYPTO_add.3
524CRYPTO_lock.3,CRYPTO_r_lock.3 518CRYPTO_lock.3,CRYPTO_r_lock.3
525CRYPTO_lock.3,CRYPTO_r_unlock.3 519CRYPTO_lock.3,CRYPTO_r_unlock.3
@@ -532,6 +526,11 @@ CRYPTO_set_ex_data.3,CRYPTO_free_ex_data.3
532CRYPTO_set_ex_data.3,CRYPTO_get_ex_data.3 526CRYPTO_set_ex_data.3,CRYPTO_get_ex_data.3
533CRYPTO_set_ex_data.3,CRYPTO_get_ex_new_index.3 527CRYPTO_set_ex_data.3,CRYPTO_get_ex_new_index.3
534CRYPTO_set_ex_data.3,CRYPTO_new_ex_data.3 528CRYPTO_set_ex_data.3,CRYPTO_new_ex_data.3
529CRYPTO_set_mem_functions.3,CRYPTO_MEM_LEAK_CB.3
530CRYPTO_set_mem_functions.3,CRYPTO_mem_ctrl.3
531CRYPTO_set_mem_functions.3,CRYPTO_mem_leaks.3
532CRYPTO_set_mem_functions.3,CRYPTO_mem_leaks_cb.3
533CRYPTO_set_mem_functions.3,CRYPTO_mem_leaks_fp.3
535ChaCha.3,CRYPTO_chacha_20.3 534ChaCha.3,CRYPTO_chacha_20.3
536ChaCha.3,CRYPTO_hchacha_20.3 535ChaCha.3,CRYPTO_hchacha_20.3
537ChaCha.3,CRYPTO_xchacha_20.3 536ChaCha.3,CRYPTO_xchacha_20.3
@@ -645,8 +644,6 @@ ECDSA_SIG_new.3,ECDSA_size.3
645ECDSA_SIG_new.3,ECDSA_verify.3 644ECDSA_SIG_new.3,ECDSA_verify.3
646ECDSA_SIG_new.3,d2i_ECDSA_SIG.3 645ECDSA_SIG_new.3,d2i_ECDSA_SIG.3
647ECDSA_SIG_new.3,i2d_ECDSA_SIG.3 646ECDSA_SIG_new.3,i2d_ECDSA_SIG.3
648EC_GFp_simple_method.3,EC_GFp_mont_method.3
649EC_GFp_simple_method.3,EC_METHOD_get_field_type.3
650EC_GROUP_copy.3,EC_GROUP_check.3 647EC_GROUP_copy.3,EC_GROUP_check.3
651EC_GROUP_copy.3,EC_GROUP_check_discriminant.3 648EC_GROUP_copy.3,EC_GROUP_check_discriminant.3
652EC_GROUP_copy.3,EC_GROUP_cmp.3 649EC_GROUP_copy.3,EC_GROUP_cmp.3
@@ -661,7 +658,6 @@ EC_GROUP_copy.3,EC_GROUP_get_degree.3
661EC_GROUP_copy.3,EC_GROUP_get_order.3 658EC_GROUP_copy.3,EC_GROUP_get_order.3
662EC_GROUP_copy.3,EC_GROUP_get_point_conversion_form.3 659EC_GROUP_copy.3,EC_GROUP_get_point_conversion_form.3
663EC_GROUP_copy.3,EC_GROUP_get_seed_len.3 660EC_GROUP_copy.3,EC_GROUP_get_seed_len.3
664EC_GROUP_copy.3,EC_GROUP_method_of.3
665EC_GROUP_copy.3,EC_GROUP_order_bits.3 661EC_GROUP_copy.3,EC_GROUP_order_bits.3
666EC_GROUP_copy.3,EC_GROUP_set_asn1_flag.3 662EC_GROUP_copy.3,EC_GROUP_set_asn1_flag.3
667EC_GROUP_copy.3,EC_GROUP_set_curve_name.3 663EC_GROUP_copy.3,EC_GROUP_set_curve_name.3
@@ -721,8 +717,6 @@ EC_KEY_new.3,EC_KEY_set_private_key.3
721EC_KEY_new.3,EC_KEY_set_public_key.3 717EC_KEY_new.3,EC_KEY_set_public_key.3
722EC_KEY_new.3,EC_KEY_set_public_key_affine_coordinates.3 718EC_KEY_new.3,EC_KEY_set_public_key_affine_coordinates.3
723EC_KEY_new.3,EC_KEY_up_ref.3 719EC_KEY_new.3,EC_KEY_up_ref.3
724EC_POINT_add.3,EC_GROUP_have_precompute_mult.3
725EC_POINT_add.3,EC_GROUP_precompute_mult.3
726EC_POINT_add.3,EC_POINT_cmp.3 720EC_POINT_add.3,EC_POINT_cmp.3
727EC_POINT_add.3,EC_POINT_dbl.3 721EC_POINT_add.3,EC_POINT_dbl.3
728EC_POINT_add.3,EC_POINT_invert.3 722EC_POINT_add.3,EC_POINT_invert.3
@@ -730,23 +724,18 @@ EC_POINT_add.3,EC_POINT_is_at_infinity.3
730EC_POINT_add.3,EC_POINT_is_on_curve.3 724EC_POINT_add.3,EC_POINT_is_on_curve.3
731EC_POINT_add.3,EC_POINT_make_affine.3 725EC_POINT_add.3,EC_POINT_make_affine.3
732EC_POINT_add.3,EC_POINT_mul.3 726EC_POINT_add.3,EC_POINT_mul.3
733EC_POINT_add.3,EC_POINTs_make_affine.3
734EC_POINT_add.3,EC_POINTs_mul.3
735EC_POINT_new.3,EC_POINT_bn2point.3 727EC_POINT_new.3,EC_POINT_bn2point.3
736EC_POINT_new.3,EC_POINT_clear_free.3 728EC_POINT_new.3,EC_POINT_clear_free.3
737EC_POINT_new.3,EC_POINT_copy.3 729EC_POINT_new.3,EC_POINT_copy.3
738EC_POINT_new.3,EC_POINT_dup.3 730EC_POINT_new.3,EC_POINT_dup.3
739EC_POINT_new.3,EC_POINT_free.3 731EC_POINT_new.3,EC_POINT_free.3
740EC_POINT_new.3,EC_POINT_get_Jprojective_coordinates_GFp.3
741EC_POINT_new.3,EC_POINT_get_affine_coordinates.3 732EC_POINT_new.3,EC_POINT_get_affine_coordinates.3
742EC_POINT_new.3,EC_POINT_get_affine_coordinates_GFp.3 733EC_POINT_new.3,EC_POINT_get_affine_coordinates_GFp.3
743EC_POINT_new.3,EC_POINT_hex2point.3 734EC_POINT_new.3,EC_POINT_hex2point.3
744EC_POINT_new.3,EC_POINT_method_of.3
745EC_POINT_new.3,EC_POINT_oct2point.3 735EC_POINT_new.3,EC_POINT_oct2point.3
746EC_POINT_new.3,EC_POINT_point2bn.3 736EC_POINT_new.3,EC_POINT_point2bn.3
747EC_POINT_new.3,EC_POINT_point2hex.3 737EC_POINT_new.3,EC_POINT_point2hex.3
748EC_POINT_new.3,EC_POINT_point2oct.3 738EC_POINT_new.3,EC_POINT_point2oct.3
749EC_POINT_new.3,EC_POINT_set_Jprojective_coordinates_GFp.3
750EC_POINT_new.3,EC_POINT_set_affine_coordinates.3 739EC_POINT_new.3,EC_POINT_set_affine_coordinates.3
751EC_POINT_new.3,EC_POINT_set_affine_coordinates_GFp.3 740EC_POINT_new.3,EC_POINT_set_affine_coordinates_GFp.3
752EC_POINT_new.3,EC_POINT_set_compressed_coordinates.3 741EC_POINT_new.3,EC_POINT_set_compressed_coordinates.3
@@ -791,8 +780,6 @@ ERR_load_strings.3,ERR_PACK.3
791ERR_load_strings.3,ERR_get_next_error_library.3 780ERR_load_strings.3,ERR_get_next_error_library.3
792ERR_print_errors.3,ERR_print_errors_cb.3 781ERR_print_errors.3,ERR_print_errors_cb.3
793ERR_print_errors.3,ERR_print_errors_fp.3 782ERR_print_errors.3,ERR_print_errors_fp.3
794ERR_put_error.3,ERR_add_error_data.3
795ERR_put_error.3,ERR_add_error_vdata.3
796ERR_remove_state.3,ERR_remove_thread_state.3 783ERR_remove_state.3,ERR_remove_thread_state.3
797ERR_set_mark.3,ERR_pop_to_mark.3 784ERR_set_mark.3,ERR_pop_to_mark.3
798ESS_SIGNING_CERT_new.3,ESS_CERT_ID_free.3 785ESS_SIGNING_CERT_new.3,ESS_CERT_ID_free.3
@@ -938,13 +925,6 @@ EVP_EncryptInit.3,EVP_idea_cfb.3
938EVP_EncryptInit.3,EVP_idea_cfb64.3 925EVP_EncryptInit.3,EVP_idea_cfb64.3
939EVP_EncryptInit.3,EVP_idea_ecb.3 926EVP_EncryptInit.3,EVP_idea_ecb.3
940EVP_EncryptInit.3,EVP_idea_ofb.3 927EVP_EncryptInit.3,EVP_idea_ofb.3
941EVP_EncryptInit.3,EVP_rc2_40_cbc.3
942EVP_EncryptInit.3,EVP_rc2_64_cbc.3
943EVP_EncryptInit.3,EVP_rc2_cbc.3
944EVP_EncryptInit.3,EVP_rc2_cfb.3
945EVP_EncryptInit.3,EVP_rc2_cfb64.3
946EVP_EncryptInit.3,EVP_rc2_ecb.3
947EVP_EncryptInit.3,EVP_rc2_ofb.3
948EVP_MD_CTX_ctrl.3,EVP_MD_CTX_clear_flags.3 928EVP_MD_CTX_ctrl.3,EVP_MD_CTX_clear_flags.3
949EVP_MD_CTX_ctrl.3,EVP_MD_CTX_md_data.3 929EVP_MD_CTX_ctrl.3,EVP_MD_CTX_md_data.3
950EVP_MD_CTX_ctrl.3,EVP_MD_CTX_pkey_ctx.3 930EVP_MD_CTX_ctrl.3,EVP_MD_CTX_pkey_ctx.3
@@ -992,32 +972,13 @@ EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_add1_hkdf_info.3
992EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_hkdf_mode.3 972EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_hkdf_mode.3
993EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_set1_hkdf_key.3 973EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_set1_hkdf_key.3
994EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_set1_hkdf_salt.3 974EVP_PKEY_CTX_set_hkdf_md.3,EVP_PKEY_CTX_set1_hkdf_salt.3
995EVP_PKEY_add1_attr.3,EVP_PKEY_add1_attr_by_NID.3 975EVP_PKEY_CTX_set_tls1_prf_md.3,EVP_PKEY_CTX_add1_tls1_prf_seed.3
996EVP_PKEY_add1_attr.3,EVP_PKEY_add1_attr_by_OBJ.3 976EVP_PKEY_CTX_set_tls1_prf_md.3,EVP_PKEY_CTX_set1_tls1_prf_secret.3
997EVP_PKEY_add1_attr.3,EVP_PKEY_add1_attr_by_txt.3
998EVP_PKEY_add1_attr.3,EVP_PKEY_delete_attr.3
999EVP_PKEY_add1_attr.3,EVP_PKEY_get_attr.3
1000EVP_PKEY_add1_attr.3,EVP_PKEY_get_attr_by_NID.3
1001EVP_PKEY_add1_attr.3,EVP_PKEY_get_attr_by_OBJ.3
1002EVP_PKEY_add1_attr.3,EVP_PKEY_get_attr_count.3
1003EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_find.3 977EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_find.3
1004EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_find_str.3 978EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_find_str.3
1005EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_get0.3 979EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_get0.3
1006EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_get0_info.3 980EVP_PKEY_asn1_get_count.3,EVP_PKEY_asn1_get0_info.3
1007EVP_PKEY_asn1_get_count.3,EVP_PKEY_get0_asn1.3 981EVP_PKEY_asn1_get_count.3,EVP_PKEY_get0_asn1.3
1008EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_copy.3
1009EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_free.3
1010EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_check.3
1011EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_ctrl.3
1012EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_free.3
1013EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_param.3
1014EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_param_check.3
1015EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_private.3
1016EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_public.3
1017EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_public_check.3
1018EVP_PKEY_asn1_new.3,EVP_PKEY_asn1_set_security_bits.3
1019EVP_PKEY_check.3,EVP_PKEY_param_check.3
1020EVP_PKEY_check.3,EVP_PKEY_public_check.3
1021EVP_PKEY_cmp.3,EVP_PKEY_cmp_parameters.3 982EVP_PKEY_cmp.3,EVP_PKEY_cmp_parameters.3
1022EVP_PKEY_cmp.3,EVP_PKEY_copy_parameters.3 983EVP_PKEY_cmp.3,EVP_PKEY_copy_parameters.3
1023EVP_PKEY_cmp.3,EVP_PKEY_missing_parameters.3 984EVP_PKEY_cmp.3,EVP_PKEY_missing_parameters.3
@@ -1028,41 +989,19 @@ EVP_PKEY_derive.3,EVP_PKEY_derive_set_peer.3
1028EVP_PKEY_encrypt.3,EVP_PKEY_encrypt_init.3 989EVP_PKEY_encrypt.3,EVP_PKEY_encrypt_init.3
1029EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_app_data.3 990EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_app_data.3
1030EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_cb.3 991EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_cb.3
992EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_data.3
1031EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_keygen_info.3 993EVP_PKEY_keygen.3,EVP_PKEY_CTX_get_keygen_info.3
1032EVP_PKEY_keygen.3,EVP_PKEY_CTX_set0_keygen_info.3 994EVP_PKEY_keygen.3,EVP_PKEY_CTX_set0_keygen_info.3
1033EVP_PKEY_keygen.3,EVP_PKEY_CTX_set_app_data.3 995EVP_PKEY_keygen.3,EVP_PKEY_CTX_set_app_data.3
1034EVP_PKEY_keygen.3,EVP_PKEY_CTX_set_cb.3 996EVP_PKEY_keygen.3,EVP_PKEY_CTX_set_cb.3
997EVP_PKEY_keygen.3,EVP_PKEY_CTX_set_data.3
1035EVP_PKEY_keygen.3,EVP_PKEY_gen_cb.3 998EVP_PKEY_keygen.3,EVP_PKEY_gen_cb.3
1036EVP_PKEY_keygen.3,EVP_PKEY_keygen_init.3 999EVP_PKEY_keygen.3,EVP_PKEY_keygen_init.3
1037EVP_PKEY_keygen.3,EVP_PKEY_paramgen.3 1000EVP_PKEY_keygen.3,EVP_PKEY_paramgen.3
1038EVP_PKEY_keygen.3,EVP_PKEY_paramgen_init.3 1001EVP_PKEY_keygen.3,EVP_PKEY_paramgen_init.3
1039EVP_PKEY_meth_new.3,EVP_PKEY_CTX_get_data.3
1040EVP_PKEY_meth_new.3,EVP_PKEY_CTX_set_data.3
1041EVP_PKEY_meth_new.3,EVP_PKEY_meth_add0.3
1042EVP_PKEY_meth_new.3,EVP_PKEY_meth_copy.3
1043EVP_PKEY_meth_new.3,EVP_PKEY_meth_find.3
1044EVP_PKEY_meth_new.3,EVP_PKEY_meth_free.3
1045EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_check.3
1046EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_cleanup.3
1047EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_copy.3
1048EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_ctrl.3
1049EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_decrypt.3
1050EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_derive.3
1051EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_encrypt.3
1052EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_init.3
1053EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_keygen.3
1054EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_param_check.3
1055EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_paramgen.3
1056EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_public_check.3
1057EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_sign.3
1058EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_signctx.3
1059EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_verify.3
1060EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_verify_recover.3
1061EVP_PKEY_meth_new.3,EVP_PKEY_meth_set_verifyctx.3
1062EVP_PKEY_new.3,EVP_PKEY_free.3 1002EVP_PKEY_new.3,EVP_PKEY_free.3
1063EVP_PKEY_new.3,EVP_PKEY_get_raw_private_key.3 1003EVP_PKEY_new.3,EVP_PKEY_get_raw_private_key.3
1064EVP_PKEY_new.3,EVP_PKEY_get_raw_public_key.3 1004EVP_PKEY_new.3,EVP_PKEY_get_raw_public_key.3
1065EVP_PKEY_new.3,EVP_PKEY_new_CMAC_key.3
1066EVP_PKEY_new.3,EVP_PKEY_new_mac_key.3 1005EVP_PKEY_new.3,EVP_PKEY_new_mac_key.3
1067EVP_PKEY_new.3,EVP_PKEY_new_raw_private_key.3 1006EVP_PKEY_new.3,EVP_PKEY_new_raw_private_key.3
1068EVP_PKEY_new.3,EVP_PKEY_new_raw_public_key.3 1007EVP_PKEY_new.3,EVP_PKEY_new_raw_public_key.3
@@ -1106,41 +1045,39 @@ EVP_VerifyInit.3,EVP_VerifyFinal.3
1106EVP_VerifyInit.3,EVP_VerifyInit_ex.3 1045EVP_VerifyInit.3,EVP_VerifyInit_ex.3
1107EVP_VerifyInit.3,EVP_VerifyUpdate.3 1046EVP_VerifyInit.3,EVP_VerifyUpdate.3
1108EVP_aes_128_cbc.3,EVP_aes_128_cbc_hmac_sha1.3 1047EVP_aes_128_cbc.3,EVP_aes_128_cbc_hmac_sha1.3
1109EVP_aes_128_cbc.3,EVP_aes_128_ccm.3
1110EVP_aes_128_cbc.3,EVP_aes_128_cfb.3 1048EVP_aes_128_cbc.3,EVP_aes_128_cfb.3
1111EVP_aes_128_cbc.3,EVP_aes_128_cfb1.3 1049EVP_aes_128_cbc.3,EVP_aes_128_cfb1.3
1112EVP_aes_128_cbc.3,EVP_aes_128_cfb128.3 1050EVP_aes_128_cbc.3,EVP_aes_128_cfb128.3
1113EVP_aes_128_cbc.3,EVP_aes_128_cfb8.3 1051EVP_aes_128_cbc.3,EVP_aes_128_cfb8.3
1114EVP_aes_128_cbc.3,EVP_aes_128_ctr.3 1052EVP_aes_128_cbc.3,EVP_aes_128_ctr.3
1115EVP_aes_128_cbc.3,EVP_aes_128_ecb.3 1053EVP_aes_128_cbc.3,EVP_aes_128_ecb.3
1116EVP_aes_128_cbc.3,EVP_aes_128_gcm.3
1117EVP_aes_128_cbc.3,EVP_aes_128_ofb.3 1054EVP_aes_128_cbc.3,EVP_aes_128_ofb.3
1118EVP_aes_128_cbc.3,EVP_aes_128_wrap.3 1055EVP_aes_128_cbc.3,EVP_aes_128_wrap.3
1119EVP_aes_128_cbc.3,EVP_aes_128_xts.3 1056EVP_aes_128_cbc.3,EVP_aes_128_xts.3
1120EVP_aes_128_cbc.3,EVP_aes_192_cbc.3 1057EVP_aes_128_cbc.3,EVP_aes_192_cbc.3
1121EVP_aes_128_cbc.3,EVP_aes_192_ccm.3
1122EVP_aes_128_cbc.3,EVP_aes_192_cfb.3 1058EVP_aes_128_cbc.3,EVP_aes_192_cfb.3
1123EVP_aes_128_cbc.3,EVP_aes_192_cfb1.3 1059EVP_aes_128_cbc.3,EVP_aes_192_cfb1.3
1124EVP_aes_128_cbc.3,EVP_aes_192_cfb128.3 1060EVP_aes_128_cbc.3,EVP_aes_192_cfb128.3
1125EVP_aes_128_cbc.3,EVP_aes_192_cfb8.3 1061EVP_aes_128_cbc.3,EVP_aes_192_cfb8.3
1126EVP_aes_128_cbc.3,EVP_aes_192_ctr.3 1062EVP_aes_128_cbc.3,EVP_aes_192_ctr.3
1127EVP_aes_128_cbc.3,EVP_aes_192_ecb.3 1063EVP_aes_128_cbc.3,EVP_aes_192_ecb.3
1128EVP_aes_128_cbc.3,EVP_aes_192_gcm.3
1129EVP_aes_128_cbc.3,EVP_aes_192_ofb.3 1064EVP_aes_128_cbc.3,EVP_aes_192_ofb.3
1130EVP_aes_128_cbc.3,EVP_aes_192_wrap.3 1065EVP_aes_128_cbc.3,EVP_aes_192_wrap.3
1131EVP_aes_128_cbc.3,EVP_aes_256_cbc.3 1066EVP_aes_128_cbc.3,EVP_aes_256_cbc.3
1132EVP_aes_128_cbc.3,EVP_aes_256_cbc_hmac_sha1.3 1067EVP_aes_128_cbc.3,EVP_aes_256_cbc_hmac_sha1.3
1133EVP_aes_128_cbc.3,EVP_aes_256_ccm.3
1134EVP_aes_128_cbc.3,EVP_aes_256_cfb.3 1068EVP_aes_128_cbc.3,EVP_aes_256_cfb.3
1135EVP_aes_128_cbc.3,EVP_aes_256_cfb1.3 1069EVP_aes_128_cbc.3,EVP_aes_256_cfb1.3
1136EVP_aes_128_cbc.3,EVP_aes_256_cfb128.3 1070EVP_aes_128_cbc.3,EVP_aes_256_cfb128.3
1137EVP_aes_128_cbc.3,EVP_aes_256_cfb8.3 1071EVP_aes_128_cbc.3,EVP_aes_256_cfb8.3
1138EVP_aes_128_cbc.3,EVP_aes_256_ctr.3 1072EVP_aes_128_cbc.3,EVP_aes_256_ctr.3
1139EVP_aes_128_cbc.3,EVP_aes_256_ecb.3 1073EVP_aes_128_cbc.3,EVP_aes_256_ecb.3
1140EVP_aes_128_cbc.3,EVP_aes_256_gcm.3
1141EVP_aes_128_cbc.3,EVP_aes_256_ofb.3 1074EVP_aes_128_cbc.3,EVP_aes_256_ofb.3
1142EVP_aes_128_cbc.3,EVP_aes_256_wrap.3 1075EVP_aes_128_cbc.3,EVP_aes_256_wrap.3
1143EVP_aes_128_cbc.3,EVP_aes_256_xts.3 1076EVP_aes_128_cbc.3,EVP_aes_256_xts.3
1077EVP_aes_128_ccm.3,EVP_aes_192_ccm.3
1078EVP_aes_128_ccm.3,EVP_aes_256_ccm.3
1079EVP_aes_128_gcm.3,EVP_aes_192_gcm.3
1080EVP_aes_128_gcm.3,EVP_aes_256_gcm.3
1144EVP_camellia_128_cbc.3,EVP_camellia_128_cfb.3 1081EVP_camellia_128_cbc.3,EVP_camellia_128_cfb.3
1145EVP_camellia_128_cbc.3,EVP_camellia_128_cfb1.3 1082EVP_camellia_128_cbc.3,EVP_camellia_128_cfb1.3
1146EVP_camellia_128_cbc.3,EVP_camellia_128_cfb128.3 1083EVP_camellia_128_cbc.3,EVP_camellia_128_cfb128.3
@@ -1183,6 +1120,12 @@ EVP_des_cbc.3,EVP_des_ede_ecb.3
1183EVP_des_cbc.3,EVP_des_ede_ofb.3 1120EVP_des_cbc.3,EVP_des_ede_ofb.3
1184EVP_des_cbc.3,EVP_des_ofb.3 1121EVP_des_cbc.3,EVP_des_ofb.3
1185EVP_des_cbc.3,EVP_desx_cbc.3 1122EVP_des_cbc.3,EVP_desx_cbc.3
1123EVP_rc2_cbc.3,EVP_rc2_40_cbc.3
1124EVP_rc2_cbc.3,EVP_rc2_64_cbc.3
1125EVP_rc2_cbc.3,EVP_rc2_cfb.3
1126EVP_rc2_cbc.3,EVP_rc2_cfb64.3
1127EVP_rc2_cbc.3,EVP_rc2_ecb.3
1128EVP_rc2_cbc.3,EVP_rc2_ofb.3
1186EVP_rc4.3,EVP_rc4_40.3 1129EVP_rc4.3,EVP_rc4_40.3
1187EVP_rc4.3,EVP_rc4_hmac_md5.3 1130EVP_rc4.3,EVP_rc4_hmac_md5.3
1188EVP_sha1.3,EVP_md4.3 1131EVP_sha1.3,EVP_md4.3
@@ -1211,7 +1154,6 @@ HMAC.3,HMAC_CTX_new.3
1211HMAC.3,HMAC_CTX_reset.3 1154HMAC.3,HMAC_CTX_reset.3
1212HMAC.3,HMAC_CTX_set_flags.3 1155HMAC.3,HMAC_CTX_set_flags.3
1213HMAC.3,HMAC_Final.3 1156HMAC.3,HMAC_Final.3
1214HMAC.3,HMAC_Init.3
1215HMAC.3,HMAC_Init_ex.3 1157HMAC.3,HMAC_Init_ex.3
1216HMAC.3,HMAC_Update.3 1158HMAC.3,HMAC_Update.3
1217HMAC.3,HMAC_size.3 1159HMAC.3,HMAC_size.3
@@ -1522,6 +1464,12 @@ RAND_load_file.3,RAND_file_name.3
1522RAND_load_file.3,RAND_write_file.3 1464RAND_load_file.3,RAND_write_file.3
1523RAND_set_rand_method.3,RAND_SSLeay.3 1465RAND_set_rand_method.3,RAND_SSLeay.3
1524RAND_set_rand_method.3,RAND_get_rand_method.3 1466RAND_set_rand_method.3,RAND_get_rand_method.3
1467RC2_encrypt.3,RC2_cbc_encrypt.3
1468RC2_encrypt.3,RC2_cfb64_encrypt.3
1469RC2_encrypt.3,RC2_decrypt.3
1470RC2_encrypt.3,RC2_ecb_encrypt.3
1471RC2_encrypt.3,RC2_ofb64_encrypt.3
1472RC2_encrypt.3,RC2_set_key.3
1525RC4.3,RC4_set_key.3 1473RC4.3,RC4_set_key.3
1526RIPEMD160.3,RIPEMD160_Final.3 1474RIPEMD160.3,RIPEMD160_Final.3
1527RIPEMD160.3,RIPEMD160_Init.3 1475RIPEMD160.3,RIPEMD160_Init.3
@@ -1651,6 +1599,7 @@ SSL_CIPHER_get_name.3,SSL_CIPHER_get_auth_nid.3
1651SSL_CIPHER_get_name.3,SSL_CIPHER_get_bits.3 1599SSL_CIPHER_get_name.3,SSL_CIPHER_get_bits.3
1652SSL_CIPHER_get_name.3,SSL_CIPHER_get_cipher_nid.3 1600SSL_CIPHER_get_name.3,SSL_CIPHER_get_cipher_nid.3
1653SSL_CIPHER_get_name.3,SSL_CIPHER_get_digest_nid.3 1601SSL_CIPHER_get_name.3,SSL_CIPHER_get_digest_nid.3
1602SSL_CIPHER_get_name.3,SSL_CIPHER_get_handshake_digest.3
1654SSL_CIPHER_get_name.3,SSL_CIPHER_get_id.3 1603SSL_CIPHER_get_name.3,SSL_CIPHER_get_id.3
1655SSL_CIPHER_get_name.3,SSL_CIPHER_get_kx_nid.3 1604SSL_CIPHER_get_name.3,SSL_CIPHER_get_kx_nid.3
1656SSL_CIPHER_get_name.3,SSL_CIPHER_get_version.3 1605SSL_CIPHER_get_name.3,SSL_CIPHER_get_version.3
@@ -1739,6 +1688,7 @@ SSL_CTX_set_alpn_select_cb.3,SSL_get0_alpn_selected.3
1739SSL_CTX_set_alpn_select_cb.3,SSL_select_next_proto.3 1688SSL_CTX_set_alpn_select_cb.3,SSL_select_next_proto.3
1740SSL_CTX_set_alpn_select_cb.3,SSL_set_alpn_protos.3 1689SSL_CTX_set_alpn_select_cb.3,SSL_set_alpn_protos.3
1741SSL_CTX_set_cert_store.3,SSL_CTX_get_cert_store.3 1690SSL_CTX_set_cert_store.3,SSL_CTX_get_cert_store.3
1691SSL_CTX_set_cert_store.3,SSL_CTX_set1_cert_store.3
1742SSL_CTX_set_cipher_list.3,SSL_set_cipher_list.3 1692SSL_CTX_set_cipher_list.3,SSL_set_cipher_list.3
1743SSL_CTX_set_client_CA_list.3,SSL_CTX_add_client_CA.3 1693SSL_CTX_set_client_CA_list.3,SSL_CTX_add_client_CA.3
1744SSL_CTX_set_client_CA_list.3,SSL_add_client_CA.3 1694SSL_CTX_set_client_CA_list.3,SSL_add_client_CA.3
@@ -1947,7 +1897,6 @@ TS_REQ_new.3,TS_STATUS_INFO_free.3
1947TS_REQ_new.3,TS_STATUS_INFO_new.3 1897TS_REQ_new.3,TS_STATUS_INFO_new.3
1948TS_REQ_new.3,TS_TST_INFO_free.3 1898TS_REQ_new.3,TS_TST_INFO_free.3
1949TS_REQ_new.3,TS_TST_INFO_new.3 1899TS_REQ_new.3,TS_TST_INFO_new.3
1950UI_UTIL_read_pw.3,UI_UTIL_read_pw_string.3
1951UI_create_method.3,UI_destroy_method.3 1900UI_create_method.3,UI_destroy_method.3
1952UI_create_method.3,UI_method_get_closer.3 1901UI_create_method.3,UI_method_get_closer.3
1953UI_create_method.3,UI_method_get_flusher.3 1902UI_create_method.3,UI_method_get_flusher.3
@@ -1998,6 +1947,7 @@ X25519.3,ED25519_sign.3
1998X25519.3,ED25519_verify.3 1947X25519.3,ED25519_verify.3
1999X25519.3,X25519_keypair.3 1948X25519.3,X25519_keypair.3
2000X509V3_EXT_get_nid.3,X509V3_EXT_get.3 1949X509V3_EXT_get_nid.3,X509V3_EXT_get.3
1950X509V3_EXT_print.3,X509V3_EXT_print_fp.3
2001X509V3_get_d2i.3,X509V3_EXT_d2i.3 1951X509V3_get_d2i.3,X509V3_EXT_d2i.3
2002X509V3_get_d2i.3,X509V3_EXT_i2d.3 1952X509V3_get_d2i.3,X509V3_EXT_i2d.3
2003X509V3_get_d2i.3,X509V3_add1_i2d.3 1953X509V3_get_d2i.3,X509V3_add1_i2d.3
@@ -2011,6 +1961,7 @@ X509V3_get_d2i.3,X509_add1_ext_i2d.3
2011X509V3_get_d2i.3,X509_get0_extensions.3 1961X509V3_get_d2i.3,X509_get0_extensions.3
2012X509V3_get_d2i.3,X509_get0_uids.3 1962X509V3_get_d2i.3,X509_get0_uids.3
2013X509V3_get_d2i.3,X509_get_ext_d2i.3 1963X509V3_get_d2i.3,X509_get_ext_d2i.3
1964X509V3_parse_list.3,X509V3_conf_free.3
2014X509_ALGOR_dup.3,X509_ALGOR_cmp.3 1965X509_ALGOR_dup.3,X509_ALGOR_cmp.3
2015X509_ALGOR_dup.3,X509_ALGOR_free.3 1966X509_ALGOR_dup.3,X509_ALGOR_free.3
2016X509_ALGOR_dup.3,X509_ALGOR_get0.3 1967X509_ALGOR_dup.3,X509_ALGOR_get0.3
@@ -2051,6 +2002,7 @@ X509_EXTENSION_set_object.3,X509_EXTENSION_get_object.3
2051X509_EXTENSION_set_object.3,X509_EXTENSION_new.3 2002X509_EXTENSION_set_object.3,X509_EXTENSION_new.3
2052X509_EXTENSION_set_object.3,X509_EXTENSION_set_critical.3 2003X509_EXTENSION_set_object.3,X509_EXTENSION_set_critical.3
2053X509_EXTENSION_set_object.3,X509_EXTENSION_set_data.3 2004X509_EXTENSION_set_object.3,X509_EXTENSION_set_data.3
2005X509_EXTENSION_set_object.3,X509_supported_extension.3
2054X509_INFO_new.3,X509_INFO_free.3 2006X509_INFO_new.3,X509_INFO_free.3
2055X509_LOOKUP_hash_dir.3,X509_LOOKUP_file.3 2007X509_LOOKUP_hash_dir.3,X509_LOOKUP_file.3
2056X509_LOOKUP_hash_dir.3,X509_LOOKUP_mem.3 2008X509_LOOKUP_hash_dir.3,X509_LOOKUP_mem.3
@@ -2088,17 +2040,14 @@ X509_NAME_hash.3,X509_subject_name_hash.3
2088X509_NAME_hash.3,X509_subject_name_hash_old.3 2040X509_NAME_hash.3,X509_subject_name_hash_old.3
2089X509_NAME_new.3,X509_NAME_free.3 2041X509_NAME_new.3,X509_NAME_free.3
2090X509_NAME_print_ex.3,X509_NAME_oneline.3 2042X509_NAME_print_ex.3,X509_NAME_oneline.3
2091X509_NAME_print_ex.3,X509_NAME_print.3
2092X509_NAME_print_ex.3,X509_NAME_print_ex_fp.3 2043X509_NAME_print_ex.3,X509_NAME_print_ex_fp.3
2093X509_OBJECT_get0_X509.3,X509_OBJECT_free.3 2044X509_OBJECT_get0_X509.3,X509_OBJECT_free.3
2094X509_OBJECT_get0_X509.3,X509_OBJECT_free_contents.3
2095X509_OBJECT_get0_X509.3,X509_OBJECT_get0_X509_CRL.3 2045X509_OBJECT_get0_X509.3,X509_OBJECT_get0_X509_CRL.3
2096X509_OBJECT_get0_X509.3,X509_OBJECT_get_type.3 2046X509_OBJECT_get0_X509.3,X509_OBJECT_get_type.3
2097X509_OBJECT_get0_X509.3,X509_OBJECT_idx_by_subject.3 2047X509_OBJECT_get0_X509.3,X509_OBJECT_idx_by_subject.3
2098X509_OBJECT_get0_X509.3,X509_OBJECT_new.3 2048X509_OBJECT_get0_X509.3,X509_OBJECT_new.3
2099X509_OBJECT_get0_X509.3,X509_OBJECT_retrieve_by_subject.3 2049X509_OBJECT_get0_X509.3,X509_OBJECT_retrieve_by_subject.3
2100X509_OBJECT_get0_X509.3,X509_OBJECT_retrieve_match.3 2050X509_OBJECT_get0_X509.3,X509_OBJECT_retrieve_match.3
2101X509_OBJECT_get0_X509.3,X509_OBJECT_up_ref_count.3
2102X509_PKEY_new.3,X509_PKEY_free.3 2051X509_PKEY_new.3,X509_PKEY_free.3
2103X509_PUBKEY_new.3,X509_PUBKEY_free.3 2052X509_PUBKEY_new.3,X509_PUBKEY_free.3
2104X509_PUBKEY_new.3,X509_PUBKEY_get.3 2053X509_PUBKEY_new.3,X509_PUBKEY_get.3
@@ -2134,9 +2083,7 @@ X509_REQ_add1_attr.3,X509_REQ_get_attr_by_OBJ.3
2134X509_REQ_add1_attr.3,X509_REQ_get_attr_count.3 2083X509_REQ_add1_attr.3,X509_REQ_get_attr_count.3
2135X509_REQ_add_extensions.3,X509_REQ_add_extensions_nid.3 2084X509_REQ_add_extensions.3,X509_REQ_add_extensions_nid.3
2136X509_REQ_add_extensions.3,X509_REQ_extension_nid.3 2085X509_REQ_add_extensions.3,X509_REQ_extension_nid.3
2137X509_REQ_add_extensions.3,X509_REQ_get_extension_nids.3
2138X509_REQ_add_extensions.3,X509_REQ_get_extensions.3 2086X509_REQ_add_extensions.3,X509_REQ_get_extensions.3
2139X509_REQ_add_extensions.3,X509_REQ_set_extension_nids.3
2140X509_REQ_new.3,X509_REQ_INFO_free.3 2087X509_REQ_new.3,X509_REQ_INFO_free.3
2141X509_REQ_new.3,X509_REQ_INFO_new.3 2088X509_REQ_new.3,X509_REQ_INFO_new.3
2142X509_REQ_new.3,X509_REQ_dup.3 2089X509_REQ_new.3,X509_REQ_dup.3
@@ -2226,14 +2173,6 @@ X509_STORE_set1_param.3,X509_STORE_set_purpose.3
2226X509_STORE_set1_param.3,X509_STORE_set_trust.3 2173X509_STORE_set1_param.3,X509_STORE_set_trust.3
2227X509_STORE_set_verify_cb_func.3,X509_STORE_get_verify_cb.3 2174X509_STORE_set_verify_cb_func.3,X509_STORE_get_verify_cb.3
2228X509_STORE_set_verify_cb_func.3,X509_STORE_set_verify_cb.3 2175X509_STORE_set_verify_cb_func.3,X509_STORE_set_verify_cb.3
2229X509_TRUST_set.3,X509_TRUST_add.3
2230X509_TRUST_set.3,X509_TRUST_cleanup.3
2231X509_TRUST_set.3,X509_TRUST_get0.3
2232X509_TRUST_set.3,X509_TRUST_get0_name.3
2233X509_TRUST_set.3,X509_TRUST_get_by_id.3
2234X509_TRUST_set.3,X509_TRUST_get_count.3
2235X509_TRUST_set.3,X509_TRUST_get_flags.3
2236X509_TRUST_set.3,X509_TRUST_get_trust.3
2237X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_add0_table.3 2176X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_add0_table.3
2238X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_free.3 2177X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_free.3
2239X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_get0.3 2178X509_VERIFY_PARAM_new.3,X509_VERIFY_PARAM_get0.3
@@ -2269,7 +2208,6 @@ X509_check_host.3,X509_check_email.3
2269X509_check_host.3,X509_check_ip.3 2208X509_check_host.3,X509_check_ip.3
2270X509_check_host.3,X509_check_ip_asc.3 2209X509_check_host.3,X509_check_ip_asc.3
2271X509_check_private_key.3,X509_REQ_check_private_key.3 2210X509_check_private_key.3,X509_REQ_check_private_key.3
2272X509_check_trust.3,X509_TRUST_set_default.3
2273X509_cmp.3,X509_CRL_cmp.3 2211X509_cmp.3,X509_CRL_cmp.3
2274X509_cmp.3,X509_CRL_match.3 2212X509_cmp.3,X509_CRL_match.3
2275X509_cmp.3,X509_NAME_cmp.3 2213X509_cmp.3,X509_NAME_cmp.3
@@ -2309,6 +2247,7 @@ X509_get0_signature.3,X509_CRL_get_signature_nid.3
2309X509_get0_signature.3,X509_REQ_get0_signature.3 2247X509_get0_signature.3,X509_REQ_get0_signature.3
2310X509_get0_signature.3,X509_REQ_get_signature_nid.3 2248X509_get0_signature.3,X509_REQ_get_signature_nid.3
2311X509_get0_signature.3,X509_get0_tbs_sigalg.3 2249X509_get0_signature.3,X509_get0_tbs_sigalg.3
2250X509_get0_signature.3,X509_get_signature_info.3
2312X509_get0_signature.3,X509_get_signature_nid.3 2251X509_get0_signature.3,X509_get_signature_nid.3
2313X509_get0_signature.3,X509_get_signature_type.3 2252X509_get0_signature.3,X509_get_signature_type.3
2314X509_get1_email.3,X509_email_free.3 2253X509_get1_email.3,X509_email_free.3
@@ -2361,14 +2300,6 @@ X509_sign.3,X509_REQ_verify.3
2361X509_sign.3,X509_sign_ctx.3 2300X509_sign.3,X509_sign_ctx.3
2362X509_sign.3,X509_verify.3 2301X509_sign.3,X509_verify.3
2363X509_signature_dump.3,X509_signature_print.3 2302X509_signature_dump.3,X509_signature_print.3
2364X509at_add1_attr.3,X509at_add1_attr_by_NID.3
2365X509at_add1_attr.3,X509at_add1_attr_by_OBJ.3
2366X509at_add1_attr.3,X509at_add1_attr_by_txt.3
2367X509at_add1_attr.3,X509at_delete_attr.3
2368X509at_get_attr.3,X509at_get0_data_by_OBJ.3
2369X509at_get_attr.3,X509at_get_attr_by_NID.3
2370X509at_get_attr.3,X509at_get_attr_by_OBJ.3
2371X509at_get_attr.3,X509at_get_attr_count.3
2372X509v3_addr_add_inherit.3,X509v3_addr_add_prefix.3 2303X509v3_addr_add_inherit.3,X509v3_addr_add_prefix.3
2373X509v3_addr_add_inherit.3,X509v3_addr_add_range.3 2304X509v3_addr_add_inherit.3,X509v3_addr_add_range.3
2374X509v3_addr_add_inherit.3,X509v3_addr_canonize.3 2305X509v3_addr_add_inherit.3,X509v3_addr_canonize.3
@@ -2409,6 +2340,8 @@ X509v3_get_ext_by_NID.3,X509v3_get_ext.3
2409X509v3_get_ext_by_NID.3,X509v3_get_ext_by_OBJ.3 2340X509v3_get_ext_by_NID.3,X509v3_get_ext_by_OBJ.3
2410X509v3_get_ext_by_NID.3,X509v3_get_ext_by_critical.3 2341X509v3_get_ext_by_NID.3,X509v3_get_ext_by_critical.3
2411X509v3_get_ext_by_NID.3,X509v3_get_ext_count.3 2342X509v3_get_ext_by_NID.3,X509v3_get_ext_count.3
2343a2i_ipadd.3,a2i_IPADDRESS.3
2344a2i_ipadd.3,a2i_IPADDRESS_NC.3
2412bn_dump.3,bn_add_words.3 2345bn_dump.3,bn_add_words.3
2413bn_dump.3,bn_div_words.3 2346bn_dump.3,bn_div_words.3
2414bn_dump.3,bn_expand.3 2347bn_dump.3,bn_expand.3
@@ -2790,6 +2723,7 @@ tls_conn_version.3,tls_conn_cipher_strength.3
2790tls_conn_version.3,tls_conn_servername.3 2723tls_conn_version.3,tls_conn_servername.3
2791tls_conn_version.3,tls_conn_session_resumed.3 2724tls_conn_version.3,tls_conn_session_resumed.3
2792tls_conn_version.3,tls_peer_cert_chain_pem.3 2725tls_conn_version.3,tls_peer_cert_chain_pem.3
2726tls_conn_version.3,tls_peer_cert_common_name.3
2793tls_conn_version.3,tls_peer_cert_contains_name.3 2727tls_conn_version.3,tls_peer_cert_contains_name.3
2794tls_conn_version.3,tls_peer_cert_hash.3 2728tls_conn_version.3,tls_peer_cert_hash.3
2795tls_conn_version.3,tls_peer_cert_issuer.3 2729tls_conn_version.3,tls_peer_cert_issuer.3
@@ -2841,6 +2775,7 @@ tls_read.3,tls_close.3
2841tls_read.3,tls_error.3 2775tls_read.3,tls_error.3
2842tls_read.3,tls_handshake.3 2776tls_read.3,tls_handshake.3
2843tls_read.3,tls_write.3 2777tls_read.3,tls_write.3
2778v2i_ASN1_BIT_STRING.3,i2v_ASN1_BIT_STRING.3
2844x509_verify.3,x509_verify_ctx_chain.3 2779x509_verify.3,x509_verify_ctx_chain.3
2845x509_verify.3,x509_verify_ctx_error_depth.3 2780x509_verify.3,x509_verify_ctx_error_depth.3
2846x509_verify.3,x509_verify_ctx_error_string.3 2781x509_verify.3,x509_verify_ctx_error_string.3
diff --git a/patches/crypto_arch.h.patch b/patches/crypto_arch.h.patch
new file mode 100644
index 0000000..6c889e5
--- /dev/null
+++ b/patches/crypto_arch.h.patch
@@ -0,0 +1,34 @@
1--- crypto/arch/amd64/crypto_arch.h.orig Fri Feb 14 06:00:43 2025
2+++ crypto/arch/amd64/crypto_arch.h Fri Feb 14 06:01:13 2025
3@@ -40,6 +40,7 @@ extern uint64_t crypto_cpu_caps_amd64;
4 #define HAVE_RC4_INTERNAL
5 #define HAVE_RC4_SET_KEY_INTERNAL
6
7+#if 0
8 #define HAVE_SHA1_BLOCK_DATA_ORDER
9 #define HAVE_SHA1_BLOCK_GENERIC
10
11@@ -48,6 +49,7 @@ extern uint64_t crypto_cpu_caps_amd64;
12
13 #define HAVE_SHA512_BLOCK_DATA_ORDER
14 #define HAVE_SHA512_BLOCK_GENERIC
15+#endif
16
17 #endif
18
19--- crypto/arch/aarch64/crypto_arch.h.orig Thu Mar 13 05:42:37 2025
20+++ crypto/arch/aarch64/crypto_arch.h Thu Mar 13 05:47:39 2025
21@@ -33,11 +33,13 @@
22 #define CRYPTO_CPU_CAPS_AARCH64_SHA512 (1ULL << 4)
23 #define CRYPTO_CPU_CAPS_AARCH64_SHA3 (1ULL << 5)
24
25+#if 0
26 #ifndef OPENSSL_NO_ASM
27
28 #define HAVE_SHA256_BLOCK_DATA_ORDER
29 #define HAVE_SHA512_BLOCK_DATA_ORDER
30
31+#endif
32 #endif
33
34 #endif
diff --git a/patches/crypto_namespace.h.patch b/patches/crypto_namespace.h.patch
index c18f0da..400030f 100644
--- a/patches/crypto_namespace.h.patch
+++ b/patches/crypto_namespace.h.patch
@@ -1,5 +1,5 @@
1--- crypto/hidden/crypto_namespace.h.orig 2024-04-09 10:12:22.320737957 +0200 1--- crypto/hidden/crypto_namespace.h.orig Fri Aug 2 23:52:55 2024
2+++ crypto/hidden/crypto_namespace.h 2024-04-11 09:09:31.163350515 +0200 2+++ crypto/hidden/crypto_namespace.h Fri Aug 2 23:53:17 2024
3@@ -24,6 +24,12 @@ 3@@ -24,6 +24,12 @@
4 * external calls use the latter name. 4 * external calls use the latter name.
5 */ 5 */
@@ -13,7 +13,7 @@
13 #ifdef LIBRESSL_NAMESPACE 13 #ifdef LIBRESSL_NAMESPACE
14 #ifdef LIBRESSL_CRYPTO_NAMESPACE 14 #ifdef LIBRESSL_CRYPTO_NAMESPACE
15 # define LCRYPTO_UNUSED(x) __attribute__((deprecated)) \ 15 # define LCRYPTO_UNUSED(x) __attribute__((deprecated)) \
16@@ -43,5 +49,6 @@ 16@@ -47,5 +53,6 @@
17 # define LCRYPTO_ALIAS1(pre,x) 17 # define LCRYPTO_ALIAS1(pre,x)
18 # define LCRYPTO_ALIAS(x) asm("") 18 # define LCRYPTO_ALIAS(x) asm("")
19 #endif 19 #endif
diff --git a/patches/netcat.c.patch b/patches/netcat.c.patch
index 9c3a450..319aca6 100644
--- a/patches/netcat.c.patch
+++ b/patches/netcat.c.patch
@@ -1,5 +1,5 @@
1--- apps/nc/netcat.c.orig Tue Aug 15 15:17:28 2023 1--- apps/nc/netcat.c.orig Sat Aug 17 03:21:05 2024
2+++ apps/nc/netcat.c Tue Aug 15 15:17:54 2023 2+++ apps/nc/netcat.c Sat Aug 17 03:28:50 2024
3@@ -93,9 +93,13 @@ int zflag; /* Port Scan Flag */ 3@@ -93,9 +93,13 @@ int zflag; /* Port Scan Flag */
4 int Dflag; /* sodebug */ 4 int Dflag; /* sodebug */
5 int Iflag; /* TCP receive buffer size */ 5 int Iflag; /* TCP receive buffer size */
@@ -53,7 +53,7 @@
53 53
54 /* Cruft to make sure options are clean, and used properly. */ 54 /* Cruft to make sure options are clean, and used properly. */
55 if (argc == 1 && family == AF_UNIX) { 55 if (argc == 1 && family == AF_UNIX) {
56@@ -927,7 +937,10 @@ remote_connect(const char *host, const char *port, str 56@@ -923,7 +933,10 @@ remote_connect(const char *host, const char *port, str
57 char *ipaddr) 57 char *ipaddr)
58 { 58 {
59 struct addrinfo *res, *res0; 59 struct addrinfo *res, *res0;
@@ -65,7 +65,7 @@
65 65
66 if ((error = getaddrinfo(host, port, &hints, &res0))) 66 if ((error = getaddrinfo(host, port, &hints, &res0)))
67 errx(1, "getaddrinfo for host \"%s\" port %s: %s", host, 67 errx(1, "getaddrinfo for host \"%s\" port %s: %s", host,
68@@ -942,8 +955,10 @@ remote_connect(const char *host, const char *port, str 68@@ -938,8 +951,10 @@ remote_connect(const char *host, const char *port, str
69 if (sflag || pflag) { 69 if (sflag || pflag) {
70 struct addrinfo ahints, *ares; 70 struct addrinfo ahints, *ares;
71 71
@@ -76,7 +76,7 @@
76 memset(&ahints, 0, sizeof(struct addrinfo)); 76 memset(&ahints, 0, sizeof(struct addrinfo));
77 ahints.ai_family = res->ai_family; 77 ahints.ai_family = res->ai_family;
78 ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM; 78 ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM;
79@@ -1035,7 +1050,10 @@ int 79@@ -1031,7 +1046,10 @@ int
80 local_listen(const char *host, const char *port, struct addrinfo hints) 80 local_listen(const char *host, const char *port, struct addrinfo hints)
81 { 81 {
82 struct addrinfo *res, *res0; 82 struct addrinfo *res, *res0;
@@ -88,7 +88,7 @@
88 int error; 88 int error;
89 89
90 /* Allow nodename to be null. */ 90 /* Allow nodename to be null. */
91@@ -1056,9 +1074,11 @@ local_listen(const char *host, const char *port, struc 91@@ -1052,9 +1070,11 @@ local_listen(const char *host, const char *port, struc
92 res->ai_protocol)) == -1) 92 res->ai_protocol)) == -1)
93 continue; 93 continue;
94 94
@@ -100,7 +100,7 @@
100 100
101 set_common_sockopts(s, res->ai_family); 101 set_common_sockopts(s, res->ai_family);
102 102
103@@ -1563,11 +1583,13 @@ set_common_sockopts(int s, int af) 103@@ -1559,11 +1579,13 @@ set_common_sockopts(int s, int af)
104 { 104 {
105 int x = 1; 105 int x = 1;
106 106
@@ -114,7 +114,7 @@
114 if (Dflag) { 114 if (Dflag) {
115 if (setsockopt(s, SOL_SOCKET, SO_DEBUG, 115 if (setsockopt(s, SOL_SOCKET, SO_DEBUG,
116 &x, sizeof(x)) == -1) 116 &x, sizeof(x)) == -1)
117@@ -1578,9 +1600,16 @@ set_common_sockopts(int s, int af) 117@@ -1574,9 +1596,16 @@ set_common_sockopts(int s, int af)
118 IP_TOS, &Tflag, sizeof(Tflag)) == -1) 118 IP_TOS, &Tflag, sizeof(Tflag)) == -1)
119 err(1, "set IP ToS"); 119 err(1, "set IP ToS");
120 120
@@ -131,7 +131,7 @@
131 } 131 }
132 if (Iflag) { 132 if (Iflag) {
133 if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, 133 if (setsockopt(s, SOL_SOCKET, SO_RCVBUF,
134@@ -1604,13 +1633,17 @@ set_common_sockopts(int s, int af) 134@@ -1600,13 +1629,17 @@ set_common_sockopts(int s, int af)
135 } 135 }
136 136
137 if (minttl != -1) { 137 if (minttl != -1) {
@@ -150,7 +150,7 @@
150 } 150 }
151 } 151 }
152 152
153@@ -1835,15 +1868,19 @@ help(void) 153@@ -1831,15 +1864,19 @@ help(void)
154 \t-P proxyuser\tUsername for proxy authentication\n\ 154 \t-P proxyuser\tUsername for proxy authentication\n\
155 \t-p port\t Specify local port for remote connects\n\ 155 \t-p port\t Specify local port for remote connects\n\
156 \t-R CAfile CA bundle\n\ 156 \t-R CAfile CA bundle\n\
diff --git a/patches/openssl.c.patch b/patches/openssl.c.patch
index 15afb78..5ba5ac6 100644
--- a/patches/openssl.c.patch
+++ b/patches/openssl.c.patch
@@ -1,6 +1,6 @@
1--- apps/openssl/openssl.c.orig Mon Mar 4 13:39:56 2024 1--- apps/openssl/openssl.c.orig Thu Jan 2 08:27:54 2025
2+++ apps/openssl/openssl.c Mon Mar 4 13:40:15 2024 2+++ apps/openssl/openssl.c Thu Jan 2 08:28:04 2025
3@@ -348,7 +348,9 @@ 3@@ -344,7 +344,9 @@ BIO *bio_err = NULL;
4 static void 4 static void
5 openssl_startup(void) 5 openssl_startup(void)
6 { 6 {
diff --git a/patches/opensslfeatures.h.patch b/patches/opensslfeatures.h.patch
index 618de73..77df5dc 100644
--- a/patches/opensslfeatures.h.patch
+++ b/patches/opensslfeatures.h.patch
@@ -14,3 +14,25 @@
14 #define OPENSSL_THREADS 14 #define OPENSSL_THREADS
15 15
16 #define OPENSSL_NO_BUF_FREELISTS 16 #define OPENSSL_NO_BUF_FREELISTS
17--- crypto/crypto_internal.h.orig Sat Dec 14 14:15:39 2024
18+++ crypto/crypto_internal.h Sat Dec 14 14:15:52 2024
19@@ -15,6 +15,8 @@
20 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 */
22
23+#include <openssl/opensslfeatures.h>
24+
25 #include <endian.h>
26 #include <stddef.h>
27 #include <stdint.h>
28--- tests/parse_test_file.h.orig Thu Dec 26 01:13:00 2024
29+++ tests/parse_test_file.h Thu Dec 26 01:13:27 2024
30@@ -22,6 +22,8 @@
31 #include <stdint.h>
32 #include <stdio.h>
33
34+#include <openssl/opensslfeatures.h>
35+
36 #include "bytestring.h"
37
38 #if defined(__cplusplus)
diff --git a/patches/patch-aarch64-crypto-cpu-caps.c.patch b/patches/patch-aarch64-crypto-cpu-caps.c.patch
new file mode 100644
index 0000000..dcfbdc0
--- /dev/null
+++ b/patches/patch-aarch64-crypto-cpu-caps.c.patch
@@ -0,0 +1,39 @@
1Disable feature detection until we find a more portable way.
2
3--- crypto/arch/aarch64/crypto_cpu_caps.c.orig Sat Dec 14 13:45:16 2024
4+++ crypto/arch/aarch64/crypto_cpu_caps.c Sat Dec 14 13:54:06 2024
5@@ -16,9 +16,12 @@
6 */
7
8 #include <sys/types.h>
9+
10+#if defined(__OpenBSD__)
11 #include <sys/sysctl.h>
12
13 #include <machine/cpu.h>
14+#endif
15
16 #include <stddef.h>
17 #include <stdio.h>
18@@ -67,6 +70,7 @@ parse_isar0(uint64_t isar0)
19 return caps;
20 }
21
22+#if defined(__OpenBSD__)
23 static int
24 read_isar0(uint64_t *isar0)
25 {
26@@ -84,6 +88,13 @@ read_isar0(uint64_t *isar0)
27
28 return 1;
29 }
30+#else
31+static int
32+read_isar0(uint64_t *isar0)
33+{
34+ return 0;
35+}
36+#endif
37
38 void
39 crypto_cpu_caps_init(void)
diff --git a/patches/patch-amd64-crypto-cpu-caps.c.patch b/patches/patch-amd64-crypto-cpu-caps.c.patch
new file mode 100644
index 0000000..5fd7524
--- /dev/null
+++ b/patches/patch-amd64-crypto-cpu-caps.c.patch
@@ -0,0 +1,20 @@
1--- crypto/arch/amd64/crypto_cpu_caps.c.orig Sat Dec 14 13:45:16 2024
2+++ crypto/arch/amd64/crypto_cpu_caps.c Sat Dec 14 13:54:06 2024
3@@ -37,7 +37,7 @@ cpuid(uint32_t eax, uint32_t *out_eax, uint32_t *out_e
4 {
5 uint32_t ebx = 0, ecx = 0, edx = 0;
6
7-#ifndef OPENSSL_NO_ASM
8+#if defined(__GNUC__) && !defined(OPENSSL_NO_ASM)
9 __asm__ ("cpuid": "+a"(eax), "+b"(ebx), "+c"(ecx), "+d"(edx));
10 #else
11 eax = 0;
12@@ -58,7 +58,7 @@ xgetbv(uint32_t ecx, uint32_t *out_eax, uint32_t *out_
13 {
14 uint32_t eax = 0, edx = 0;
15
16-#ifndef OPENSSL_NO_ASM
17+#if defined(__GNUC__) && !defined(OPENSSL_NO_ASM)
18 __asm__ ("xgetbv": "+a"(eax), "+c"(ecx), "+d"(edx));
19 #endif
20
diff --git a/patches/patch-i386-crypto-cpu-caps.c.patch b/patches/patch-i386-crypto-cpu-caps.c.patch
new file mode 100644
index 0000000..c85e33c
--- /dev/null
+++ b/patches/patch-i386-crypto-cpu-caps.c.patch
@@ -0,0 +1,20 @@
1--- crypto/arch/i386/crypto_cpu_caps.c.orig Fri Oct 18 17:35:20 2024
2+++ crypto/arch/i386/crypto_cpu_caps.c Fri Oct 18 17:39:13 2024
3@@ -33,7 +33,7 @@ cpuid(uint32_t eax, uint32_t *out_eax, uint32_t *out_e
4 {
5 uint32_t ebx = 0, ecx = 0, edx = 0;
6
7-#ifndef OPENSSL_NO_ASM
8+#if defined(__GNUC__) && !defined(OPENSSL_NO_ASM)
9 __asm__ ("cpuid": "+a"(eax), "+b"(ebx), "+c"(ecx), "+d"(edx));
10 #else
11 eax = 0;
12@@ -54,7 +54,7 @@ xgetbv(uint32_t ecx, uint32_t *out_eax, uint32_t *out_
13 {
14 uint32_t eax = 0, edx = 0;
15
16-#ifndef OPENSSL_NO_ASM
17+#if defined(__GNUC__) && !defined(OPENSSL_NO_ASM)
18 __asm__ ("xgetbv": "+a"(eax), "+c"(ecx), "+d"(edx));
19 #endif
20
diff --git a/patches/speed.c.patch b/patches/speed.c.patch
index c29ef4d..e1f1698 100644
--- a/patches/speed.c.patch
+++ b/patches/speed.c.patch
@@ -1,6 +1,6 @@
1--- apps/openssl/speed.c.orig Sat Jul 13 11:02:51 2024 1--- apps/openssl/speed.c.orig Thu Jan 2 08:04:28 2025
2+++ apps/openssl/speed.c Sat Jul 13 10:27:25 2024 2+++ apps/openssl/speed.c Thu Jan 2 08:04:38 2025
3@@ -161,7 +161,16 @@ 3@@ -158,7 +158,16 @@ static void
4 pkey_print_message(const char *str, const char *str2, 4 pkey_print_message(const char *str, const char *str2,
5 long num, int bits, int sec); 5 long num, int bits, int sec);
6 static void print_result(int alg, int run_no, int count, double time_used); 6 static void print_result(int alg, int run_no, int count, double time_used);
@@ -17,7 +17,7 @@
17 17
18 #define ALGOR_NUM 32 18 #define ALGOR_NUM 32
19 #define SIZE_NUM 5 19 #define SIZE_NUM 5
20@@ -430,8 +439,10 @@ 20@@ -1129,8 +1138,10 @@ speed_main(int argc, char **argv)
21 const EVP_CIPHER *evp_cipher = NULL; 21 const EVP_CIPHER *evp_cipher = NULL;
22 const EVP_MD *evp_md = NULL; 22 const EVP_MD *evp_md = NULL;
23 int decrypt = 0; 23 int decrypt = 0;
@@ -28,7 +28,7 @@
28 const char *errstr = NULL; 28 const char *errstr = NULL;
29 29
30 if (pledge("stdio proc", NULL) == -1) { 30 if (pledge("stdio proc", NULL) == -1) {
31@@ -506,6 +517,7 @@ 31@@ -1205,6 +1216,7 @@ speed_main(int argc, char **argv)
32 decrypt = 1; 32 decrypt = 1;
33 j--; /* Otherwise, -decrypt gets confused with an 33 j--; /* Otherwise, -decrypt gets confused with an
34 * algorithm. */ 34 * algorithm. */
@@ -36,7 +36,7 @@
36 } else if (argc > 0 && strcmp(*argv, "-multi") == 0) { 36 } else if (argc > 0 && strcmp(*argv, "-multi") == 0) {
37 argc--; 37 argc--;
38 argv++; 38 argv++;
39@@ -520,6 +532,7 @@ 39@@ -1219,6 +1231,7 @@ speed_main(int argc, char **argv)
40 } 40 }
41 j--; /* Otherwise, -multi gets confused with an 41 j--; /* Otherwise, -multi gets confused with an
42 * algorithm. */ 42 * algorithm. */
@@ -44,7 +44,7 @@
44 } else if (argc > 0 && strcmp(*argv, "-unaligned") == 0) { 44 } else if (argc > 0 && strcmp(*argv, "-unaligned") == 0) {
45 argc--; 45 argc--;
46 argv++; 46 argv++;
47@@ -851,7 +864,9 @@ 47@@ -1542,7 +1555,9 @@ speed_main(int argc, char **argv)
48 BIO_printf(bio_err, "-evp e use EVP e.\n"); 48 BIO_printf(bio_err, "-evp e use EVP e.\n");
49 BIO_printf(bio_err, "-decrypt time decryption instead of encryption (only EVP).\n"); 49 BIO_printf(bio_err, "-decrypt time decryption instead of encryption (only EVP).\n");
50 BIO_printf(bio_err, "-mr produce machine readable output.\n"); 50 BIO_printf(bio_err, "-mr produce machine readable output.\n");
@@ -54,7 +54,7 @@
54 BIO_printf(bio_err, "-unaligned n use buffers with offset n from proper alignment.\n"); 54 BIO_printf(bio_err, "-unaligned n use buffers with offset n from proper alignment.\n");
55 goto end; 55 goto end;
56 } 56 }
57@@ -860,8 +875,10 @@ 57@@ -1551,8 +1566,10 @@ speed_main(int argc, char **argv)
58 j++; 58 j++;
59 } 59 }
60 60
@@ -65,7 +65,7 @@
65 65
66 if (j == 0) { 66 if (j == 0) {
67 for (i = 0; i < ALGOR_NUM; i++) { 67 for (i = 0; i < ALGOR_NUM; i++) {
68@@ -933,11 +950,13 @@ 68@@ -1624,11 +1641,13 @@ speed_main(int argc, char **argv)
69 #define COND(c) (run && count<0x7fffffff) 69 #define COND(c) (run && count<0x7fffffff)
70 #define COUNT(d) (count) 70 #define COUNT(d) (count)
71 71
@@ -79,7 +79,7 @@
79 79
80 #ifndef OPENSSL_NO_MD4 80 #ifndef OPENSSL_NO_MD4
81 if (doit[D_MD4]) { 81 if (doit[D_MD4]) {
82@@ -1743,7 +1762,9 @@ 82@@ -2434,7 +2453,9 @@ speed_main(int argc, char **argv)
83 ecdh_doit[j] = 0; 83 ecdh_doit[j] = 0;
84 } 84 }
85 } 85 }
@@ -89,7 +89,7 @@
89 if (!mr) { 89 if (!mr) {
90 fprintf(stdout, "%s\n", SSLeay_version(SSLEAY_VERSION)); 90 fprintf(stdout, "%s\n", SSLeay_version(SSLEAY_VERSION));
91 fprintf(stdout, "%s\n", SSLeay_version(SSLEAY_BUILT_ON)); 91 fprintf(stdout, "%s\n", SSLeay_version(SSLEAY_BUILT_ON));
92@@ -1899,11 +1920,15 @@ 92@@ -2590,11 +2611,15 @@ pkey_print_message(const char *str, const char *str2,
93 static void 93 static void
94 print_result(int alg, int run_no, int count, double time_used) 94 print_result(int alg, int run_no, int count, double time_used)
95 { 95 {
@@ -105,9 +105,10 @@
105 static char * 105 static char *
106 sstrsep(char **string, const char *delim) 106 sstrsep(char **string, const char *delim)
107 { 107 {
108@@ -2104,4 +2129,5 @@ 108@@ -2795,5 +2820,6 @@ do_multi(int multi)
109 free(fds); 109 free(fds);
110 return 1; 110 return 1;
111 } 111 }
112+#endif 112+#endif
113 #endif 113
114 #endif /* OPENSSL_NO_SPEED */
diff --git a/patches/ssl_namespace.h.patch b/patches/ssl_namespace.h.patch
index 758f8dc..eb9c7a2 100644
--- a/patches/ssl_namespace.h.patch
+++ b/patches/ssl_namespace.h.patch
@@ -1,5 +1,5 @@
1--- openbsd/src/lib/libssl/hidden/ssl_namespace.h 2023-03-15 11:41:52.481641800 -0600 1--- ssl/hidden/ssl_namespace.h.orig Fri Aug 2 23:52:55 2024
2+++ ssl/hidden/ssl_namespace.h 2023-03-15 17:28:04.685309300 -0600 2+++ ssl/hidden/ssl_namespace.h Fri Aug 2 23:53:17 2024
3@@ -23,6 +23,11 @@ 3@@ -23,6 +23,11 @@
4 * and we alias that to the normal name. 4 * and we alias that to the normal name.
5 */ 5 */
@@ -12,7 +12,7 @@
12 #ifdef LIBRESSL_NAMESPACE 12 #ifdef LIBRESSL_NAMESPACE
13 #define LSSL_UNUSED(x) typeof(x) x __attribute__((deprecated)) 13 #define LSSL_UNUSED(x) typeof(x) x __attribute__((deprecated))
14 #define LSSL_USED(x) __attribute__((visibility("hidden"))) \ 14 #define LSSL_USED(x) __attribute__((visibility("hidden"))) \
15@@ -33,5 +38,6 @@ 15@@ -37,5 +42,6 @@
16 #define LSSL_USED(x) 16 #define LSSL_USED(x)
17 #define LSSL_ALIAS(x) asm("") 17 #define LSSL_ALIAS(x) asm("")
18 #endif 18 #endif
diff --git a/patches/tls_config.c.patch b/patches/tls_config.c.patch
new file mode 100644
index 0000000..1342a60
--- /dev/null
+++ b/patches/tls_config.c.patch
@@ -0,0 +1,15 @@
1uid_t can be 64-bit
2
3--- tls/tls_config.c.orig 2024-11-02 21:19:47.090322191 +0100
4+++ tls/tls_config.c 2024-11-02 21:38:22.527071689 +0100
5@@ -742,8 +742,8 @@
6
7 if (sb.st_uid != getuid()) {
8 tls_config_set_errorx(config, TLS_ERROR_UNKNOWN,
9- "session file has incorrect owner (uid %u != %u)",
10- sb.st_uid, getuid());
11+ "session file has incorrect owner (uid %llu != %llu)",
12+ (unsigned long long)sb.st_uid, (unsigned long long)getuid());
13 return (-1);
14 }
15 mugo = sb.st_mode & (S_IRWXU|S_IRWXG|S_IRWXO);
diff --git a/scripts/test b/scripts/test
index e389728..a93fe90 100755
--- a/scripts/test
+++ b/scripts/test
@@ -2,7 +2,14 @@
2set -e 2set -e
3set -x 3set -x
4 4
5unset CC 5if [ "$ARCH" = "" ]; then
6 ARCH=`uname -m`
7fi
8
9if [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" -o "$ARCH" = "arm32" ]; then
10 unset CC
11fi
12
6ENABLE_ASM="${ENABLE_ASM:=ON}" 13ENABLE_ASM="${ENABLE_ASM:=ON}"
7 14
8if type apt-get >/dev/null 2>&1; then 15if type apt-get >/dev/null 2>&1; then
@@ -15,10 +22,6 @@ fi
15 22
16VERSION=`cat VERSION` 23VERSION=`cat VERSION`
17 24
18if [ "$ARCH" = "" ]; then
19 ARCH=`uname -m`
20fi
21
22# test macOS 25# test macOS
23if [ `uname` = "Darwin" ]; then 26if [ `uname` = "Darwin" ]; then
24 # test autotools 27 # test autotools
@@ -129,6 +132,21 @@ elif [ "$ARCH" = "arm32" -o "$ARCH" = "arm64" ]; then
129 132
130 file apps/openssl/.libs/openssl 133 file apps/openssl/.libs/openssl
131 134
135elif [ "$ARCH" = "loong64" ]; then
136 sudo apt install -y qemu-user-static binfmt-support g++-14-loongarch64-linux-gnu
137 sudo ln -sf /usr/loongarch64-linux-gnu/lib64/ld-linux-loongarch-lp64d.so.1 /lib64
138
139 CC=loongarch64-linux-gnu-gcc-14
140 CXX=loongarch64-linux-gnu++-14
141 AR=loongarch64-linux-gnu-ar
142 STRIP=loongarch64-linux-gnu-strip-14
143 RANLIB=loongarch64-linux-gnu-ranlib
144
145 ./configure --host=loongarch64-linux-gnu
146 LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check
147
148 file apps/openssl/openssl
149
132elif [ "$ARCH" = "mips32" -o "$ARCH" = "mips64" ]; then 150elif [ "$ARCH" = "mips32" -o "$ARCH" = "mips64" ]; then
133 sudo apt-get install -y qemu-user-static binfmt-support 151 sudo apt-get install -y qemu-user-static binfmt-support
134 152
diff --git a/ssl/CMakeLists.txt b/ssl/CMakeLists.txt
index e2eeab5..cd7e335 100644
--- a/ssl/CMakeLists.txt
+++ b/ssl/CMakeLists.txt
@@ -72,6 +72,13 @@ target_include_directories(ssl_obj
72 ../include 72 ../include
73 ${CMAKE_BINARY_DIR}/include) 73 ${CMAKE_BINARY_DIR}/include)
74 74
75if(MSVC)
76 # "C4702" - unreachable code
77 set_source_files_properties(d1_pkt.c s3_cbc.c PROPERTIES
78 COMPILE_OPTIONS /wd4702
79 )
80endif()
81
75add_library(bs_obj OBJECT ${BS_SRC}) 82add_library(bs_obj OBJECT ${BS_SRC})
76target_include_directories(bs_obj 83target_include_directories(bs_obj
77 PRIVATE 84 PRIVATE
@@ -86,16 +93,16 @@ endif()
86 93
87export_symbol(ssl ${CMAKE_CURRENT_SOURCE_DIR}/ssl.sym) 94export_symbol(ssl ${CMAKE_CURRENT_SOURCE_DIR}/ssl.sym)
88target_link_libraries(ssl crypto ${PLATFORM_LIBS}) 95target_link_libraries(ssl crypto ${PLATFORM_LIBS})
89if (WIN32)
90 set(SSL_POSTFIX -${SSL_MAJOR_VERSION} PARENT_SCOPE)
91endif()
92set_target_properties(ssl PROPERTIES 96set_target_properties(ssl PROPERTIES
93 OUTPUT_NAME ssl${SSL_POSTFIX} 97 OUTPUT_NAME ssl
94 ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX} 98 ARCHIVE_OUTPUT_NAME ssl
95 EXPORT_NAME SSL 99 EXPORT_NAME SSL
96 VERSION ${SSL_VERSION} 100 VERSION ${SSL_VERSION}
97 SOVERSION ${SSL_MAJOR_VERSION} 101 SOVERSION ${SSL_MAJOR_VERSION}
98) 102)
103if(NOT CMAKE_VERSION VERSION_LESS 3.27.0)
104 set_target_properties(ssl PROPERTIES DLL_NAME_WITH_SOVERSION TRUE)
105endif()
99 106
100target_include_directories( 107target_include_directories(
101 ssl 108 ssl
@@ -104,6 +111,30 @@ target_include_directories(
104 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> 111 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
105) 112)
106 113
114if(HOST_AARCH64)
115 target_include_directories(ssl_obj PRIVATE ../crypto/arch/aarch64/)
116elseif(HOST_ARM)
117 target_include_directories(ssl_obj PRIVATE ../crypto/arch/arm/)
118elseif(HOST_I386)
119 target_include_directories(ssl_obj PRIVATE ../crypto/arch/i386/)
120elseif(HOST_LOONGARCH64)
121 target_include_directories(ssl_obj PRIVATE ../crypto/arch/loongarch64)
122elseif(HOST_MIPS64)
123 target_include_directories(ssl_obj PRIVATE ../crypto/arch/mips64)
124elseif(HOST_MIPS)
125 target_include_directories(ssl_obj PRIVATE ../crypto/arch/mips)
126elseif(HOST_POWERPC)
127 target_include_directories(ssl_obj PRIVATE ../crypto/arch/powerpc)
128elseif(HOST_POWERPC64)
129 target_include_directories(ssl_obj PRIVATE ../crypto/arch/powerpc64)
130elseif(HOST_RISCV64)
131 target_include_directories(ssl_obj PRIVATE ../crypto/arch/riscv64)
132elseif(HOST_SPARC64)
133 target_include_directories(ssl_obj PRIVATE ../crypto/arch/sparc64)
134elseif(HOST_X86_64)
135 target_include_directories(ssl_obj PRIVATE ../crypto/arch/amd64)
136endif()
137
107install( 138install(
108 TARGETS ssl 139 TARGETS ssl
109 EXPORT SSL-target 140 EXPORT SSL-target
@@ -135,4 +166,3 @@ if(BUILD_SHARED_LIBS)
135 add_library(ssl-static STATIC $<TARGET_OBJECTS:ssl_obj>) 166 add_library(ssl-static STATIC $<TARGET_OBJECTS:ssl_obj>)
136 target_link_libraries(ssl-static crypto-static ${PLATFORM_LIBS}) 167 target_link_libraries(ssl-static crypto-static ${PLATFORM_LIBS})
137endif() 168endif()
138
diff --git a/ssl/Makefile.am b/ssl/Makefile.am
index a7a7d72..2c84bff 100644
--- a/ssl/Makefile.am
+++ b/ssl/Makefile.am
@@ -114,3 +114,59 @@ noinst_HEADERS += tls12_internal.h
114noinst_HEADERS += tls13_internal.h 114noinst_HEADERS += tls13_internal.h
115noinst_HEADERS += tls13_handshake.h 115noinst_HEADERS += tls13_handshake.h
116noinst_HEADERS += tls13_record.h 116noinst_HEADERS += tls13_record.h
117
118# arch
119if HOST_AARCH64
120libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/aarch64/
121endif
122noinst_HEADERS += $(top_srcdir)/crypto/arch/aarch64/crypto_arch.h
123
124if HOST_ARM
125libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/arm/
126endif
127noinst_HEADERS += $(top_srcdir)/crypto/arch/arm/crypto_arch.h
128
129if HOST_I386
130libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/i386/
131endif
132noinst_HEADERS += $(top_srcdir)/crypto/arch/i386/crypto_arch.h
133
134if HOST_LOONGARCH64
135libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/loongarch64/
136endif
137noinst_HEADERS += $(top_srcdir)/crypto/arch/loongarch64/crypto_arch.h
138
139if HOST_MIPS
140libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips/
141endif
142noinst_HEADERS += $(top_srcdir)/crypto/arch/mips/crypto_arch.h
143
144if HOST_MIPS64
145libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips64/
146endif
147noinst_HEADERS += $(top_srcdir)/crypto/arch/mips64/crypto_arch.h
148
149if HOST_POWERPC
150libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc/
151endif
152noinst_HEADERS += $(top_srcdir)/crypto/arch/powerpc/crypto_arch.h
153
154if HOST_POWERPC64
155libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc64/
156endif
157noinst_HEADERS += $(top_srcdir)/crypto/arch/powerpc64/crypto_arch.h
158
159if HOST_RISCV64
160libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/riscv64/
161endif
162noinst_HEADERS += $(top_srcdir)/crypto/arch/riscv64/crypto_arch.h
163
164if HOST_SPARC64
165libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/sparc64/
166endif
167noinst_HEADERS += $(top_srcdir)/crypto/arch/sparc64/crypto_arch.h
168
169if HOST_X86_64
170libssl_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/amd64/
171endif
172noinst_HEADERS += $(top_srcdir)/crypto/arch/amd64/crypto_arch.h
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 480d893..d7cc499 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -6,9 +6,13 @@ include_directories(
6 ../crypto/asn1 6 ../crypto/asn1
7 ../crypto/bio 7 ../crypto/bio
8 ../crypto/bn 8 ../crypto/bn
9 ../crypto/bytestring
9 ../crypto/curve25519 10 ../crypto/curve25519
11 ../crypto/ec
10 ../crypto/evp 12 ../crypto/evp
13 ../crypto/mlkem
11 ../crypto/modes 14 ../crypto/modes
15 ../crypto/sha
12 ../crypto/x509 16 ../crypto/x509
13 ../ssl 17 ../ssl
14 ../apps/openssl 18 ../apps/openssl
@@ -18,6 +22,30 @@ include_directories(
18 ../include/compat 22 ../include/compat
19) 23)
20 24
25if(HOST_AARCH64)
26 include_directories(../crypto/arch/aarch64/)
27elseif(HOST_ARM)
28 include_directories(../crypto/arch/arm/)
29elseif(HOST_I386)
30 include_directories(../crypto/arch/i386/)
31elseif(HOST_LOONGARCH64)
32 include_directories(../crypto/arch/loongarch64)
33elseif(HOST_MIPS64)
34 include_directories(../crypto/arch/mips64)
35elseif(HOST_MIPS)
36 include_directories(../crypto/arch/mips)
37elseif(HOST_POWERPC)
38 include_directories(../crypto/arch/powerpc)
39elseif(HOST_POWERPC64)
40 include_directories(../crypto/arch/powerpc64)
41elseif(HOST_RISCV64)
42 include_directories(../crypto/arch/riscv64)
43elseif(HOST_SPARC64)
44 include_directories(../crypto/arch/sparc64)
45elseif(HOST_X86_64)
46 include_directories(../crypto/arch/amd64)
47endif()
48
21add_definitions(-D_PATH_SSL_CA_FILE=\"${CMAKE_CURRENT_SOURCE_DIR}/../cert.pem\") 49add_definitions(-D_PATH_SSL_CA_FILE=\"${CMAKE_CURRENT_SOURCE_DIR}/../cert.pem\")
22 50
23file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} TEST_SOURCE_DIR) 51file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} TEST_SOURCE_DIR)
@@ -303,9 +331,9 @@ target_link_libraries(cipherstest ${OPENSSL_TEST_LIBS})
303add_platform_test(cipherstest cipherstest) 331add_platform_test(cipherstest cipherstest)
304 332
305## clienttest 333## clienttest
306#add_executable(clienttest clienttest.c) 334add_executable(clienttest clienttest.c)
307#target_link_libraries(clienttest ${OPENSSL_TEST_LIBS}) 335target_link_libraries(clienttest ${OPENSSL_TEST_LIBS})
308#add_platform_test(clienttest clienttest) 336add_platform_test(clienttest clienttest)
309 337
310# cmstest 338# cmstest
311add_executable(cmstest cmstest.c) 339add_executable(cmstest cmstest.c)
@@ -368,6 +396,7 @@ add_platform_test(ecc_cdh ecc_cdh)
368# ec_asn1_test 396# ec_asn1_test
369add_executable(ec_asn1_test ec_asn1_test.c) 397add_executable(ec_asn1_test ec_asn1_test.c)
370target_link_libraries(ec_asn1_test ${OPENSSL_TEST_LIBS}) 398target_link_libraries(ec_asn1_test ${OPENSSL_TEST_LIBS})
399prepare_emscripten_test_target(ec_asn1_test)
371add_platform_test(ec_asn1_test ec_asn1_test) 400add_platform_test(ec_asn1_test ec_asn1_test)
372 401
373# ec_point_conversion 402# ec_point_conversion
@@ -396,16 +425,16 @@ add_executable(ed25519test ed25519test.c)
396target_link_libraries(ed25519test ${OPENSSL_TEST_LIBS}) 425target_link_libraries(ed25519test ${OPENSSL_TEST_LIBS})
397add_platform_test(ed25519test ed25519test) 426add_platform_test(ed25519test ed25519test)
398 427
428# err_test
429add_executable(err_test err_test.c)
430target_link_libraries(err_test ${OPENSSL_TEST_LIBS})
431add_platform_test(err_test err_test)
432
399# evp_ecx_test 433# evp_ecx_test
400add_executable(evp_ecx_test evp_ecx_test.c) 434add_executable(evp_ecx_test evp_ecx_test.c)
401target_link_libraries(evp_ecx_test ${OPENSSL_TEST_LIBS}) 435target_link_libraries(evp_ecx_test ${OPENSSL_TEST_LIBS})
402add_platform_test(evp_ecx_test evp_ecx_test) 436add_platform_test(evp_ecx_test evp_ecx_test)
403 437
404# evp_pkey_check
405add_executable(evp_pkey_check evp_pkey_check.c)
406target_link_libraries(evp_pkey_check ${OPENSSL_TEST_LIBS})
407add_platform_test(evp_pkey_check evp_pkey_check)
408
409# evp_pkey_cleanup 438# evp_pkey_cleanup
410add_executable(evp_pkey_cleanup evp_pkey_cleanup.c) 439add_executable(evp_pkey_cleanup evp_pkey_cleanup.c)
411target_link_libraries(evp_pkey_cleanup ${OPENSSL_TEST_LIBS}) 440target_link_libraries(evp_pkey_cleanup ${OPENSSL_TEST_LIBS})
@@ -511,6 +540,28 @@ add_executable(md_test md_test.c)
511target_link_libraries(md_test ${OPENSSL_TEST_LIBS}) 540target_link_libraries(md_test ${OPENSSL_TEST_LIBS})
512add_platform_test(md_test md_test) 541add_platform_test(md_test md_test)
513 542
543# mlkem_tests
544add_executable(mlkem_tests mlkem_tests.c mlkem_tests_util.c parse_test_file.c)
545target_link_libraries(mlkem_tests ${OPENSSL_TEST_LIBS})
546prepare_emscripten_test_target(mlkem_tests)
547if(NOT WIN32)
548 add_test(NAME mlkem_tests COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mlkem_tests.sh)
549 set_tests_properties(mlkem_tests PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
550endif()
551# XXX - add tests for Windows
552
553# mlkem_iteration_tests
554add_executable(mlkem_iteration_tests mlkem_iteration_tests.c mlkem_tests_util.c)
555target_link_libraries(mlkem_iteration_tests ${OPENSSL_TEST_LIBS})
556prepare_emscripten_test_target(mlkem_iteration_tests)
557add_platform_test(mlkem_iteration_tests mlkem_iteration_tests)
558
559# mlkem_unittest
560add_executable(mlkem_unittest mlkem_unittest.c mlkem_tests_util.c)
561target_link_libraries(mlkem_unittest ${OPENSSL_TEST_LIBS})
562prepare_emscripten_test_target(mlkem_unittest)
563add_platform_test(mlkem_unittest mlkem_unittest)
564
514# objectstest 565# objectstest
515add_executable(objectstest objectstest.c) 566add_executable(objectstest objectstest.c)
516target_link_libraries(objectstest ${OPENSSL_TEST_LIBS}) 567target_link_libraries(objectstest ${OPENSSL_TEST_LIBS})
@@ -520,7 +571,7 @@ add_platform_test(objectstest objectstest)
520if(ENABLE_EXTRATESTS) 571if(ENABLE_EXTRATESTS)
521 add_executable(ocsp_test ocsp_test.c) 572 add_executable(ocsp_test ocsp_test.c)
522 target_link_libraries(ocsp_test ${OPENSSL_TEST_LIBS}) 573 target_link_libraries(ocsp_test ${OPENSSL_TEST_LIBS})
523 if(NOT MSVC) 574 if(NOT WIN32)
524 add_test(NAME ocsptest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.sh) 575 add_test(NAME ocsptest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.sh)
525 else() 576 else()
526 add_test(NAME ocsptest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.bat $<TARGET_FILE:ocsp_test>) 577 add_test(NAME ocsptest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.bat $<TARGET_FILE:ocsp_test>)
@@ -569,7 +620,7 @@ add_platform_test(policy policy)
569# pq_test 620# pq_test
570add_executable(pq_test pq_test.c) 621add_executable(pq_test pq_test.c)
571target_link_libraries(pq_test ${OPENSSL_TEST_LIBS}) 622target_link_libraries(pq_test ${OPENSSL_TEST_LIBS})
572if(NOT MSVC) 623if(NOT WIN32)
573 add_test(NAME pq_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pq_test.sh) 624 add_test(NAME pq_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pq_test.sh)
574else() 625else()
575 add_test(NAME pq_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pq_test.bat 626 add_test(NAME pq_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pq_test.bat
@@ -582,7 +633,7 @@ set(QUICTEST_SRC quictest.c)
582add_executable(quictest ${QUICTEST_SRC}) 633add_executable(quictest ${QUICTEST_SRC})
583target_link_libraries(quictest ${OPENSSL_TEST_LIBS}) 634target_link_libraries(quictest ${OPENSSL_TEST_LIBS})
584prepare_emscripten_test_target(quictest) 635prepare_emscripten_test_target(quictest)
585if(NOT MSVC) 636if(NOT WIN32)
586 add_test(NAME quictest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/quictest.sh) 637 add_test(NAME quictest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/quictest.sh)
587else() 638else()
588 add_test(NAME quictest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/quictest.bat $<TARGET_FILE:quictest>) 639 add_test(NAME quictest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/quictest.bat $<TARGET_FILE:quictest>)
@@ -614,6 +665,18 @@ add_executable(record_layer_test record_layer_test.c)
614target_link_libraries(record_layer_test ${OPENSSL_TEST_LIBS}) 665target_link_libraries(record_layer_test ${OPENSSL_TEST_LIBS})
615add_platform_test(record_layer_test record_layer_test) 666add_platform_test(record_layer_test record_layer_test)
616 667
668# renegotiation_test
669set(RENEGOTIATION_TEST_SRC renegotiation_test.c)
670add_executable(renegotiation_test ${RENEGOTIATION_TEST_SRC})
671target_link_libraries(renegotiation_test ${OPENSSL_TEST_LIBS})
672prepare_emscripten_test_target(renegotiation_test)
673if(NOT MSVC)
674 add_test(NAME renegotiation_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/renegotiation_test.sh)
675else()
676 add_test(NAME renegotiation_test COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/renegotiation_test.bat $<TARGET_FILE:renegotiation_test>)
677endif()
678set_tests_properties(renegotiation_test PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
679
617# rfc3779 680# rfc3779
618add_executable(rfc3779 rfc3779.c) 681add_executable(rfc3779 rfc3779.c)
619target_link_libraries(rfc3779 ${OPENSSL_TEST_LIBS}) 682target_link_libraries(rfc3779 ${OPENSSL_TEST_LIBS})
@@ -632,6 +695,11 @@ add_executable(rmd_test rmd_test.c)
632target_link_libraries(rmd_test ${OPENSSL_TEST_LIBS}) 695target_link_libraries(rmd_test ${OPENSSL_TEST_LIBS})
633add_platform_test(rmd_test rmd_test) 696add_platform_test(rmd_test rmd_test)
634 697
698# rsa_method_test
699add_executable(rsa_method_test rsa_method_test.c)
700target_link_libraries(rsa_method_test ${OPENSSL_TEST_LIBS})
701add_platform_test(rsa_method_test rsa_method_test)
702
635# rsa_padding_test 703# rsa_padding_test
636add_executable(rsa_padding_test rsa_padding_test.c) 704add_executable(rsa_padding_test rsa_padding_test.c)
637target_link_libraries(rsa_padding_test ${OPENSSL_TEST_LIBS}) 705target_link_libraries(rsa_padding_test ${OPENSSL_TEST_LIBS})
@@ -648,7 +716,7 @@ add_platform_test(rsa_test rsa_test)
648add_executable(servertest servertest.c) 716add_executable(servertest servertest.c)
649target_link_libraries(servertest ${OPENSSL_TEST_LIBS}) 717target_link_libraries(servertest ${OPENSSL_TEST_LIBS})
650prepare_emscripten_test_target(servertest) 718prepare_emscripten_test_target(servertest)
651if(NOT MSVC) 719if(NOT WIN32)
652 add_test(NAME servertest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/servertest.sh) 720 add_test(NAME servertest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/servertest.sh)
653else() 721else()
654 add_test(NAME servertest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/servertest.bat $<TARGET_FILE:servertest>) 722 add_test(NAME servertest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/servertest.bat $<TARGET_FILE:servertest>)
@@ -665,7 +733,7 @@ set(SHUTDOWNTEST_SRC shutdowntest.c)
665add_executable(shutdowntest ${SHUTDOWNTEST_SRC}) 733add_executable(shutdowntest ${SHUTDOWNTEST_SRC})
666target_link_libraries(shutdowntest ${OPENSSL_TEST_LIBS}) 734target_link_libraries(shutdowntest ${OPENSSL_TEST_LIBS})
667prepare_emscripten_test_target(shutdowntest) 735prepare_emscripten_test_target(shutdowntest)
668if(NOT MSVC) 736if(NOT WIN32)
669 add_test(NAME shutdowntest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/shutdowntest.sh) 737 add_test(NAME shutdowntest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/shutdowntest.sh)
670else() 738else()
671 add_test(NAME shutdowntest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/shutdowntest.bat $<TARGET_FILE:shutdowntest>) 739 add_test(NAME shutdowntest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/shutdowntest.bat $<TARGET_FILE:shutdowntest>)
@@ -676,7 +744,7 @@ set_tests_properties(shutdowntest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_D
676# Emscripten does not support socketpair syscall. 744# Emscripten does not support socketpair syscall.
677if(NOT (CMAKE_SYSTEM_NAME MATCHES "WindowsStore" OR EMSCRIPTEN)) 745if(NOT (CMAKE_SYSTEM_NAME MATCHES "WindowsStore" OR EMSCRIPTEN))
678 set(SIGNERTEST_SRC signertest.c) 746 set(SIGNERTEST_SRC signertest.c)
679 check_function_exists(pipe2 HAVE_PIPE2) 747 check_symbol_exists(pipe2 "fcntl.h;unistd.h" HAVE_PIPE2)
680 if(HAVE_PIPE2) 748 if(HAVE_PIPE2)
681 add_definitions(-DHAVE_PIPE2) 749 add_definitions(-DHAVE_PIPE2)
682 else() 750 else()
@@ -737,7 +805,7 @@ add_platform_test(ssl_versions ssl_versions)
737add_executable(ssltest ssltest.c) 805add_executable(ssltest ssltest.c)
738target_link_libraries(ssltest ${OPENSSL_TEST_LIBS}) 806target_link_libraries(ssltest ${OPENSSL_TEST_LIBS})
739prepare_emscripten_test_target(ssltest) 807prepare_emscripten_test_target(ssltest)
740if(NOT MSVC) 808if(NOT WIN32)
741 add_test(NAME ssltest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ssltest.sh) 809 add_test(NAME ssltest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ssltest.sh)
742else() 810else()
743 add_test(NAME ssltest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ssltest.bat $<TARGET_FILE:ssltest> $<TARGET_FILE:openssl>) 811 add_test(NAME ssltest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ssltest.bat $<TARGET_FILE:ssltest> $<TARGET_FILE:openssl>)
@@ -748,7 +816,7 @@ set_tests_properties(ssltest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
748# access various files for IO. Adding such files to --preload-file is infeasible. 816# access various files for IO. Adding such files to --preload-file is infeasible.
749if(NOT EMSCRIPTEN) 817if(NOT EMSCRIPTEN)
750 # testdsa 818 # testdsa
751 if(NOT MSVC) 819 if(NOT WIN32)
752 add_test(NAME testdsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testdsa.sh) 820 add_test(NAME testdsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testdsa.sh)
753 else() 821 else()
754 add_test(NAME testdsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testdsa.bat $<TARGET_FILE:openssl>) 822 add_test(NAME testdsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testdsa.bat $<TARGET_FILE:openssl>)
@@ -756,7 +824,7 @@ if(NOT EMSCRIPTEN)
756 set_tests_properties(testdsa PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}") 824 set_tests_properties(testdsa PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
757 825
758 # testenc 826 # testenc
759 if(NOT MSVC) 827 if(NOT WIN32)
760 add_test(NAME testenc COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testenc.sh) 828 add_test(NAME testenc COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testenc.sh)
761 else() 829 else()
762 add_test(NAME testenc COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testenc.bat $<TARGET_FILE:openssl>) 830 add_test(NAME testenc COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testenc.bat $<TARGET_FILE:openssl>)
@@ -764,7 +832,7 @@ if(NOT EMSCRIPTEN)
764 set_tests_properties(testenc PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}") 832 set_tests_properties(testenc PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
765 833
766 # testrsa 834 # testrsa
767 if(NOT MSVC) 835 if(NOT WIN32)
768 add_test(NAME testrsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testrsa.sh) 836 add_test(NAME testrsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testrsa.sh)
769 else() 837 else()
770 add_test(NAME testrsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testrsa.bat $<TARGET_FILE:openssl>) 838 add_test(NAME testrsa COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testrsa.bat $<TARGET_FILE:openssl>)
@@ -792,7 +860,7 @@ add_platform_test(tlslegacytest tlslegacytest)
792# Emscripten does not support socketpair syscall. 860# Emscripten does not support socketpair syscall.
793if(NOT (CMAKE_SYSTEM_NAME MATCHES "WindowsStore" OR EMSCRIPTEN)) 861if(NOT (CMAKE_SYSTEM_NAME MATCHES "WindowsStore" OR EMSCRIPTEN))
794 set(TLSTEST_SRC tlstest.c) 862 set(TLSTEST_SRC tlstest.c)
795 check_function_exists(pipe2 HAVE_PIPE2) 863 check_symbol_exists(pipe2 "fcntl.h;unistd.h" HAVE_PIPE2)
796 if(HAVE_PIPE2) 864 if(HAVE_PIPE2)
797 add_definitions(-DHAVE_PIPE2) 865 add_definitions(-DHAVE_PIPE2)
798 else() 866 else()
@@ -801,7 +869,7 @@ if(NOT (CMAKE_SYSTEM_NAME MATCHES "WindowsStore" OR EMSCRIPTEN))
801 869
802 add_executable(tlstest ${TLSTEST_SRC}) 870 add_executable(tlstest ${TLSTEST_SRC})
803 target_link_libraries(tlstest ${LIBTLS_TEST_LIBS}) 871 target_link_libraries(tlstest ${LIBTLS_TEST_LIBS})
804 if(NOT MSVC) 872 if(NOT WIN32)
805 add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.sh) 873 add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.sh)
806 else() 874 else()
807 add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.bat $<TARGET_FILE:tlstest>) 875 add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.bat $<TARGET_FILE:tlstest>)
@@ -834,11 +902,6 @@ add_executable(verifytest verifytest.c)
834target_link_libraries(verifytest ${LIBTLS_TEST_LIBS}) 902target_link_libraries(verifytest ${LIBTLS_TEST_LIBS})
835add_platform_test(verifytest verifytest) 903add_platform_test(verifytest verifytest)
836 904
837# whirlpool_test
838add_executable(whirlpool_test whirlpool_test.c)
839target_link_libraries(whirlpool_test ${OPENSSL_TEST_LIBS})
840add_platform_test(whirlpool_test whirlpool_test)
841
842# x25519test 905# x25519test
843add_executable(x25519test x25519test.c) 906add_executable(x25519test x25519test.c)
844target_link_libraries(x25519test ${OPENSSL_TEST_LIBS}) 907target_link_libraries(x25519test ${OPENSSL_TEST_LIBS})
@@ -870,6 +933,11 @@ add_executable(x509_info x509_info.c)
870target_link_libraries(x509_info ${OPENSSL_TEST_LIBS}) 933target_link_libraries(x509_info ${OPENSSL_TEST_LIBS})
871add_platform_test(x509_info x509_info) 934add_platform_test(x509_info x509_info)
872 935
936# x509_name_test
937add_executable(x509_name_test x509_name_test.c)
938target_link_libraries(x509_name_test ${OPENSSL_TEST_LIBS})
939add_platform_test(x509_name_test x509_name_test)
940
873# x509name 941# x509name
874add_executable(x509name x509name.c) 942add_executable(x509name x509name.c)
875target_link_libraries(x509name ${OPENSSL_TEST_LIBS}) 943target_link_libraries(x509name ${OPENSSL_TEST_LIBS})
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 76ed83a..b58de21 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -10,15 +10,64 @@ AM_CPPFLAGS += -I $(top_srcdir)/crypto/
10AM_CPPFLAGS += -I $(top_srcdir)/crypto/asn1 10AM_CPPFLAGS += -I $(top_srcdir)/crypto/asn1
11AM_CPPFLAGS += -I $(top_srcdir)/crypto/bio 11AM_CPPFLAGS += -I $(top_srcdir)/crypto/bio
12AM_CPPFLAGS += -I $(top_srcdir)/crypto/bn 12AM_CPPFLAGS += -I $(top_srcdir)/crypto/bn
13AM_CPPFLAGS += -I $(top_srcdir)/crypto/bytestring
13AM_CPPFLAGS += -I $(top_srcdir)/crypto/curve25519 14AM_CPPFLAGS += -I $(top_srcdir)/crypto/curve25519
15AM_CPPFLAGS += -I $(top_srcdir)/crypto/ec
14AM_CPPFLAGS += -I $(top_srcdir)/crypto/evp 16AM_CPPFLAGS += -I $(top_srcdir)/crypto/evp
17AM_CPPFLAGS += -I $(top_srcdir)/crypto/mlkem
15AM_CPPFLAGS += -I $(top_srcdir)/crypto/modes 18AM_CPPFLAGS += -I $(top_srcdir)/crypto/modes
19AM_CPPFLAGS += -I $(top_srcdir)/crypto/sha
16AM_CPPFLAGS += -I $(top_srcdir)/crypto/x509 20AM_CPPFLAGS += -I $(top_srcdir)/crypto/x509
17AM_CPPFLAGS += -I $(top_srcdir)/ssl 21AM_CPPFLAGS += -I $(top_srcdir)/ssl
18AM_CPPFLAGS += -I $(top_srcdir)/apps/openssl 22AM_CPPFLAGS += -I $(top_srcdir)/apps/openssl
19AM_CPPFLAGS += -I $(top_srcdir)/apps/openssl/compat 23AM_CPPFLAGS += -I $(top_srcdir)/apps/openssl/compat
20AM_CPPFLAGS += -D_PATH_SSL_CA_FILE=\"$(top_srcdir)/cert.pem\" 24AM_CPPFLAGS += -D_PATH_SSL_CA_FILE=\"$(top_srcdir)/cert.pem\"
21 25
26# arch
27if HOST_AARCH64
28AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/aarch64/
29endif
30
31if HOST_ARM
32AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/arm/
33endif
34
35if HOST_I386
36AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/i386/
37endif
38
39if HOST_LOONGARCH64
40AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/loongarch64/
41endif
42
43if HOST_MIPS
44AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips/
45endif
46
47if HOST_MIPS64
48AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips64/
49endif
50
51if HOST_POWERPC
52AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc/
53endif
54
55if HOST_POWERPC64
56AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc64/
57endif
58
59if HOST_RISCV64
60AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/riscv64/
61endif
62
63if HOST_SPARC64
64AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/sparc64/
65endif
66
67if HOST_X86_64
68AM_CPPFLAGS += -I$(top_srcdir)/crypto/arch/amd64/
69endif
70
22noinst_LTLIBRARIES = libtest.la 71noinst_LTLIBRARIES = libtest.la
23libtest_la_LIBADD = $(libcrypto_la_objects) 72libtest_la_LIBADD = $(libcrypto_la_objects)
24libtest_la_LIBADD += $(libcompat_la_objects) 73libtest_la_LIBADD += $(libcompat_la_objects)
@@ -297,9 +346,9 @@ check_PROGRAMS += cipherstest
297cipherstest_SOURCES = cipherstest.c 346cipherstest_SOURCES = cipherstest.c
298 347
299## clienttest 348## clienttest
300#TESTS += clienttest 349TESTS += clienttest
301#check_PROGRAMS += clienttest 350check_PROGRAMS += clienttest
302#clienttest_SOURCES = clienttest.c 351clienttest_SOURCES = clienttest.c
303 352
304# cmstest 353# cmstest
305TESTS += cmstest 354TESTS += cmstest
@@ -389,16 +438,16 @@ TESTS += ed25519test
389check_PROGRAMS += ed25519test 438check_PROGRAMS += ed25519test
390ed25519test_SOURCES = ed25519test.c 439ed25519test_SOURCES = ed25519test.c
391 440
441# err_test
442TESTS += err_test
443check_PROGRAMS += err_test
444err_test_SOURCES = err_test.c
445
392# evp_ecx_test 446# evp_ecx_test
393TESTS += evp_ecx_test 447TESTS += evp_ecx_test
394check_PROGRAMS += evp_ecx_test 448check_PROGRAMS += evp_ecx_test
395evp_ecx_test_SOURCES = evp_ecx_test.c 449evp_ecx_test_SOURCES = evp_ecx_test.c
396 450
397# evp_pkey_check
398TESTS += evp_pkey_check
399check_PROGRAMS += evp_pkey_check
400evp_pkey_check_SOURCES = evp_pkey_check.c
401
402# evp_pkey_cleanup 451# evp_pkey_cleanup
403TESTS += evp_pkey_cleanup 452TESTS += evp_pkey_cleanup
404check_PROGRAMS += evp_pkey_cleanup 453check_PROGRAMS += evp_pkey_cleanup
@@ -501,6 +550,35 @@ TESTS += md_test
501check_PROGRAMS += md_test 550check_PROGRAMS += md_test
502md_test_SOURCES = md_test.c 551md_test_SOURCES = md_test.c
503 552
553noinst_HEADERS += mlkem_tests_util.h
554noinst_HEADERS += parse_test_file.h
555
556# mlkem_tests
557TESTS += mlkem_tests.sh
558check_PROGRAMS += mlkem_tests
559mlkem_tests_SOURCES = mlkem_tests.c mlkem_tests_util.c parse_test_file.c
560EXTRA_DIST += mlkem_tests.sh
561EXTRA_DIST += mlkem768_decap_tests.txt
562EXTRA_DIST += mlkem768_encap_tests.txt
563EXTRA_DIST += mlkem768_keygen_tests.txt
564EXTRA_DIST += mlkem768_nist_decap_tests.txt
565EXTRA_DIST += mlkem768_nist_keygen_tests.txt
566EXTRA_DIST += mlkem1024_decap_tests.txt
567EXTRA_DIST += mlkem1024_encap_tests.txt
568EXTRA_DIST += mlkem1024_keygen_tests.txt
569EXTRA_DIST += mlkem1024_nist_decap_tests.txt
570EXTRA_DIST += mlkem1024_nist_keygen_tests.txt
571
572# mlkem_iteration_tests
573TESTS += mlkem_iteration_tests
574check_PROGRAMS += mlkem_iteration_tests
575mlkem_iteration_tests_SOURCES = mlkem_iteration_tests.c mlkem_tests_util.c
576
577# mlkem_unittest
578TESTS += mlkem_unittest
579check_PROGRAMS += mlkem_unittest
580mlkem_unittest_SOURCES = mlkem_unittest.c mlkem_tests_util.c
581
504# objectstest 582# objectstest
505TESTS += objectstest 583TESTS += objectstest
506check_PROGRAMS += objectstest 584check_PROGRAMS += objectstest
@@ -615,6 +693,12 @@ TESTS += record_layer_test
615check_PROGRAMS += record_layer_test 693check_PROGRAMS += record_layer_test
616record_layer_test_SOURCES = record_layer_test.c 694record_layer_test_SOURCES = record_layer_test.c
617 695
696# renegotiation_test
697TESTS += renegotiation_test.sh
698check_PROGRAMS += renegotiation_test
699renegotiation_test_SOURCES = renegotiation_test.c
700EXTRA_DIST += renegotiation_test.sh renegotiation_test.bat
701
618# rfc3779 702# rfc3779
619TESTS += rfc3779 703TESTS += rfc3779
620rfc3779_CPPFLAGS = $(AM_CPPFLAGS) 704rfc3779_CPPFLAGS = $(AM_CPPFLAGS)
@@ -637,6 +721,11 @@ TESTS += rmd_test
637check_PROGRAMS += rmd_test 721check_PROGRAMS += rmd_test
638rmd_test_SOURCES = rmd_test.c 722rmd_test_SOURCES = rmd_test.c
639 723
724# rsa_method_test
725TESTS += rsa_method_test
726check_PROGRAMS += rsa_method_test
727rsa_method_test_SOURCES = rsa_method_test.c
728
640# rsa_padding_test 729# rsa_padding_test
641TESTS += rsa_padding_test 730TESTS += rsa_padding_test
642check_PROGRAMS += rsa_padding_test 731check_PROGRAMS += rsa_padding_test
@@ -795,11 +884,6 @@ TESTS += verifytest
795check_PROGRAMS += verifytest 884check_PROGRAMS += verifytest
796verifytest_SOURCES = verifytest.c 885verifytest_SOURCES = verifytest.c
797 886
798# whirlpool
799TESTS += whirlpool_test
800check_PROGRAMS += whirlpool_test
801whirlpool_test_SOURCES = whirlpool_test.c
802
803# x25519test 887# x25519test
804TESTS += x25519test 888TESTS += x25519test
805check_PROGRAMS += x25519test 889check_PROGRAMS += x25519test
@@ -830,6 +914,11 @@ TESTS += x509_info
830check_PROGRAMS += x509_info 914check_PROGRAMS += x509_info
831x509_info_SOURCES = x509_info.c 915x509_info_SOURCES = x509_info.c
832 916
917# x509_name_test
918TESTS += x509_name_test
919check_PROGRAMS += x509_name_test
920x509_name_test_SOURCES = x509_name_test.c
921
833# x509name 922# x509name
834TESTS += x509name 923TESTS += x509name
835check_PROGRAMS += x509name 924check_PROGRAMS += x509name
diff --git a/tests/mlkem_tests.sh b/tests/mlkem_tests.sh
new file mode 100755
index 0000000..2a9856e
--- /dev/null
+++ b/tests/mlkem_tests.sh
@@ -0,0 +1,24 @@
1#!/bin/sh
2set -e
3
4TEST=./mlkem_tests
5if [ -e ./mlkem_tests.exe ]; then
6 TEST=./mlkem_tests.exe
7elif [ -e ./mlkem_tests.js ]; then
8 TEST="node ./mlkem_tests.js"
9fi
10
11if [ -z $srcdir ]; then
12 srcdir=.
13fi
14
15$TEST mlkem768_decap_tests $srcdir/mlkem768_decap_tests.txt
16$TEST mlkem768_encap_tests $srcdir/mlkem768_encap_tests.txt
17$TEST mlkem768_keygen_tests $srcdir/mlkem768_keygen_tests.txt
18$TEST mlkem768_nist_decap_tests $srcdir/mlkem768_nist_decap_tests.txt
19$TEST mlkem768_nist_keygen_tests $srcdir/mlkem768_nist_keygen_tests.txt
20$TEST mlkem1024_decap_tests $srcdir/mlkem1024_decap_tests.txt
21$TEST mlkem1024_encap_tests $srcdir/mlkem1024_encap_tests.txt
22$TEST mlkem1024_keygen_tests $srcdir/mlkem1024_keygen_tests.txt
23$TEST mlkem1024_nist_decap_tests $srcdir/mlkem1024_nist_decap_tests.txt
24$TEST mlkem1024_nist_keygen_tests $srcdir/mlkem1024_nist_keygen_tests.txt
diff --git a/tests/renegotiation_test.bat b/tests/renegotiation_test.bat
new file mode 100644
index 0000000..0086046
--- /dev/null
+++ b/tests/renegotiation_test.bat
@@ -0,0 +1,14 @@
1@echo off
2setlocal enabledelayedexpansion
3REM renegotiation_test.bat
4
5set renegotiation_test_bin=%1
6set renegotiation_test_bin=%renegotiation_test_bin:/=\%
7if not exist %renegotiation_test_bin% exit /b 1
8
9%renegotiation_test_bin% %srcdir%\server1-rsa.pem %srcdir%\server1-rsa-chain.pem %srcdir%\ca-root-rsa.pem
10if !errorlevel! neq 0 (
11 exit /b 1
12)
13
14endlocal
diff --git a/tests/renegotiation_test.sh b/tests/renegotiation_test.sh
new file mode 100755
index 0000000..bbf27c8
--- /dev/null
+++ b/tests/renegotiation_test.sh
@@ -0,0 +1,15 @@
1#!/bin/sh
2set -e
3
4renegotiation_test_bin=./renegotiation_test
5if [ -e ./renegotiation_test.exe ]; then
6 renegotiation_test_bin=./renegotiation_test.exe
7elif [ -e ./renegotiation_test.js ]; then
8 renegotiation_test_bin="node ./renegotiation_test.js"
9fi
10
11if [ -z $srcdir ]; then
12 srcdir=.
13fi
14
15$renegotiation_test_bin $srcdir/server1-rsa.pem $srcdir/server1-rsa-chain.pem $srcdir/ca-root-rsa.pem
diff --git a/tls/CMakeLists.txt b/tls/CMakeLists.txt
index 919b1fa..c81bbb0 100644
--- a/tls/CMakeLists.txt
+++ b/tls/CMakeLists.txt
@@ -58,16 +58,16 @@ endif()
58 58
59export_symbol(tls ${CMAKE_CURRENT_BINARY_DIR}/tls.sym) 59export_symbol(tls ${CMAKE_CURRENT_BINARY_DIR}/tls.sym)
60target_link_libraries(tls ${OPENSSL_LIBS}) 60target_link_libraries(tls ${OPENSSL_LIBS})
61if (WIN32)
62 set(TLS_POSTFIX -${TLS_MAJOR_VERSION} PARENT_SCOPE)
63endif()
64set_target_properties(tls PROPERTIES 61set_target_properties(tls PROPERTIES
65 OUTPUT_NAME tls${TLS_POSTFIX} 62 OUTPUT_NAME tls
66 ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX} 63 ARCHIVE_OUTPUT_NAME tls
67 EXPORT_NAME TLS 64 EXPORT_NAME TLS
68 VERSION ${TLS_VERSION} 65 VERSION ${TLS_VERSION}
69 SOVERSION ${TLS_MAJOR_VERSION} 66 SOVERSION ${TLS_MAJOR_VERSION}
70) 67)
68if(NOT CMAKE_VERSION VERSION_LESS 3.27.0)
69 set_target_properties(tls PROPERTIES DLL_NAME_WITH_SOVERSION TRUE)
70endif()
71 71
72target_include_directories( 72target_include_directories(
73 tls 73 tls
diff --git a/update.sh b/update.sh
index 514da89..9636ee7 100755
--- a/update.sh
+++ b/update.sh
@@ -132,10 +132,10 @@ copy_hdrs $libcrypto_src "stack/stack.h lhash/lhash.h stack/safestack.h
132 hkdf/hkdf.h hmac/hmac.h rand/rand.h md5/md5.h 132 hkdf/hkdf.h hmac/hmac.h rand/rand.h md5/md5.h
133 x509/x509v3.h conf/conf.h ocsp/ocsp.h 133 x509/x509v3.h conf/conf.h ocsp/ocsp.h
134 aes/aes.h modes/modes.h asn1/asn1t.h bf/blowfish.h 134 aes/aes.h modes/modes.h asn1/asn1t.h bf/blowfish.h
135 bio/bio.h cast/cast.h cmac/cmac.h cms/cms.h conf/conf_api.h des/des.h dh/dh.h 135 bio/bio.h cast/cast.h cmac/cmac.h cms/cms.h des/des.h dh/dh.h
136 dsa/dsa.h engine/engine.h ui/ui.h pkcs12/pkcs12.h ts/ts.h 136 dsa/dsa.h engine/engine.h ui/ui.h pkcs12/pkcs12.h ts/ts.h
137 md4/md4.h ripemd/ripemd.h whrlpool/whrlpool.h idea/idea.h 137 md4/md4.h ripemd/ripemd.h idea/idea.h
138 rc2/rc2.h rc4/rc4.h ui/ui_compat.h txt_db/txt_db.h 138 rc2/rc2.h rc4/rc4.h txt_db/txt_db.h
139 sm3/sm3.h sm4/sm4.h chacha/chacha.h evp/evp.h poly1305/poly1305.h 139 sm3/sm3.h sm4/sm4.h chacha/chacha.h evp/evp.h poly1305/poly1305.h
140 camellia/camellia.h curve25519/curve25519.h 140 camellia/camellia.h curve25519/curve25519.h
141 ct/ct.h kdf/kdf.h" 141 ct/ct.h kdf/kdf.h"
@@ -170,6 +170,12 @@ for i in $libcrypto_src/arch/*; do
170 arch=`basename $i` 170 arch=`basename $i`
171 mkdir -p include/arch/$arch 171 mkdir -p include/arch/$arch
172 $CP $libcrypto_src/arch/$arch/opensslconf.h include/arch/$arch/ 172 $CP $libcrypto_src/arch/$arch/opensslconf.h include/arch/$arch/
173 mkdir -p crypto/arch/$arch
174 $CP $libcrypto_src/arch/$arch/crypto_arch.h crypto/arch/$arch/
175 crypto_cpu_caps=$libcrypto_src/arch/$arch/crypto_cpu_caps.c
176 if [ -f "$crypto_cpu_caps" ]; then
177 $CP "$crypto_cpu_caps" crypto/arch/$arch/
178 fi
173done 179done
174 180
175for i in $libcrypto_src/bn/arch/*; do 181for i in $libcrypto_src/bn/arch/*; do
@@ -274,13 +280,8 @@ for abi in elf macosx masm mingw64; do
274 gen_asm_stdout $abi bn/asm/modexp512-x86_64.pl bn/modexp512-$abi-x86_64.S 280 gen_asm_stdout $abi bn/asm/modexp512-x86_64.pl bn/modexp512-$abi-x86_64.S
275 gen_asm_stdout $abi bn/asm/x86_64-mont.pl bn/mont-$abi-x86_64.S 281 gen_asm_stdout $abi bn/asm/x86_64-mont.pl bn/mont-$abi-x86_64.S
276 gen_asm_stdout $abi bn/asm/x86_64-mont5.pl bn/mont5-$abi-x86_64.S 282 gen_asm_stdout $abi bn/asm/x86_64-mont5.pl bn/mont5-$abi-x86_64.S
277 gen_asm_stdout $abi md5/asm/md5-x86_64.pl md5/md5-$abi-x86_64.S
278 gen_asm_stdout $abi modes/asm/ghash-x86_64.pl modes/ghash-$abi-x86_64.S 283 gen_asm_stdout $abi modes/asm/ghash-x86_64.pl modes/ghash-$abi-x86_64.S
279 gen_asm_stdout $abi rc4/asm/rc4-x86_64.pl rc4/rc4-$abi-x86_64.S 284 gen_asm_stdout $abi rc4/asm/rc4-x86_64.pl rc4/rc4-$abi-x86_64.S
280 gen_asm_stdout $abi sha/asm/sha1-x86_64.pl sha/sha1-$abi-x86_64.S
281 gen_asm $abi sha/asm/sha512-x86_64.pl sha/sha256-$abi-x86_64.S
282 gen_asm $abi sha/asm/sha512-x86_64.pl sha/sha512-$abi-x86_64.S
283 gen_asm $abi x86_64cpuid.pl cpuid-$abi-x86_64.S
284done 285done
285 286
286# copy libtls source 287# copy libtls source
@@ -333,7 +334,7 @@ done
333echo "copying libssl source" 334echo "copying libssl source"
334rm -f ssl/*.c ssl/*.h 335rm -f ssl/*.c ssl/*.h
335touch ssl/empty.c 336touch ssl/empty.c
336for i in `awk '/SOURCES|HEADERS/ { print $3 }' ssl/Makefile.am` ; do 337for i in `awk '/SOURCES|HEADERS/ { if ($3 !~ /.*crypto_arch.*/) print $3 }' ssl/Makefile.am` ; do
337 dir=`dirname $i` 338 dir=`dirname $i`
338 mkdir -p ssl/$dir 339 mkdir -p ssl/$dir
339 $CP $libssl_src/$i ssl/$i 340 $CP $libssl_src/$i ssl/$i
@@ -344,7 +345,7 @@ $GREP '^[A-Za-z0-9_]' < $libssl_src/Symbols.list > ssl/ssl.sym
344# copy libcrypto tests 345# copy libcrypto tests
345echo "copying tests" 346echo "copying tests"
346touch tests/empty.c 347touch tests/empty.c
347for i in `find $libcrypto_regress -name '*.c'`; do 348for i in `find $libcrypto_regress -name '*.[ch]'`; do
348 $CP "$i" tests 349 $CP "$i" tests
349done 350done
350$CP $libcrypto_regress/evp/evptests.txt tests 351$CP $libcrypto_regress/evp/evptests.txt tests
@@ -352,6 +353,7 @@ $CP $libcrypto_regress/aead/*.txt tests
352$CP $libcrypto_regress/ct/ctlog.conf tests 353$CP $libcrypto_regress/ct/ctlog.conf tests
353$CP $libcrypto_regress/ct/*.crt tests 354$CP $libcrypto_regress/ct/*.crt tests
354$CP $libcrypto_regress/x509/policy/*.pem tests 355$CP $libcrypto_regress/x509/policy/*.pem tests
356$CP $libcrypto_regress/mlkem/*.txt tests
355 357
356# generate libcrypto freenull.c 358# generate libcrypto freenull.c
357awk -f $libcrypto_regress/free/freenull.awk \ 359awk -f $libcrypto_regress/free/freenull.awk \